七、数组的定义与使用
25 数组的基本定义
数组:一组相关变量的集合
引用数据类型
数组定义
1、数组动态初始化(默认值是对应类型的默认值)
数据类型 数组名称 [] = new 数据类型[长度];
数据类型[] 数组名称 = new 数据类型[长度];
2、数组静态初始化
简写:
数据类型 数组名称 [] = {数据1, 数据2, 数据3…};
完整格式(推荐):
数据类型 数组名称 [] = new 数据类型[] {数据1, 数据2, 数据3…};
下标访问元素,下标从0开始
下标范围:0 ~ 长度-1
// 1、动态初始化 int data[] = new int[3]; // 设置值 data[0] = 1; data[1] = 2; data[2] = 3; //遍历,获取值 for (int i = 0; i < data.length ; i++) { System.out.println(data[i]); // 1 2 3 } // 2、静态初始化 int[] data = new int[]{1, 2, 3}; //遍历,获取值 for (int i = 0; i < data.length ; i++) { System.out.println(data[i]); // 1 2 3 }
26 数组引用传递分析
数组是引用数据类型
int[] data = new int[]{1, 2, 3}; int[] temp = data; temp[0] = 10; //遍历,获取值 for (int i = 0; i < data.length ; i++) { System.out.println(data[i]); // 10 2 3 }
27 foreach输出
JDK>=1.5 避免操作下标,从.NET引入
语法
foreach(数据类型 变量: 数组|集合){}
int[] data = new int[]{1, 2, 3}; for (int temp : data) { System.out.println(temp); // 1 2 3 }
28 二维数组
定义
1、动态初始化
数据类型[][] 数组名称 = new 数据类型[行个数][列个数] ; • 1
2、静态初始化
数据类型[][] 数组名称 = new 数据类型[][] {{数据1, 数据2, ...}, {数据1, 数据2, ...}...} ;
int[][] data = new int[][]{{1, 2, 3}, {4, 5, 6}}; // for循环 for (int x = 0 ; x < data.length ; x ++) { for (int y = 0 ; y < data[x].length ; y ++) { System.out.println(data[x][y]) ; // 1 2 3 4 5 6 } } // foreach 循环 for (int[] row : data) { for (int cell : row) { System.out.println(cell) ; // 1 2 3 4 5 6 } }
29 数组与方法
同一块堆内存被不同栈变量指向
class ArrayDemo{ public static int[] getArray(){ int[] arr = new int[] {1, 2, 3}; return arr; } public static void printArray(int[] arr){ for(int x : arr) { System.out.println(x); } } public static void main(String[] args) { int[] arr = getArray(); printArray(arr); // 1 2 3 } }
主类:主方法所在的类
主类的功能不能过于复杂
// 封装起来的数组工具类 class ArrayUtil{ public static int getSum(int[] arr){ int sum = 0 ; for(int x : arr){ sum += x ; } return sum ; } public static double getAvg(int[] arr){ return getSum(arr) / arr.length; } public static int getMax(int[] arr){ // 假设最大值为第一个元素 int max = arr[0]; for(int x : arr){ if(x > max){ max = x; } } return max; } public static int getMin(int[] arr){ // 假设最小值为第一个元素 int min = arr[0]; for(int x : arr){ if(x < min){ min = x; } } return min; } public static void main(String[] args) { int[] arr = new int[] {1, 2, 3, 4, 5}; System.out.println("sum: " + ArrayUtil.getSum(arr)); System.out.println("avg: " + ArrayUtil.getAvg(arr)); System.out.println("max: " + ArrayUtil.getMax(arr)); System.out.println("min: " + ArrayUtil.getMin(arr)); /** sum: 15 avg: 3.0 max: 5 min: 1 */ } }