数组
能够把数组了解为是一个容器,用来存储一批同种类型的数据。
定义形式如下:
// 定义一个数组
int[] nums = {10, 20, 30, 40};
String[] names = {"张三", "李四"};
一般来说,开发者会用数组存储一系列相干的值。
动态初始化数组
示例:
// 动态初始化数组 - 残缺写法
String[] names = new String[]{"zs", "root", "ls"};
int[] nums = new int[]{10,20,30};
double[] scores = new double[]{55.9, 99.5, 60.0};
boolean[] status = new boolean[]{true, false};
// 简化写法
int[] ages = {10,20,30};
String[] list = {"zs", "ls"};
留神:
- “ 数据类型[] 数组名 ” 也能够写成 ” 数据类型 数组名[]”。这种写法在 java 中并不举荐。
- 什么类型的数组只能寄存什么类型的数据。
数组在内存中的基本原理
当在代码中间接打印一个数组的时候,就会失去数组在内存中的地址,例如:
int[] nums = {10, 20, 30};
System.out.println(nums); // [I@10f87f48
打印出的 [I@10f87f48
后果是 java 对数组内存地址的一个形容,[
示意是一个数组,I
示意 int 类型,@
示意这个数组在哪个地址,10f89f48
就是具体的地址,应用十六进制示意。
留神:数组变量名中存储的是数组在内存中的地址,数组是一种援用数据类型。
数组元素拜访
例如:
int[] nums = {10, 20, 30};
// 读取数组中的值
System.out.println(nums[0]); // 10
// 批改数组中的值
nums[0] = 20;
System.out.println(nums[0]); // 20
// 获取数组的长度
System.out.println(nums.length); // 3
// 获取数组的最大索引
System.out.println(nums[nums.length - 1]); // 30
遍历数组
能够通过 for 循环来遍历数组:
int[] nums = {10, 20, 30, 40};
for(int i=0;i<nums.length;i++){System.out.println(nums[i]);
}
System.out.println("============================");
for(int n: nums) {System.out.println(n);
}
练习:
代码如下:
// 计算销售总和
int[] list = {16, 26, 36, 6, 100};
// 创立一个变量,用来存储综合
int sum = 0;
for(int i = 0;i < list.length; i++) {sum += list[i];
}
System.out.println(sum); // 184
动静初始化数组
动静初始化数组元素默认值规定:
// 动静初始化数组
int[] nums = new int[3]; // []当中的数字 3 示意空数组的长度
System.out.println(Arrays.toString(nums)); // [0, 0, 0]
动静初始化数组的元素默认值:
// 动静初始化数组
int[] nums = new int[3]; // []当中的数字 3 示意空数组的长度
System.out.println(Arrays.toString(nums)); // [0, 0, 0]
float[] nums2 = new float[3];
System.out.println(Arrays.toString(nums2)); // [0.0, 0.0, 0.0]
boolean[] bool1 = new boolean[3];
System.out.println(Arrays.toString(bool1)); // [false, false, false]
String[] strs = new String[3];
System.out.println(Arrays.toString(strs)); // [null, null, null]
练习
代码如下:
// 计算评委的分数
// 1. 动静初始化数组
double[] scores = new double[6];
// 2. 创立一个实例化对象 sc
Scanner sc = new Scanner(System.in);
// 创立一个变量存储分数
double sum = 0;
// 3. 循环遍历数组
for(int i = 0;i < scores.length; i++) {
// 4. 收集输出的分数
System.out.println("请输出第" + (i + 1) + "位评委分数:");
double scope = sc.nextDouble();
sum += scope;
scores[i] = scope;
}
System.out.println(Arrays.toString(scores)); // [80.0, 90.7, 89.0, 45.67, 87.0, 66.66]
System.out.println(sum / 6); // 76.505