目录
1、什么是数组
1.1什么是数组
简单的说就是储存一组相同数据的集合。
1.2数组的三种定义:
格式一:数据类型[ ] 数组名 = {元素1,元素2,元素3…};
示例:定义存储1,2,3,4,5整数的数组容器
int[] array = {1,2,3,4,5};
格式二:数据类型[ ] 数组名 = new 数据类型[ ]{元素1,元素2,元素3…};
示例:定义存储1,2,3,4,5整数的数组容器。
int[] array = new int[]{1,2,3,4,5};
格式三:数据类型[ ] 数组名 = new 数据类型[ ]{元素数量};
示例:定义可以存储5个整数的数组容器:
int[] array = new int[5];
注意:定义数组的时候不能写具体的数字。例如:int[10]array={1,2,3};
new是关键字,实例化一个对象,也就意味着Java当中的数组也是一个对象。
2、for循环和for each循环的区别
运行结果:
区别:for循环可以拿到下标,for each循环不能拿到下标
3、按引用传递(按值传递)
public static void printf(int[] array) { for (int i = 0; i < array.length; i++) { System.out.print(array[i]+" "); } System.out.println(); } public static void main(String[] args) { int[] array = {1,2,3,4,5,6}; printf(array); }
3.1如何理解
3.2引用是否一定是在栈上
答:不一定,一个变量是否在栈上是由变量的性质决定的,如果是局部变量,就在栈上。如果是实例成员变量,就不一定在栈上。
3.3一个引用可以指向多个对象
而最终指向的对象是最后所指向的对象。(一个引用只能保存一个对象)
int[]arr=new int[]{1,2,3}; arr[]=new int[2]; arr[]=new int[4]; arr[]=new int[5]; /*最终arr[]=new int[5];*/
int[]arr=null//这个引用不指向任何对象
3.4深入理解
public static void func1(int[] array) { array = new int[]{11,22,33,44,55,66}; } public static void func2(int[] array) { array[0] = 999; } public static void main7(String[] args) { int[] array = {1,2,3,4,5,6}; System.out.println(Arrays.toString(array)); //func1(array);分别运行func1,func2对比分析 func2(array); System.out.println(Arrays.toString(array)); }
to be continued