为了存储同种数据类型的多个值,java中使用了数组这一概念.
------数组的含义:
在java中能存储同一种数据类型(可以是基本数据类型,也可以是引用数据类型)的多个元素的集合,也可以看成是一个容器
------数组怎么定义?
数据类型[ ] 数组名 = new 数据类型[数组长度];
比如: int[ ] arr = new int[5];
int代表数据类型
[ ]代表的是数组,有几个[ ]就代表这个数组是几维数组
arr表示数组名,是一个合法的标识符
new表示创建一个新的实体或者对象(面向对象里面经常会用到)
后面的数字5代表数组的长度是5
------数组的初始化(为数组开辟连续的内存空间,并且为每个数组元素赋值)
数组的初始化分为 动态初始化 和 静态初始化
动态初始化就是定义数组时,只给出它的长度,由系统来指定它的初始值.
数据类型[ ] 数组名 = new 数据类型[数组长度];
这里的初始值,浮点型都是0.0,布尔型是false,整型是0,字符型是Unicode编码"\u0000",
注意:char在内存中占用两个字节,是十六个进制位,每个十六进制位代表四个二进制位,所以说"\u0000"里面的每个0代表十六进制的0,每个0代表4个二进制的0
静态初始化就是给出数组的初始化值,由系统决定长度
数据类型[ ] 数组名 = new 数据类型[ ]{元素1,元素2.....};
可以简写为数据类型[ ] 数组名 = {元素1,元素2.....};
------为了讲后面的数组内存图,先大概讲一下java里面的内存分布
包括堆区,栈区,方法区,本地方法区以及寄存器等
堆区:存储new出来的对象或者数组
栈区:就是存储局部变量的地方(局部变量就是定义在方法声明以及方法里面的变量)
方法区:就相当于代码区,下面也包含静态区以及常量区
本地方法区:存储java里面native修饰的方法,这个和系统有关
寄存器:给CPU使用
------画一个数组的内存图(内存图是为了更好的理解代码,理解程序的流程)
数组:int[ ] array = new int[5]内存图如下
------一维数组的遍历(依次输出数组中的每一个元素)
public static void main(String args[]) {
//定义一个数组,这里用静态初始化
int arr[] = {11,22,33,44,55,66};
//用for循环遍历
for(int i = 0;i<arr.length;i++) { //length是数组的属性,代表数组的长度
System.out.println(arr[i]);
}
}
------二维数组(在数组里面定义数组)
比如:int[ ][ ] array = new int[3][3];
这里的3表示这个二维数组里面有三个一维数组,2表示每个一维数组里面有三个元素
这个内存图是
------二维数组的遍历
二维数组的遍历,有两层循环,外循环控制二维数组的长度,其实就是一维数组的个数,内循环控制一维数组的长度
public static void main(String args[]) {
//定义一个数组,这里用静态初始化
int arr[][] = {{1,2},{1,3},{6,5,4}};
//用双层for循环遍历
for(int i = 0;i<arr.length;i++) {
for(int i = 0;j<arr[i].length;j++) {
System.out.println(arr[i][j]);
}
}
}
}