上一篇
🔥 最新动态
根据2025年7月Oracle官方文档更新,Java 21引入了更简洁的数组初始化语法糖,开发者现在可以用var
配合花括号直接推断数组类型,比如var names = {"Alice", "Bob"}
会自动识别为String[]
类型!
数组初始化就是在内存中开辟一块连续空间,并给每个"格子"填上初始值的过程,就像开学时老师给全班同学分配座位表🗂️,每个座位(数组元素)都要明确编号(索引)和坐谁(值)。
// 经典栗子🌰 int[] scores = new int[5]; // 5个全是0的整数格子 String[] pets = {"猫", "狗", "鹦鹉"}; // 直接赋值三连
// 声明+开空间+赋值三件套 double[] prices = new double[]{9.9, 19.8, 29.7};
💡 注意:new double[]
里的长度不能写数字(Java会自己数)
var emojis = new char[]{'🐶', '🐱', '🐭'}; // 自动推断类型为char[]
🚨 危险操作:var nums = {1,2,3};
在Java 21前会报错!
boolean[] answers = new boolean[3]; // 默认全是false answers[1] = true; // 第二个格子改成√
// 两种初始化方式对比 String[][] menu1 = {{"米饭","面条"}, {"果汁","咖啡"}}; // 直接填值 String[][] menu2 = new String[2][]; // 先定行数,列数随意 menu2[0] = new String[]{"蛋糕"}; // 第一行只有1列
编译能过但运行崩
int[] nums; System.out.println(nums[0]); // 报错!未初始化
✅ 正确姿势:声明后必须new
或者直接赋值
长度锁死警告
int[] ids = {1001, 1002}; ids[2] = 1003; // 运行时ArrayIndexOutOfBoundsException
🛡️ 防御技巧:用ArrayList
如果需要动态扩容
类型混淆惨案
Object[] objs = {"字符串", 123}; // 编译通过但... Integer[] nums = (Integer[]) objs; // 运行时报ClassCastException
Java 21允许在方法参数中直接初始化:
// 以前:必须单独声明 processScores(new int[]{90, 80, 70}); // 语法糖加持 processScores({90, 80, 70}); // 自动识别为数组
初始化方式 | 适用场景 | 记忆口诀 |
---|---|---|
new T[]{} |
需要明确类型时 | "new个盒子往里装" |
直接赋值 | 短小精悍的初始数据 | "一把梭哈" |
动态new T[n] |
长度已知内容待定 | "先占坑后填土" |
现在就去IDE里试试这些技巧吧!遇到问题记得回来查表~ ✨
本文由 磨云露 于2025-07-28发表在【云服务器提供商】,文中图片由(磨云露)上传,本平台仅提供信息存储服务;作者观点、意见不代表本站立场,如有侵权,请联系我们删除;若有图片侵权,请您准备原始证明材料和公证书后联系我方删除!
本文链接:https://vps.7tqx.com/wenda/468627.html
发表评论