数组
能够把数组了解为是一个容器,用来存储一批同种类型的数据。
定义形式如下:
// 定义一个数组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. 创立一个实例化对象scScanner 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