我是Java的新手,我正在阅读如何在Java中使用数组。它说要在Java中使用数组,您必须遵循三个步骤:数组声明,创建数组和初始化数组,而我明白了,但是当我没有遵循上述所有步骤时,以下代码将如何工作
int[] array = {1234,234,43,15234,433}
在这里,我声明了我将要使用的变量的类型,并将其命名并直接使用它。与通常在OOP中使用的方法不同,像
int[] array = new int[10];
第一种方法仍然使array
成为对象吗?如果是,怎么办?
答案 0 :(得分:2)
第一种方法只是
的简写int[] array = new int[5];
array[0] = 1234;
array[1] = 234;
array[2] = 43;
array[3] = 15234;
array[4] = 433;
由于以下选项
int[] array = {1234,234,43,15234,433}
要短得多,只要在编译时就已经知道数组的元素,就可以使用它。请注意,在第二种情况下,您仅创建了数组,但实际上并未用元素填充它。
从Java语言规范Chapter 4.3.1 Object开始,数组被视为对象。
答案 1 :(得分:2)
但它仍然会是一个对象,因为我不会像使用new关键字那样创建实例
除非明确初始化现有数组,否则无法阻止创建新对象。
build_dir
是
的简写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
使用“ new”关键字时,我们到底要告诉编译器
在堆上创建一个新对象(除非进行转义分析可以消除对象的创建),尽管Oracle / OpenJDK版本6至11可以将某些对象而不是堆放在堆栈上以减少堆使用,但这并不适用数组AFAIK。
[添加]数组是对象吗?
Java中的变量仅是原语或引用。如果不是标量原语,则为对象。例如int[] array = reusedArray; // no new array
array[0] = 1234;
array[1] = 234;
array[2] = 43;
array[3] = 15234;
array[4] = 433;
,Boolean
,int[]
,String
变量都是对对象的引用。即Enum
不是对象。