首先,数组初始化时,写不写new没有区别的。int arr[] = new int[]{ 3, 9, 8};
或者int[] arr = {3,9,8};
编译器遇到 int a[] = {3, 8, 9}
; 会编译成和 int a[] = new int[] {3, 8, 9}
; 完全一样的中间代码。
①不同于String类。String由于实现了常量池,new 和不new 有区别:若new,则引用变量指向堆区;若不new的话,则引用变量指向常量池。
②对于数组的定义,初始化时用new与不用new没区别,只是两种方式(写法)罢了,因为数组是引用数据类型,建立对象时,无论用不用new,数组实体都是放在堆内存中,引用变量放在栈内存。
内存简析: