JAVA——数组

别说谁变了你拦得住时间么 提交于 2020-02-02 04:22:04

数组
数组类型是引用类型。
定义格式:
格式一:
数据类型 [ ] 数组名=new 数据类型 [ 长度 ];
new:创建数组的关键字,通过new开辟内存空间

格式二:
数据类型 [ ] 数组名=new 数据类型[ ]{元素一,元素二,元素三…};
元素确定,可以避免空间的浪费

格式三:
数据类型[ ] 数组名={元素一,元素二,元素三…};

通过数组的索引访问数组的元素
索引:也叫下标、脚标,是数组元素距离数组起始位置的偏移量。数组的索引从0开始。

在这里插入图片描述

  • 在输出中直接写入数组名,输出的是数组的地址。
  • 在一个数组中,没有写入数组元素,则默认为0

数组的长度: 数组名.length
数组的最大索引: 数组的长度-1

数组的初始化
动态初始化:只指定长度,由系统给出默认值
整数型:0
浮点型:0.0
字符型:‘\u0000’(空字符)
布尔型:false
引用类型:null

静态初始化:给出初始化值,由系统决定数组长度。

Java 程序的内存分配
方法区:存储可运行的class文件。包含方法,静态成员,常量等
栈:方法运行时使用的内存,特点是“后进先出”
堆:存储new出来的数组或对象
本地方法栈:JVM在调用操作系统功能时使用,与开发无关。
寄存器:CPU使用,与开发无关

一个数组两个引用
在这里插入图片描述
当定义arr1时,开辟了一块空间。
在定义arr2时,并没有new,而是等于arr1
相当于将arr1的地址给了arr2
此时对arr2操作时,也相当于对arr1进行操作
相反,对arr1进行操作时,也相当于对arr2进行操作
上面一个代码的运行结果如下:
在这里插入图片描述

数组使用中的常见问题:
1、数组索引越界异常
2、空指针异常:
数组引用存储的值为null 而非数组的地址值时
在这里插入图片描述main方法进入方法区中存储,然后进栈。从第一行代码开始执行。
创建arr1并在堆中开辟一块空间。
划分为三块,分别存储1,2,3
当执行arr1=null时
栈中的arr1不在指向堆中的一块空间
而是指向方法区中的一块空间,值为null(空)

引用类型的变量作为参数传递时,传递的是地址值。
基本类型的变量作为参数传递时,传的是值。
在这里插入图片描述

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!