数组工程
本篇定位
本篇聚合 IDEA 工程 array-app 的全部源码练习(2025-12 学),按包分节全文收录——当年的学习注释(// 目标:… // 需求:…)原样保留,是最真实的练习轨迹。工程怎么建、模块/包/类怎么管理见 00-管理项目。
包含 12 个 .java 练习,目录结构:
array-app/src/
├── com/zwnsyw/define/ArrayDemo.java
├── com/zwnsyw/define/ArrayDemo1.java
├── com/zwnsyw/define/ArrayDemo2.java
├── com/zwnsyw/define/ArrayDemo3.java
├── com/zwnsyw/define/ArrayDemo5.java
├── com/zwnsyw/define/ArrayTest4.java
├── com/zwnsyw/define/ArrayTest6.java
├── com/zwnsyw/demo/Test1.java
├── com/zwnsyw/demo/Test2.java
├── com/zwnsyw/demo/Test3.java
├── com/zwnsyw/memory/ArrayDemo1.java
└── com/zwnsyw/memory/ArrayDemo2.java
数组的定义与遍历
静态/动态初始化与遍历案例。
ArrayDemo.java
package com.zwnsyw.define;
public class ArrayDemo {
public static void main(String[] args) {
int a = 10;
System.out.println(a);
int[] arr = {11, 22, 33};
System.out.println(arr);
System.out.println(arr[1]);
arr[0] = 44;
arr[1] = 55;
arr[2] = 66;
System.out.println(arr[0]);
System.out.println(arr[1]);
System.out.println(arr[2]);
}
}
ArrayDemo1.java
package com.zwnsyw.define;
public class ArrayDemo1 {
public static void main(String[] args) {
// 目标:掌握数组的定义方式一:静态初始化数组。
// 1、数据类型[] 数组名 = new 数据类型[]{元素1, 元素2, 元素3,.....}
int[] ages = new int[]{12, 24, 36};
double[] scores = new double[]{89.9, 99.5, 59.5, 88};
// 2、简化写法:
// 数据类型[] 数组名 = {元素1, 元素2, 元素3,.....}
int[] ages2 = {12, 24, 36};
double[] scores2 = {89.9, 99.5, 59.5, 88};
// 3、数据类型[] 数组名 也可以写成 数据类型 数组名[]
int ages3[] = {12, 24, 36};
double scores3[] = {89.9, 99.5, 59.5, 88};
}
}
ArrayDemo2.java
package com.zwnsyw.define;
public class ArrayDemo2 {
public static void main(String[] args) {
// 目标:掌握数组的访问。
int[] arr = {12, 24, 36};
//0 1 2
// 1、访问数组的全部数据
System.out.println(arr[0]);
System.out.println(arr[1]);
System.out.println(arr[2]);
// System.out.println(arr[3]);
// 2、修改数组中的数据
arr[0] = 66;
arr[2] = 100;
System.out.println(arr[0]);
System.out.println(arr[1]);
System.out.println(arr[2]);
// 3、访问数组的元素个数:数组名.length
System.out.println(arr.length);
// 技巧:获取数组的最大索引: arr.length - 1(前提是数组中存在数据)
System.out.println(arr.length - 1);
int[] arr2 = {};
System.out.println(arr2.length - 1);
}
}
ArrayDemo3.java
package com.zwnsyw.define;
public class ArrayDemo3 {
public static void main(String[] args) {
// 目标:掌握数组的遍历。
int[] ages = {12, 24, 36};
// 0 1 2
// System.out.println(ages[0]);
// System.out.println(ages[1]);
// System.out.println(ages[2]);
for (int i = 0; i < ages.length; i++) {
// i = 0 1 2
System.out.println(ages[i]);
}
//遍历简写:ages.fori
for (int i = 0; i < ages.length; i++) {
System.out.println(ages[i]);
}
}
}
ArrayDemo5.java
package com.zwnsyw.define;
public class ArrayDemo5 {
public static void main(String[] args) {
// 目标:掌握定义数组的方式二:动态初始化数组。
// 1、数据类型[] 数组名 = new 数据类型[长度]
int[] ages = new int[3]; // ages = [0, 0, 0]
System.out.println(ages[0]);
System.out.println(ages[1]);
System.out.println(ages[2]);
ages[0] = 12;
ages[1] = 18;
ages[2] = 32;
System.out.println(ages[0]);
System.out.println(ages[1]);
System.out.println(ages[2]);
System.out.println("---------------------------");
char[] chars = new char[3]; // [0, 0, 0]
System.out.println((int)chars[0]);
System.out.println((int)chars[2]);
double[] scores = new double[80];
System.out.println(scores[0]);
System.out.println(scores[79]);
boolean[] flags = new boolean[100];
System.out.println(flags[0]);
System.out.println(flags[99]);
String[] names = new String[80];
System.out.println(names[0]);
System.out.println(names[79]);
}
}
ArrayTest4.java
package com.zwnsyw.define;
public class ArrayTest4 {
public static void main(String[] args) {
// 目标:完成对数组的元素求和。
// 1、定义一个数组存储5名员工的销售额
int[] money = {16, 26, 36, 6, 100};
// 0 1 2 3 4
// 3、定义一个变量用于累加求和
int sum = 0;
// 2、遍历这个数组中的每个数据。
for (int i = 0; i < money.length; i++) {
// i = 0 1 2 3 4
sum += money[i];
}
System.out.println("员工的销售总额:" + sum);
}
}
ArrayTest6.java
package com.zwnsyw.define;
import java.util.Scanner;
public class ArrayTest6 {
public static void main(String[] args) {
// 目标:完成评委打分的案例。
// 1、定义一个动态初始化的数组,负责后期存储6个评委的打分。
double[] scores = new double[6];
Scanner sc = new Scanner(System.in);
// 2、遍历数组中的每个位置,录入评委的分数,存入到数组中去
for (int i = 0; i < scores.length; i++) {
// i = 0 1 2 3 4 5
System.out.println("请您输入当前第" + (i + 1) +"个评委的分数:");
double score = sc.nextDouble();
scores[i] = score;
}
// 3、遍历数组中的每个元素进行求和
double sum = 0;
for (int i = 0; i < scores.length; i++) {
sum += scores[i];
}
System.out.println("选手最终得分是:" + sum / scores.length);
}
}
案例练习
数组综合小题。
Test1.java
package com.zwnsyw.demo;
public class Test1 {
public static void main(String[] args) {
// 目标:掌握数组元素求最值。
// 1、把颜值数据拿到程序中来,用数组装起来
int[] faceScores = {15, 9000, 10000, 20000, 9500, -5};
// 0 1 2 3 4 5
// 2、定义一个变量用于最终记住最大值。
int max = faceScores[0];
// 3、从数组的第二个位置开始遍历。
for (int i = 1; i < faceScores.length; i++) {
// i = 1 2 3 4 5
// 判断一下当前遍历的这个数据,是否大于最大值变量max存储的数据,如果大于,当前遍历的数据需要赋值给max
if(faceScores[i] > max ){
max = faceScores[i];
}
}
System.out.println("最高颜值是:" + max);
}
}
Test2.java
package com.zwnsyw.demo;
public class Test2 {
public static void main(String[] args) {
// 目标:完成数组反转。
// 1、准备一个数组
int[] arr = {10, 20, 30, 40, 50};
// i j
// 2、定义一个循环,设计2个变量,一个在前,一个在后
for (int i = 0, j = arr.length - 1; i < j; i++, j--) {
// arr[i] arr[j]
// 交换
// 1、定义一个临时变量记住后一个位置处的值
int temp = arr[j];
// 2、把前一个位置处的值赋值给后一个位置了
arr[j] = arr[i];
// 3、把临时变量中记住的后一个位置处的值赋值给前一个位置处
arr[i] = temp;
}
// 3、遍历数组中的每个数据,看是否反转成功了
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}
}
}
Test3.java
package com.zwnsyw.demo;
import java.util.Random;
import java.util.Scanner;
public class Test3 {
public static void main(String[] args) {
// 目标:完成随机排名
// 1、定义一个动态初始化的数组用于存储5名员工的工号
int[] codes = new int[5];
// [0, 0, 0, 0, 0]
// 0 1 2 3 4
// 2、提示用户录入5名员工的工号。
Scanner sc = new Scanner(System.in);
for (int i = 0; i < codes.length; i++) {
// i = 0 1 2 3 4
System.out.println("请您输入当前第" + (i + 1) +"个员工的工号:");
int code = sc.nextInt();
codes[i] = code;
}
// 3、打乱数组中的元素顺序。
// [12, 33, 54, 26, 8]
// i index
Random r = new Random();
for (int i = 0; i < codes.length; i++) {
// codes[i]
// 每遍历到一个数据,都随机一个数组索引范围内的值。然后让当前遍历的数据与该索引位置处的值交换。
int index = r.nextInt(codes.length); // 0 - 4
// 定义一个临时变量记住index位置处的值
int temp = codes[index];
// 把i位置处的值赋值给index位置处
codes[index] = codes[i];
// 把index位置原来的值赋值给i位置处
codes[i] = temp;
}
// 4、遍历数组中的工号输出即可
for (int i = 0; i < codes.length; i++) {
System.out.print(codes[i] + " ");
}
}
}
数组内存机制
数组在内存里怎么放。
ArrayDemo1.java
package com.zwnsyw.memory;
public class ArrayDemo1 {
public static void main(String[] args) {
// 目标:掌握普通变量、数组在计算机中的执行原理,Java程序在计算机中的执行过程。
int a = 20;
System.out.println(a);
int[] arr = new int[]{11, 22, 33};
System.out.println(arr);
System.out.println(arr[1]);
arr[0] = 44;
arr[1] = 55;
arr[2] = 66;
System.out.println(arr[0]);
System.out.println(arr[1]);
System.out.println(arr[2]);
}
}
ArrayDemo2.java
package com.zwnsyw.memory;
public class ArrayDemo2 {
public static void main(String[] args) {
// 目标:认识多个变量指向同一个数组对象的形式,并掌握其注意事项。
int[] arr1 = {11, 22, 33};
// 把int类型的数组变量arr1赋值给int类型的数组变量arr2
int[] arr2 = arr1;
System.out.println(arr1);
System.out.println(arr2);
arr2[1] = 99;
System.out.println(arr1[1]);
arr2 = null; // 拿到的数组变量中存储的值是null
System.out.println(arr2);
//System.out.println(arr2[0]);
//System.out.println(arr2.length);
}
}
💬 评论