数组

能够把数组了解为是一个容器,用来存储一批同种类型的数据。

定义形式如下:

// 定义一个数组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