在Java中使用数组的方式

时间:2018-11-09 14:36:57

标签: java arrays

我是Java的新手,我正在阅读如何在Java中使用数组。它说要在Java中使用数组,您必须遵循三个步骤:数组声明,创建数组和初始化数组,而我明白了,但是当我没有遵循上述所有步骤时,以下代码将如何工作

int[] array = {1234,234,43,15234,433}

在这里,我声明了我将要使用的变量的类型,并将其命名并直接使用它。与通常在OOP中使用的方法不同,像

int[] array = new int[10];

第一种方法仍然使array成为对象吗?如果是,怎么办?

2 个答案:

答案 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; Booleanint[]String变量都是对对象的引用。即Enum不是对象。