乐趣区

关于java:Java基础语法四

数组

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

定义形式如下:

// 定义一个数组
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
退出移动版