一:数组的定义
数组指的是一种容器,可以用来存储同种数据的多个值。
数组在存储数据时,会进行隐式转换。
eg:int类型的数组可以存储byte,short,int
double类型的数组可以存储byte,short,int,long,float,double
二:数组的静态初始化
初始化就是在内存中,为数组开辟空间,并将数据存入容器的过程。
完整格式:int [] array = new int [] { 11 , 22 , 33}
简化格式:int [] array = {11 , 22 ,33}
ps:数组在创建后,长度就固定了,只能修改数组内元素的值。
三:数组元素访问
格式:数组名 [索引]
eg: arr [0]
四:数组遍历
数组遍历就是将数组中的元素取出来,遍历就是取数据的过程
ps:Java中数组的一个长度属性length,调用方式 :数组名.length
ps:数组循环的简写方式,自动创建length循环
arr.fori -> for ( i=0 , i<arr.length , i++ ) {
}
五:数组的动态初始化
动态初始化:初始化时只指定数组长度,由系统为数组分配初始值。
格式:数据类型 [] 数据名= new 数据类型 [数组长度];
eg:int [ ] arr= new int [10] //初始化长度为10的数组
数组的初始化规律:整数类型:默认初始化为0
小数类型:默认初始化为0.0
字符类型:默认初始化为/u0000
布尔类型:默认初始化为false
字符串类型:默认初始化为null
动态初始化:手动指定数组长度,系统分配数组内容
静态初始化:手动指定数组元素,系统分配数组长度
六:数组常见问题
当访问了数组中不存在的索引,会出现索引越界异常
七:Java内存分配
每个软件在工作时都会占用一块内存空间,而Java工作在JVM虚拟机中的内存空间中
1 栈:方法运行时使用的内存,如main方法运行,就在方法栈中执行
2 堆:用来存储对象或数组,用new来创建,都存在堆内存中
3 方法区:存储可执行的class文件
4 本地方法栈:JVM在使用操作系统功能时使用,与开发无关
5 寄存器:给cpu使用的,与开发无关
eg1:代码的内存都分配在栈内存中
eg2:main方法进栈之后,开始执行int [] arr初始化数组的操作,这里初始化的arr记录了int类型数组的地址值,然后执行等号右边的new int []操作,在堆空间中开辟了一个int数组的小空间,将小空间里的int []的地址值赋给了arr。后面的打印arr [0]的操作也是如此,先通过arr地址索引找到堆内存中的int数组空间,在通过0索引到地址所存储的数据。
eg3:两个数组指向同一个内存空间。这里创建arr1使用了int,因此会开辟一个新的堆内存空间,但是下面的int [] arr2 = arr1没有使用new开辟新的内存空间,而是直接指向了arr1的内存空间,因此arr2存储的就是arr1内的地址。当使用arr2改变堆空间中的值,再使用arr1访问内存空间时,输出的也是修改后的结果。
八:生成随机数
通过Random生成随机数。
格式:Random r = new Random ();
int number = r.nextInt ( bound:100 ) + 1 ;
ps1:不换行的输出格式
System.out.print (); //这里把println换成了print就实现了不换行输出
ps2:IDEA中的批量注释
多行代码分行注释:ctrl + / (再次使用ctrl + /即可取消)
多行代码同块注释:ctrl + shift + / (再次使用ctrl+shift+/即可取消)