
java 静态初始化的蹊跷之处:有 new 和没 new 的区别解析
在 java 中,静态初始化数组可以通过两种方式实现,但令人费解的是,这两种方式竟有着截然不同的结果。
问题:使用 new 和不使用 new 静态初始化数组的区别
在下面的代码示例中,使用 new 的方式不会报错,而不用 new 的方式会报编译错误:
int[] arr = {3, 3, 5, 9, 11}; // 静态初始化,使用newarr = new int[] {3, 3, 5, 9, 11}; // 静态初始化,使用newint[] arr = {3, 3, 5, 9, 11}; // 静态初始化,不用newarr = {3, 3, 5, 9, 11}; // 编译错误
一些资料声称这两种方式没有区别,编译器会自动为不用 new 的情况补充 new。然而,事实并非如此。
立即学习“Java免费学习笔记(深入)”;
爱派AiPy
融合LLM与Python生态的开源AI智能体
1 查看详情
答案:语法糖与赋值的本质区别
int[] arr={3,3,5,9,11}; 并不是真正的语法糖,而是静态初始化的语法糖。当编译器遇到这种语法时,会自动将其转换为相应的 new 表达式。
int[] arr = new int[] {3, 3, 5, 9, 11};
因此,实际上这两种方式都是使用 new 来静态初始化数组的。
但是,arr={3,3,5,9,11}; 则完全不同,它相当于对 arr 变量进行赋值。java 不支持这种给数组直接赋值的语法。
以上就是Java 静态初始化数组:使用 new 和不使用 new 的区别在哪里?的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/800701.html
微信扫一扫
支付宝扫一扫