Java一维数组如何声明和赋值?新手必看教程
??灵魂拷问开篇??
"哎呦喂!刚学Java的你是不是也遇到过这种情况——老师讲数组时说得头头是道,结果自己一动手就报错满屏飘红?别慌!今天咱们就用人话把一维数组的声明和赋值掰碎了讲,保证你看完就能上手!"
一、声明数组:先挖坑,后种菜
??核心口诀??:??声明就是告诉计算机"我要存东西,先给我腾地方!"??
??正确姿势??:
java复制// 最标准写法(推荐新手用) 数据类型[] 数组名; // 举个栗子 String[] studentNames; int[] examScores; // 另一种老派写法(看到别慌) 数据类型 数组名[]; // 比如 double money[];
??注意??:这两种写法Java都认,但??带中括号的写法更直观??,毕竟String[]
一看就知道是字符串数组对吧?
??自问自答??:
??Q??:声明时能不能不写中括号?
??A??:绝对不行!试试这个错误示范:
java复制int scores; // 这是普通变量 scores = new int[5]; // 报错!类型不匹配
系统会直接怼你:"我要的是int数组,你给我个int变量几个意思?"
二、分配内存:决定你的菜地有多大
??关键认知??:??声明只是画地盘,new操作才是真挖坑!??
??动态初始化(灵活版)??:
java复制// 先声明后分配 char[] letters; letters = new char[26]; // 26个字母全放下 // 一气呵成版 boolean[] isPassed = new boolean[50];
??重点提示??:
- 数组长度必须是??正整数??(想写负数?系统反手就甩你NegativeArraySizeException)
- ??长度一旦确定不能改??(想扩容?只能新建数组拷贝数据)
??静态初始化(直男版)??:
java复制// 一步到位的写法 int[] primeNumbers = {2, 3, 5, 7, 11}; // 显式写法(适合强迫症) float[] prices = new float[]{9.9f, 19.9f, 29.9f};
??避坑指南??:
这两种写法看着像双胞胎,但有个致命区别——
java复制// 这样写没问题 int[] a = {1,2,3}; // 这样拆开会爆炸! int[] b; b = {4,5,6}; // 报错!缺了new int[]
三、赋值操作:往坑里种菜的十八般武艺
??基本原则??:??数组下标从0开始!从0开始!从0开始!??(重要的事情说三遍)
??基础操作??:
java复制String[] weekDays = new String[7]; weekDays[0] = "Monday"; // 第一个元素 weekDays[1] = "Tuesday"; // 第二个元素 // ...依此类推 weekDays[6] = "Sunday"; // 最后一个
??血泪教训??:
要是写成weekDays[7] = "Holiday"
,系统立马翻脸抛出ArrayIndexOutOfBoundsException!
??高级玩法??:
- ??循环赋值(批量操作)??
java复制int[] squares = new int[10]; for(int i=0; i<10; i++){ squares[i] = i * i; } // 现在squares数组存着0到9的平方数
- ??System.arraycopy(老司机专用)??
java复制int[] source = {1,2,3}; int[] target = new int[5]; System.arraycopy(source, 0, target, 0, 3); // target变成[1,2,3,0,0]
四、必看对比表:三种赋值方式怎么选
??对比项?? | 动态初始化 | 静态初始化 | 循环赋值 |
---|---|---|---|
??使用场景?? | 数据量已知但内容未知 | 数据内容固定 | 数据有规律可循 |
??内存占用?? | 提前占满指定空间 | 按需分配 | 动态调整 |
??代码复杂度?? | 简单 | 最简单 | 需要逻辑控制 |
??新手友好度?? | ★★★☆☆ | ★★★★★ | ★★☆☆☆ |
个人碎碎念
教了这么多年Java,发现新人最常踩的坑就是??把声明和初始化混为一谈??。记住啊兄弟们,声明就像在房产中介挂牌——只是告诉大家你要买房,而new操作才是真金白银付首付!
还有个冷知识:??数组长度用length属性获取??,但注意这是final修饰的,不能修改。之前有个学生问我:"老师,我能不能给length赋值让它变长?" 我当时的表情就像看到有人试图用筷子喝汤...
最后给个忠告:刚开始??尽量用静态初始化??,等熟悉了再玩动态的。就像学自行车,先骑带辅助轮的,摔多了自然就会了。遇到报错别慌,仔细看提示信息——Java的报错信息其实比女朋友的脾气好懂多了(手动狗头)!
(看到这里的都是真爱,去IDE里敲个数组试试吧!)
本文由嘻道妙招独家原创,未经允许,严禁转载