数组:
数组可以看成是多个相同类型数据的组合实现对这些数据的统一和管理数组里存储的每一个数据叫元素
元素的数据类型在数组被声明创建时确定
元素的数据类型必须统一,一旦创建不能更改,其它数据类型的元素不可以装进数组,数组中元素的个数,称为数组长度。(length)
java中声明数组时,不能指定长度
数组的声明
数组类型[]数组名;
数组的创建(初始化)
new数组类型[数组的长度];(索引从0开始最大编号是数组长度-1)
int[]arr;定义一个int型的数组数组名是arr
int arr[];定义一个int型的变量,变量名是arr数组
int[] wher = {1,3,10};
int[] wher = new int []{5,1,0,4};
for(int i= 1 ;i
整形默认为0、String默认为null、char默认为‘0’
浮点默认为0.0、Boolean默认为false
遍历数组:依次访问数组中的元素
增强for循环
for(int x:wher){system.out.println(x)}
for(数组类型 临时变量:要遍历的数组){}
初始化:
就是为数组开辟内存空间,并为数组中的每个元素赋予初始值。
静态初始化:给出初始值,由系统决定长度
动态初始化:只给出长度,有系统给出初始值
数据类型[] 数组名 = new 数据类型[数组长度];
java中的内存分配
栈(存储的是局部变量)
堆(存储的是new出来的东西)实体(对象)
方法区(面向对象进阶讲)
本地方法区(和系统相关)
寄存器(给CPU使用)
堆:
A:每一个对象都有地址值
B:每一个对象的数据都有默认值
整形默认为0、String默认为null、char默认为‘0’
浮点默认为0.0、Boolean默认为false
栈:
存储的是局部变量,局部变量就是定义在方法中的变量使用完毕,立即回收
Array IndexOutOfBoundsException:数据索引越界异常
产生原因:我们访问了不存在的索引
NullPointerException:空指针异常
产生原因:数组已经不在指向对内存的数据了,还使用数组名去访问
数组获取最值得思路:
A:先拿数组中一个元素作为参照物
B:遍历数组让后面所有的元素依次和参照物进行比较
C:整个循环遍历比较结束,留下来的就是最值
二维数组:其实就是元素为一维数组的数组
定义格式:
A:数组类型[][] 数组名;(推荐)
B:数据类型 数组名[][];
C:数据类型[] 数组名[];
初始化:
A:动态初始化
数据类型[][] 数组名 = new 数据类型[M][N];
M表示的是二维数组中一维数组的个数
N表示的是一维数组中的元素个数
B:静态初始化
数据类型[][] 数组名 = new 数据类型[][]{{元素},{},{}……}
简化:
数据类型[][] 数组名 = {{元素},{元素},……};
二维数组名配合索引可以获取到每一个一维数组,每一个一维数组配合索引名可以获取到数组中的元素;
system.out.println();换行输出
systrm.out.print();不换行输出
int[][] arr = new int [3][4];
for(int p = 0;p
数组的复制
system.arraycopy(src,srcpos,dest,destpos,length);
system.arraycopy(原数组,原起始位,目标数组,目标起始位,长度);