JAVA中数组初始化时⽤new与不⽤new的区别
定义数组初始化
1、不同于String类,String由于实现了常量池 所以new 和不new 有区别:new的话,引⽤变量指向堆区。不new的话,引⽤变量指向常量池。
2、对于数组的定义,初始化时⽤new与不⽤new 没区别,只是两种⽅式罢了,因为数组是引⽤数据类型,建⽴对象时,⽆论⽤不⽤new,数组实体都是放在堆内存中,引⽤变量放在栈内存。
这是由于java设计之初为了契合⽤户习惯做得妥协(也可以说是优化)。
⼤家都知道java是1995年设计出来的,相⽐c(1972年)、c++(1983年)这些语⾔来说是后起之秀。⽽c、c++定义数组习惯使⽤ int a[] = {1, 2, 3}; 这样的⽅式。因此java也顺势继承了下来。
java作为纯⾯向对象语⾔,同时数组在java中以对象形式存在。这种写法咋看之下违背了对象创建的⽅式,⽽它实际上只是⼀种语法糖(简化写法)。编译器遇到 int a[] = {1, 2, 3}; 会编译成和 int a[] = new int[] {1, 2, 3}; 完全⼀样的中间代码。
因此 int a[] = {1, 2, 3}; 和 int a[] = new int[] {1, 2, 3}; 实际上是等价的,任何⼀种写法都能正确编译,所以当然不会报错了。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。