Java 数组的两种初始化方式

 更新时间:2021年02月27日 11:34:45   作者:心悦君兮君不知-睿  
这篇文章主要介绍了Java 数组的两种初始化方式,帮助大家更好的理解和学习使用Java,感兴趣的朋友可以了解下

一、数组

1.数组中存储元素的类型是统一的,每一个元素在内存中所占用的空间大小是相同的,知道数组的首元素的内存地址,要查找的元素只要知道下标,就可以快速的计算出偏移量,通过首元素内存地址加上偏移量,就可以快速计算出要查找元素的内存地址。通过内存地址快速定位该元素,所以数组查找元素的效率较高。

2.随机的对数组进行增删元素,当增加元素的时候,为了保证数组中元素在空间存储上是有序的,所以被添加元素位置后面的所有元素都要向后移动,删除元素也是,后面所有的元素要向前移动,所以数组的增删元素​效率很低。

3.​初始化一维数组,有两种方式:

(1)​静态初始化;

(2)动态初始化​。

package com.bjpowernode.java_learning;

​

public class D66_1_ {

 public static void main(String[] args) {

 //静态初始化一个int类型的一维数组

 int[] a1 = {10,22,21};

 //取得第一个元素

 System.out.println("第一个元素:" + a1[0]);

 System.out.println("最后一个元素:" + a1[2]);

 System.out.println("最后一个元素:" + a1[a1.length-1]);

 //去的个数

 System.out.println("数组中的的元素个数为:"+a1.length);

 //遍历一维数组

 for(int i = 0;i<a1.length;i++) {

  System.out.println(a1[i]);

 }

 //将第二个元素改为100

 a1[1] = 100;

 System.out.println("===================");

 for(int i= 0;i<a1.length;i++) {

  System.out.println(a1[i]);

 }

 }

​

}

上面是使用静态初始化一维数组,下面演示动态初始化一维数组

int[] a2 = new int[4];

 //引用类型的数组

 Object[] objs = new Object[3];

 for(int index=0;index<objs.length;index++) {

  Object o = objs[index];

  //o.toString();//注意空指针异常

  System.out.println(o);//null null null这里就没有出现空指针异常,这是因为pirintln

  //这个函数的源码里面对这种空指针做了筛选,可以见源码

下面看一下println的源码是如何处理这种空指针异常的

二、什么时候使用动态初始化,什么时候使用静态初始化

1.无论是动态初始化还是静态初始化,最终的内存分布都是一样的。

2.如果在创建数组的时候,知道数组中应该存储什么数据,这个时候当然采用静态初始​化方式。如果在创建数组的时候,无法预测到数组中存储什么数据,只是先开辟空间,​则使用动态初始化方式。

以下两种初始化方式都是可以的

int a3[] = {12,12,45};

int [] a3 = {12,12,45};

三、源码:

D66_ArryInitialMethods.java

https://github.com/ruigege66/Java/blob/master/D66_ArryInitialMethods.java

以上就是Java 数组的两种初始化方式的详细内容,更多关于Java 数组初始化的资料请关注脚本之家其它相关文章!

相关文章

  • java生成验证码图片的方法

    java生成验证码图片的方法

    这篇文章主要为大家详细介绍了java生成验证码图片的方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-02-02
  • java应用cpu飙升(超过100%)故障排查步骤

    java应用cpu飙升(超过100%)故障排查步骤

    在Java并发编程计算密集型要进行大量的计算、逻辑判断等操作,消耗CPU资源,比如计算圆周率、对视频进行高清解码等等,下面这篇文章主要给大家介绍了关于java应用cpu飙升(超过100%)故障排查步骤的相关资料,需要的朋友可以参考下
    2023-06-06
  • SpringBoot3整合邮件服务实现邮件发送功能

    SpringBoot3整合邮件服务实现邮件发送功能

    本文介绍了spring boot整合email服务,实现发送验证码,邮件(普通文本邮件、静态资源邮件、附件邮件),文中通过代码示例介绍的非常详细,坚持看完相信对你有帮助,需要的朋友可以参考下
    2024-05-05
  • SpringBoot使用Redis的zset统计在线用户信息

    SpringBoot使用Redis的zset统计在线用户信息

    这篇文章主要介绍了SpringBoot使用Redis的zset统计在线用户信息,帮助大家更好的理解和学习使用SpringBoot框架,感兴趣的朋友可以了解下
    2021-04-04
  • 详解Java如何实现FP-Growth算法

    详解Java如何实现FP-Growth算法

    学校里的实验,要求实现FP-Growth算法.FP-Growth算法比Apriori算法快很多(但是却比不上时间)在网上搜索后发现Java实现的FP-Growth算法很少,且大多数不太能理解):太菜.所以就自己实现了一下.这篇文章重点介绍一下我的Java实现 ,需要的朋友可以参考下
    2021-06-06
  • spring boot项目如何采用war在tomcat容器中运行

    spring boot项目如何采用war在tomcat容器中运行

    这篇文章主要介绍了spring boot项目如何采用war在tomcat容器中运行呢,主要讲述将SpringBoot打成war包并放入tomcat中运行的方法分享,需要的朋友可以参考下
    2022-11-11
  • MyBatis中的JdbcType映射使用介绍

    MyBatis中的JdbcType映射使用介绍

    这篇文章主要介绍了MyBatis中的JdbcType映射使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12
  • JUnit5中的参数化测试实现

    JUnit5中的参数化测试实现

    参数化测试使得我们可以使用不同的参数运行同一个测试方法,从而减少我们编写测试用例的工作量,本文主要介绍了JUnit5中的参数化测试实现,感兴趣的可以了解一下
    2023-05-05
  • 使用JAVA+Maven+TestNG框架实现超详细Appium测试安卓真机教程

    使用JAVA+Maven+TestNG框架实现超详细Appium测试安卓真机教程

    这篇文章主要介绍了使用JAVA+Maven+TestNG框架实现超详细Appium测试安卓真机教程,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-01-01
  • Java NIO Selector用法详解【含多人聊天室实例】

    Java NIO Selector用法详解【含多人聊天室实例】

    这篇文章主要介绍了Java NIO Selector用法,结合实例形式分析了Java NIO Selector基本功能、原理与使用方法,并结合了多人聊天室实例加以详细说明,需要的朋友可以参考下
    2019-11-11

最新评论