2014-01-31 83 views
0

在线,数组是对象还是变量的问题是冲突的。数组对象或变量?数组:对象或变量

Blue Pelican Java书声称它们是变量,但它们必须实例化,所以我不确定。

+1

集合的你是什么意思集合*“对象或变量” *?他们不完全相互排斥,你知道吗? – ADTC

+0

我认为这是一个有趣的问题,我可能在多年前第一次学习面向对象编程时问过这个问题。通读答案,他们都是正确的,但以不同的方式阐明问题。 – GSP

+0

你能引用这本书中说数组是变量的特定部分吗?数组只是另一种对象,对它们的引用被保存在变量中,就像引用任何其他类型的对象一样。 –

回答

2

我想的JavaDoc清除在单一句子

的阵列,其保持单一类型

1

首先,一个数组的实例是Java中的一个完全正确的对象。

其次,数组可能是变量的类型(但不是变量)。在这种情况下,当变量被实例化时,它将指向一个数组实例(这是一个对象)。

1

我认为数组是对象。

0

阵列的值的固定数量的容器对象是纯粹object.according to java doc

0

简而言之,变量就是声明一个对象并访问它。所以他们不是两个相互排斥的东西。

数组是一个对象,您可以使用一个变量来访问它。虽然阵列是一个对象,它可以保持(例如int[])原语类型的值,或者其可以保持一个类类型的对象(例如String[]

int[] arr1 = new int[2]; 
System.out.println(arr1[0]); //output: 0 

这将创建,可容纳的两个值的阵列对象原始类型int。可以使用变量arr1访问数组对象。由于数组保存了原语,因此它们将被初始化为默认值0(或false,对于boolean)。

String[] arr2 = new String[2]; 
System.out.println(arr2[0]); //output: null 

这将创建一个数组对象,该对象包含类型为String的两个对象。可以使用变量arr2访问数组对象。由于该数组包含对象,因此它最初将保存null,这意味着没有对象。

More about arrays from The Java Tutorials

0

尝试此代码来检查数组是否是对象或没有。

String[] str=new String[] {"A","B","X"}; 
if (str instanceof Object){ 
    System.out.println("Yes!"); 
}else{ 
    System.out.println("No!"); 
} 
+0

你知道只有在'instanceof'之前使用对象引用时才会编译?换句话说,它总是会打印'Yes!'(好吧,除非str是'null')。 – Piovezan

+0

'是的!'。这意味着数组是对象。 –

+0

我知道,只是指出它将适用于除'null'引用外的其他所有内容(对于原始类型,它甚至不会编译)。 – Piovezan

1

当你问“是数组对象还是变量?”我想你的意思是“数组对象,还是原始数据类型?”

数组是指对象,指的是原始数据类型或其他对象的集合。

阵列可存储两种类型的数据:

  • 原始数据类型
  • 对象