但它仍然是一个对象吗,因为我没有像使用 new 关键字那样创建实例
除非显式初始化现有数组,否则无法阻止创建新对象。
int[] array = {1234,234,43,15234,433}; // creates a new array object every time
是简写
int[] array = new int[] {1234,234,43,15234,433}; // creates a new array object every time
防止使用新对象的唯一方法是
int[] array = null; // no new object
or
int[] array = reusedArray; // no new array
array[0] = 1234;
array[1] = 234;
array[2] = 43;
array[3] = 15234;
array[4] = 433;
当我们使用“new”关键字时,我们到底告诉编译器什么
在堆上创建一个新对象(除非逃逸分析可以消除对象创建)虽然 Oracle/OpenJDK 版本 6 到 11 可以将一些对象放在堆栈而不是堆上以减少堆使用,但这不适用于数组 AFAIK 。
[补充]数组是对象吗?
Java 中的变量只是原语或引用。如果它不是一个标量基元,那么它就是一个对象。例如Boolean
, int[]
, String
, Enum
变量都是对对象的引用。 IE。String s
不是一个对象。