数组
一、定义
数组是一组相同类型的变量。
二、创建数组
int[] array1 = {1,2,3,4,5};
int[] array2 = new int[]{1,2,3,4,5};
int[] array3 = new int[5];
三、遍历数组(3种方式)
//方式一for循环
for(int i = 0; i<array1.length;i++){
int ret = array1[i];
System.out.println(ret);
}
//方式二 foreach
for(int x :array1){
System.out.println(x+" ");
}
X保存的是数组中的每个元素
//方式三 使用工具类Arrays
String str = Arrays.toString(array1);
System.out.println(str);
注意:
public static void main(String[] args) {
int[] array = {};
for(int i =0;i<array.length;i++){
System.out.println(array[i]);
}//数组长度为0;打印出来是空
System.out.println(array[0]);//下标越界
int[] array1 = new int[5];
for(int i =0;i<array.length;i++){
System.out.println(array[i]);
}//打印出来是5个0
}
三、数组作为方法的参数
局部变量:定义在方法里面的变量,存放在栈中
JVM中有5块内存:JVM栈(java虚拟机栈)、本地方法栈、堆、方法区、程序计数器。
int a = 10;
整形变量,存放的是整形数据
int[] array = {1,2,3,4,5};
引用变量,存放的是引用(地址),内容存放在堆中。
注意:数组是对象,对象都在堆上。
java当中,都是按值传递,但是这个“值”要注意,可能是简单类型,也可能是引用类型。
public static void printArray(int[] array){
for(int i = 0;i<array.length;i++){
System.out.println(array[i]);
}
}
public static void main(String[] args) {
int[] array = {1,2,3,4,5};
printArray(array);
}
两个引用指向一个对象,通过其中一个引用来修改这个对象的值之后,那么另外一个引用访问这个对象时,值也发生了改变。
四、认识null
int[] array = null;//代表不指向任何对象
五、数组转字符串
public static void toString(int[] array){
String ret ="[";
for (int i = 0; i <array.length ; i++) {
ret+=array[i];
if(i!=array.length-1){
ret+=",";
}
}
ret+="]";
System.out.println(ret);
}
public static void main6(String[] args) {
int[] array ={1,2,3,4,5};
toString(array);
}
六、数组的拷贝
//数组的拷贝(4种方法)
System.out.println("======for======");
int[] array = {1,2,3,4,5};
int[] copy = new int[array.length];
for (int i = 0; i <array.length ; i++) {
copy[i] = array[i];
}
System.out.println(Arrays.toString(copy));
System.out.println("======Arrays========");
int[] copy1 = Arrays.copyOf(array,array.length);
System.out.println(copy1);
System.out.println("======system=======");
int[] copy3 =new int[array.length];
System.arraycopy(array,0,copy3,0,array.length);
System.out.println(Arrays.toString(copy3));
System.out.println("=======clone=======");
int[] copy4 = array.clone();
System.out.println(Arrays.toString(copy4));
深拷贝、浅拷贝
深拷贝:针对简单数据类型,修改原数组,不会影响到新数组
浅拷贝:针对引用类型,两个引用,同时指向一个对象,修改源数组,值也发生了改变。
拷贝某个数组范围:Arrays.copyOfRange(array,2,4);