您的位置 首页 java

你真的明白怎么使用Java中一维数组嘛?

一、一维数组介绍


  • 什么是数组?
 数组指的是一种容器,可以用来存储同种数据类型的多个值
总结:数组容器在存储数据的时候需要结合数据类型考虑
         例如:int类型的数组容器(boolean  byte   short  double)
建议:容器的类型,和存槠的数据类型保持一致  


二、数组元素


  • 数组元素访问
 * 格式:数组名 [ 索引 ]; //arr [8]
*  索引 :索引是数组容器中空间的编号,编号从0幵始,逐个+1增长
注意:当访问了数组中不存在的索引,就会引发索引越界异常  


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


  • 数组元素遍历
 * 格式:数组名.length //获取元素个数,元素长度

* 范例:arr.length //arr.length-1是索引长度


注意:

1、遍历指的是取出数据的过程,不要局限的理解为, 遍历就是打印!**
2、i:索引
3、arr[i] :元素  


三、数组定义格式

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


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

 打印数组名各值的意思:
[I@10f87f48 : 数组的内存地址
@: 分隔符
[: 当前内存空间是一个数组类型
I: 当前空间中存储的数据是int类型
10f87f48 : 十六进制地址值  
你真的明白怎么使用Java中一维数组嘛?


 如果是打印 字符数组 的话,不会看到地址值,而是具体的内容

原因:println()源码中会自动对字符数组进行遍历操作  
你真的明白怎么使用Java中一维数组嘛?


四、数组静态初始化


  • 数组静态初始化含义
 指定元素,长度自动分配  


  • 数组静态初始化格式

 * 格式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};
           //这样子是可以的,单个整数或者带小数也一样可以  


五、数组动态初始化


  • 数组动态初始化含义
 初始化时只指定数组长度,由系统为数组分配初始值  


  • 数组动态初始化格式
 * 格式: 数据类型 [] 数组名 =new 数据类型[数组长度];

* 范例:int [] arr=new int [3]; //【3】其实就是数组的元素个数

注意:

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

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


  • 数组动态初始化的默认值
你真的明白怎么使用Java中一维数组嘛?


例子

你真的明白怎么使用Java中一维数组嘛?

你真的明白怎么使用Java中一维数组嘛?


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


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

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

例:将一班的学生的成绩存入数组中:11 , 22,33

              int [] arr={11,22,33};  


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

    使用场景:只明确元素个数,不明确具体数值,推荐使用动态初始化

      例:使用数组容器来存储键盘录入的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]);  

你真的明白怎么使用Java中一维数组嘛?


八、数组索引越界异常

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

你真的明白怎么使用Java中一维数组嘛?


九、数组内存图


  • 数组内存分配
 方法区:
                 1.类的 字节码 文件加载时进入方法区

                 2. jvm 自动调用main方法(方法),进入栈内存执行

                   //是jvm调用方法,不是栈调用的

栈内存:   方法运行进入的内存

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

你真的明白怎么使用Java中一维数组嘛?


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

你真的明白怎么使用Java中一维数组嘛?


作者:今日头条 KJ丶JK /CSDN-KJ.JK

文章来源:智云一二三科技

文章标题:你真的明白怎么使用Java中一维数组嘛?

文章地址:https://www.zhihuclub.com/183907.shtml

关于作者: 智云科技

热门文章

网站地图