Java数组从入门到入土(新手必看指南)

一、数组是个什么鬼?🤔

先给各位萌新打个比方:数组就像咱们宿舍楼的快递架(每个格子里只能放一个快递),每个格子都有固定编号(索引),咱们要找快递直接报编号就行。Java数组就是这个原理——用连续内存空间存储相同类型数据的容器!

举个活生生的例子:

// 创建能装5个快递的货架(数组)
String[] packages = new String[5]; 
// 往0号格子放快递
packages[0] = "张三的键盘"; 
// 1号格子放鼠标
packages[1] = "李四的鼠标"; 

二、数组的十八般武艺

2.1 创建数组的三种姿势

  1. 先声明后初始化(老司机常用):
int[] scores;  // 声明
scores = new int[3];  // 初始化
  1. 一步到位法(推荐新手):
double[] prices = new double[10]; 
  1. 直接赋值法(适合已知元素):
char[] vowels = {'a','e','i','o','u'}; 
// 注意!这里用的是花括号{}

2.2 数组必杀技——遍历

最常用的三种遍历方式:

  1. 普通for循环(精准控制):
for(int i=0; i<vowels.length; i++){
    System.out.println(vowels[i]);
}
  1. 增强for循环(简洁优雅):
for(char c : vowels){
    System.out.println(c);
}
  1. Arrays.toString(快速打印):
System.out.println(Arrays.toString(vowels)); 
// 输出:[a, e, i, o, u]

2.3 数组排序大法

手把手教数组排序(超级实用):

int[] nums = {3,1,4,1,5};
Arrays.sort(nums);  // 原地排序
System.out.println(Arrays.toString(nums)); 
// 输出:[1, 1, 3, 4, 5]

2.4 二维数组(套娃预警)

二维数组就是数组中的数组:

// 创建3x3的棋盘
char[][] chessBoard = new char[3][3]; 
// 中间下黑子
chessBoard[1][1] = '●'; 

遍历二维数组的正确姿势:

for(int i=0; i<chessBoard.length; i++){
    for(int j=0; j<chessBoard[i].length; j++){
        System.out.print(chessBoard[i][j]+" ");
    }
    System.out.println();
}

三、新手避坑指南(血泪教训)

3.1 数组长度不可变(重要!)

int[] arr = new int[5];
arr.length = 10;  // 报错!数组长度是final的

解决方案:用ArrayList替代固定长度数组

3.2 索引越界(最常见的错误)

int[] arr = new int[3];
System.out.println(arr[3]);  // 报错!索引范围是0-2

千万注意!!!数组索引从0开始,最大索引是长度-1

3.3 数组复制陷阱

直接赋值是引用传递:

int[] a = {1,2,3};
int[] b = a;  // 两个变量指向同一个数组
b[0] = 666;
System.out.println(a[0]);  // 输出666!

正确复制方法:

int[] b = Arrays.copyOf(a, a.length);
// 或者
System.arraycopy(a, 0, b, 0, a.length);

四、实战演练(真实案例)

案例1:班级成绩统计

// 录入5位同学成绩
double[] scores = new double[5]; 
Scanner sc = new Scanner(System.in);
for(int i=0; i<scores.length; i++){
    System.out.print("请输入第"+(i+1)+"位同学成绩:");
    scores[i] = sc.nextDouble();
}

// 计算平均分
double sum = 0;
for(double score : scores){
    sum += score;
}
System.out.println("平均分:"+(sum/scores.length));

案例2:抽奖程序

String[] names = {"张三","李四","王五","赵六"};
Random rand = new Random();
int luckyIndex = rand.nextInt(names.length);
System.out.println("中奖的是:"+names[luckyIndex]);

五、数组进阶小技巧

5.1 数组转List

String[] arr = {"Java","Python","C++"};
List<String> list = Arrays.asList(arr); 
// 注意:这个List是固定长度的!

5.2 数组填充

int[] arr = new int[10];
Arrays.fill(arr, 100);  // 所有元素都变成100

5.3 数组比较

int[] a = {1,2,3};
int[] b = {1,2,3};
System.out.println(a.equals(b));  // false!
System.out.println(Arrays.equals(a, b));  // true

六、总结与建议

数组作为Java最基础的数据结构,虽然简单但处处是坑(别问我怎么知道的🌚)。给新手的建议:

  1. 多练习数组的各种操作(遍历、排序、查找)
  2. 注意数组长度不可变的特性
  3. 遇到复杂需求时,优先考虑集合框架(如ArrayList)
  4. 善用Arrays类的工具方法(能省很多事)

最后送大家一句话:数组用得好,BUG少不少!下次咱们再聊聊更刺激的集合框架,保证让你打开新世界的大门~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值