1、定义数组
数组:存在相同类型元素的一组集合。
1-1 数组的创建
语法:T[ ] 数组名 = new T[ N ];
-> T表示数组中存放数据的类型;
-> T[ ]表示数组的类型;
-> N表示数组的个数;
1-2 数组的初始化
静态初始化:
在创建数组时,不直接给定数据元素的个数,而是直接将数组的内容指定。
eg1: int[] arr2 = new int[]{1,2,3};
eg2: int[] arr1 = {1,2,3};
【静态初始化可以省略new T[]。省略格式不能拆分,eg: int[] arr; arr = {1,2,3}】
动态初始化:
在创建数组时,直接指定数组中元素的个数
eg : int[] arr = new int[3];
如果数组中存储元素类型为引用类型,不初始化,那么默认值为null; 【空指针异常】
如果是byte,int,short,long,默认值为0;如果是float,为0.0f,double,为0.0;char为/u000;如果是boolean,为false
1-3 数组的访问
数组是一段连续的内存空间,其编号从0开始递增,可以通过合法的下标访问其任意位置元素。【支持随机访问】
eg:int[] array = {1, 2, 3};
1-4 数组的遍历
遍历是对数组中所有元素都访问一遍。
(1)for(int i = 0; i < arr.length; i++){
System.out.print(arr[i] + " ");
}
-> 在数组中,通过 数组对象.length 获取数组长度。
(2)for( int x : array ){
System.out.print(x + " ");
}
-> for-each是for循环的另外一种使用方式。
-> 没有用到下标。
-> 可以避免循环条件和更新语句写错
(3)用工具类 Arrays中的方法
eg: String ret = Arrays.toString(array); //int[] array = {1,2,3};
System.out.println(ret); // 输出为:[1,2,3];
//将传进来的数组以字符串形式打印
2、数组是引用类型
2-1初始jvm的内存分布
内存是一段连续的存储空间,主要用来存储程序运行时数据。
2-2基本类型变量与引用类型变量的区别
基本数据类型创建的变量,称为基本变量,该变量空间中直接存放的是 其所对应的值。
引用数据类型创建的变量,称为对象的引用,其空间中存储的是 对象所在空间的地址。
eg1:
eg2:
3、数组的应用场景
3-1 作为函数的参数
参数传基本数据类型:
在方法func中修改形参x的值,不会影响实参num的值
参数传数组类型【引用数据类型】
在方法func内部中修改数组的内容,方法外部数组的内容也发生了变化
总结:Java中“引用”实际上存了一个地址。java将数组设置为引用类型,后续进行数组传参,其实可认为是将数组的首地址传过去了,这样就避免了对整个数组的拷贝。
3-2 作为函数返回值