4 、 数组

1、概念
临时储存数据的容器,在java中,数组是最基本也是运算最快的容器。
2、格式
静态初始化(只确定长度,系统分配初始值):
int[] arr = new int[5];
int arr[] = new int[4];
动态初始化(确定初始值,系统决定长度):
int[] arr = new int[]{20,5,100,30,5};
int arr[] = {20,5,100,30,5};
3、默认值

数据类型 默认初始值
byte、short、int、long 0
float、double 0.0
char 空格,‘\u0000’
boolean false
引用数据类型 null

4、访问
直接打印数组名,打印的是数组堆内存中的地址;数组中的每个元素都是有编号的,编号是从0开始的,最大的编号就是数组的长度-1,这个编号叫做索引。 使用数组名.length可以获取数组长度。
int[] arr = {20,5,100,30,5};
那么arr[0]=20
arr[0]=3,那么3会替代20成为数组的第一个元素。

5、注意
数组的长度是固定的;一个数组中只能存储一种类型的数据;空指针异常:变量完全没有值或值为null,数组不指向一个堆内存的地址;数组索引越界异常:当数组中不存在该索引却访问该索引时。

6、java中的内存分配
栈——又叫栈,仅次于寄存器,用于存储局部变量(局部变量是定义在方法中或者语句中的变量,局部变量使用完毕,立即回收)
堆——通用内存池,用于存放所有引用数据类型对象。每个对象均有地址,且有默认初始化值。New出来的东西。(每一个对象都有首地址值,是一个十六进制的地址,使用完毕后,会被垃圾回收器空闲的时候回收)
方法区——又叫静态区,存放所有的class和静态变量,方法区存放的是整个程序中唯一的元素,如class和static变量。
本地方法区 ——和系统相关

7、数组遍历

public class Demo {
	public static void main(String[] args) {
	int[] arr = { 1, 2, 3, 4, 5 }; 
	for (int i = 0; i < arr.length; i++) {
	System.out.println(arr[i]); }
	}
}

8、参数传递
☆基本类型作为参数传递:如果传入的数值为基本数据类型(含String类型),形参的改变对实参不影响。

public class Demo {
	public static void main(String[] args) {
	int a=10;
	change(a);
	System.out.println("a="+a);//10
	}
	public static void change(int a){a=100;}
}

☆引用数据类型作为参数传递:形参的改变对实参有影响(数组是引用数据类型)

public class Demo {
	public static void main(String[] args) {
	int[] arr={10,20};
	change(arr);
	System.out.println("arr[0]"+arr[0]);//100
	System.out.println("arr[1]"+arr[1]);//200
	}
	public static void change(int[] arr){
	arr[0]=100;
	arr[1]=200;
	}
}

9、二维数组
当数组中储存的元素仍为数组时,该数组称为二维数组。
☆格式:
数据类型[][] 数组名;数据类型 数组名[][];数据类型[] 数组名[]。
☆初始化:数据类型[][] 变量名 = new 数据类型[m][n];数据类型[][] 变量名 = new 数据类型[][]{{元素…},{元素…},{元素…}};数据类型[][] 变量名 = {{元素…},{元素…},{元素…}}。
☆具体定义:
1、int[][] arr = new int[3][4];即二维数组的长度为3,二维数组中的每个元素又是一个长度为4的数组。
2、int[][] arr = new int[3][];即二维数组的长度为3,其中每个元素的长度不确定。
3、int[][] arr = {{1,2},{3,4,5,6},{7,8,9}};即二维数组的长度为3,三个元素分别为{1,2}、{3,4,5,6}、{7,8,9}。
☆访问:

public class Demo {
	public static void main(String[] args){
	int[][] a = new int[3][4];
	System.out.println(a);//[[I@32784a
	System.out.println(a.length);//3
	System.out.println(a[1]);//[I@3fa5ac
	System.out.println(a[1].length);//4
	a[0][0] = 100;
	System.out.println(a[0][0]);//100
	int[][] b = {{1,2},{3,4,5,6},{7,8,9}};
	System.out.println(b[0][0]);//1
	int[][] c = new int[3][];
	System.out.println(c[0]);//null
	c[0] = new int[]{1,2,3};
	System.out.println(c[0][0]);//1
	}
}

☆遍历:

public class Demo {
	public static void main(String[] args){
	int[][] b = {{1,2},{3,4,5,6},{7,8,9}};
	for(int j=0; j<a.length; j++){
	for(int k=0;k<a[j].length; k++){
	System.out.println("a[j][k]");}
	}
	}
}

猜你喜欢

转载自blog.csdn.net/ao__ao/article/details/82976986