0
点赞
收藏
分享

微信扫一扫

Java中一维数组的详细介绍

目录


一、一维数组介绍

 ​ ​  ​  ​  ​  ​ 什么是数组?

​  ​  ​  ​  ​  ​  ​  ​  ​ 数组指的是一种容器,可以用来存储同种数据类型的多个值

​  ​  ​  ​  ​  ​  ​  ​  ​  ​  ​  ​ 总结:数组容器在存储数据的时候需要结合数据类型考虑。

 ​  ​  ​  ​  ​  ​  ​  ​  ​  ​  ​  ​  ​  ​  ​ 例如:int类型的数组容器(boolean byte short double)

​  ​  ​  ​  ​  ​  ​  ​  ​  ​  ​  ​ 建议:容器的类型,和存槠的数据类型保持一致


二、数组元素

1.数组元素访问

 ​ ​ ​ ​ ​ ​ ​ ​ ​ ​数组元素访问:

  * 格式:数组名 [ 索引 ];      //arr [8]

  * 索引:索引是数组容器中空间的编号,编号从0幵始,逐个+1增长  

注意:当访问了数组中不存在的索引,就会引发索引越界异常


2.数组元素修改

 ​ ​ ​  ​ ​数组元素修改:

  * 格式:数组名 [ 索引 ]=修改元素;        // arr [0]=5

3.数组元素遍历

 ​ ​ ​ ​ ​ 数组遍历:

  *格式:数组名.length        //获取元素个数,元素长度
    
  *范例:arr.length          //arr.length-1是索引长度

注意:
 ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ 1、遍历指的是取出数据的过程,不要局限的理解为, 遍历就是打印!

 ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ 2、i:索引

 ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ 3、arr[i] :元素


三、数组定义格式

 ​ ​ ​ ​ ​ 数组定义格式:

  * 格式1:数组类型 [] 数组名
  * 范例:  int[] array

  * 格式2: 数据类型  数组名 []
  * 范例:  int array []

 ​ ​ ​ ​ 扩展:打印数组名会出现一个地址值,该值的含义有如下

打印数组名各值的意思:

            [I@10f87f48  :  数组的内存地址

              @: 分隔符
              [: 当前内存空间是一个数组类型
              I: 当前空间中存储的数据是int类型
              10f87f48  : 十六进制地址值

在这里插入图片描述


       如果是打印字符数组的话,不会看到地址值,而是具体的内容
       
   原因:println()源码中会自动对字符数组进行遍历操作

在这里插入图片描述


四、数组静态初始化

1. 数组静态初始化含义

 ​ ​ ​ ​ ​ ​ ​ ​ ​ 静态初始化含义:

              指定元素,长度自动分配

2. 数组静态初始化格式

 ​ ​ ​ ​ ​ ​ ​ ​ ​ 静态初始化格式:

   *格式1:数据类型[] 数组名 = new 数据类型[] {元素1,元素2,..};
   *范例: int [] arr=new int[] {11,22,33};    //[]这里的里面不能加数字


   *格式2:数据类型[] 数组名 = {元素1,元素2...};   //推荐使用
   *范例:  int [] arr={11,22,33};
        

 注意:   
        double [] arr={12,20,5.2};    
      //这样子是可以的,单个整数或者带小数也一样可以

五、数组动态初始化

1. 数组动态初始化含义

 ​ ​ ​ ​ ​ ​ ​ ​ ​ 动态初始化含义:

        初始化时只指定数组长度,由系统为数组分配初始值

2. 数组动态初始化格式

 ​ ​ ​ ​ ​ ​ ​ ​ ​ 动态初始化格式:

  
    * 格式: 数据类型 [] 数组名 =new 数据类型[数组长度];
                           
    * 范例:int [] arr=new int [3];  //【3】其实就是数组的元素个数



 注意:
 
    1.允许数组间进行赋值,赋值的是自己所记录的地址值

    2.当两个数组通过地址指向同一块内存空间的时候,只要有一个对空间的数据发生了修改,那么另外一个去查找的时候,找到的就是改变之后的那份数据

3. 数组动态初始化的默认值

在这里插入图片描述
          例子:
在这里插入图片描述
在这里插入图片描述


六、数组动态和静态初始化两种对比

1.静态初始化

 ​ ​ ​ ​ ​ ​ ​ ​ ​ 静态初始化:手动"指定数组元素",系统会根据元素个数,计算出数组的长度

   使用场景:需求中已经明确了要操作的具体数据,直接静态初始化即可

       例:将一班的学生的成绩存入数组中:11 , 22,33
                                               
            int [] arr={11,22,33};

1.动态初始化

 ​ ​ ​ ​ ​ ​ ​ ​ ​ 动态初始化:手动"指定数组长度",由系统给出默认初始化值

  使用场景:只明确元素个数,不明确具体数值,推荐使用动态初始化
                       
     例:使用数组容器来存储键盘录入的5个整数
                 
               int [] arr=new int[5];
               arr[0]=1;
               arr[1]=2;
               arr[2]=3;
               arr[3]=4;
               arr[4]=5;

七、空指针异常

 ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ 空指针异常:当引用数据类型变量被赋值为null之后,地址的指向被切断,还继续访问堆内存数据,就会引发空指针异常

  如:   int[] arr1 = null;
	    System.out.println(arr1[0]);

在这里插入图片描述


八、数组索引越界异常

           当访问到了不存在的索引时,就会出现索引越界异常

在这里插入图片描述


九、数组内存图

1.数组内存分配

方法区:
          1.类的字节码文件加载时进入方法区
          
          2.jvm自动调用main方法(方法),进入栈内存执行       
             
                                //是jvm调用方法,不是栈调用的
          
栈内存: 方法运行进入的内存

堆内存:new出来的内容都会进入堆内存,开辟空间,产生地址值

在这里插入图片描述


2.两个数组指向相同内存的图

在这里插入图片描述


总结

          以上就是今天要讲的内容,本文介绍了一维数组的使用,以及相关的访问遍历,还有内存图相关的介绍。


举报

相关推荐

0 条评论