1、数组
数组是编程语言中最常见的一种数据结构,可用于存储多个数据,每个数组元素存放一个数据,通常可数组元素的索引来进行对数组元素赋值和取值。
要点:
- 数组索引可理解为,当前元素到第一个元素的距离,所以索引是从零开始的(第一个元素到第一个元素的距离是0)。
- 数组是一种引用类型的数据结构,一旦初始化完成,在内存中所占的空间就定下来了,因此数组长度不可更改。
- 一个数组里只能存放一种数据类型的数据,但是,由于类之间可以支持多继承关系,这样可能产生一个数组存放多种数据类型的假象(水果数组里可能有苹果、香蕉桃子等等)。
2、定义数组(声明)
有两种方式声明数组,建议使用第一种。
定义数组时不能指定数组长度。
type [ ] 数组名 ; //常用
type 数组名 [ ];
3、数组的创建
数组的创建可理解为开辟内存空间存放数组的值
数据类型 [] 数组名; //数组的声明 数组名 = new 数据类型 [数组长度]; //数组的创建 //栗子 int [] a ; a = new int [5]; //5是长度也叫大小 ,申请可存放5个int(4字节)类型大小的内存空间
4、数组的初始化
(1)静态初始化:初始化时由程序员显式指定每个元素的初始值,由系统决定数组长度。
int[] id = new int[]{1000,1001,1002,1003};
简化版:int[] id = {1000,1001,1002,1003};
(2)动态初始化:初始化时程序员只设定数组的长度,由系统分配元素的初始值。
int[] phone = new int[5];
为动态初始化数组元素赋值:phone[0] = 1590000 ; phone[1] = 1580000;
- 整数类型(byte、short、int、long)初始值为0。
- 浮点类型(folat、double)初始值为0.0。
- 字符类型(char)初始值为'\u0000'。
- 布尔类型(boolean)初始值为false。
- 引用类型(类、接口、数组、字符串等)初始值为null。
5、几种常见的数组写法
//1
int [] a ;
a = new int [5];
a[0] = 1; //......动态初始化
//2
int [] a = new int [5];
a[0] = 1; //......动态初始化
//3
int []d =new int [] {1,2,3,4,5}; //静态初始化
//4
int []e = {1,2,3,4,5}; //静态初始化
6、数组的遍历和For-Each 循环
- 数组的遍历 : 通过循环语句输出每个数组元素的值。
- For-Each 循环 : For-Each 循环可以更简洁的遍历数组和循环,但是无法取出具体第几个元素,只能全取出来(for可以)。
- 注:for循环和For-Each中的i不是相同意思,for中i是下标,For-Each是暂存数组元素的变量。
for(type 暂存的形参变量 : 数组或集合名){
//自动迭代访问每个元素
}
// 增强for循环,i是暂存变量(值),a是容器
for (int i : a) {
System.out.println(i);
}
// i是下标,a.length是数组的长度
for (int i = 0; i < a.length; i++) {
System.out.println(a[i]);
}
System.out.println(a); //内存地址
System.out.println(a[1]); //1是下标,默认是0(int类型的),占个位,不让垃圾回收器回收
栗子:
public class TestArray {
public static void main(String[] args) {
//静态初始化
int[] id = new int[]{1000,1001,1002,1003};
//动态初始化
int[] phone = new int[5];
System.out.println("使用循环进行赋值,通过遍历取值");
for(int i=0;i<5;i++) {
phone[i]=12580+i;
System.out.println(phone[i]);
}
System.out.println("foreach循环");
for(int temp : id) {
System.out.println(temp);
}
}
}
结果图:
image.png内存图:
image.png多维数组:
多维数组可以看成是数组的数组,比如二维数组就是一个特殊的一维数组,其每一个元素都是一个一维数组,下面就类似一个9*2的二维数组
image.pngint [][] a=new int[9][2]
。(没地方了后面的七个就没画完)
网友评论