2013-02-25 66 views
0

我在net中读取并找到引用数组存储引用。意义上的参考数组将会存储变量的内存地址我猜如果我没有弄错。如果这就是为什么我没有看到内存地址,当我通过字符串数组循环如下。原始数组和引用数组之间有什么区别?

String[] arrNames = new String[3]; 
    arrNames[0]  = "John"; 
    arrNames[1]  = "Mac"; 
    arrNames[2]  = "Alex"; 

现在,作为每定义的arrNames阵列将要存储在arrNames参考文献[0],arrNames [1],arrNames [2]。这意味着将指向名称的存储器地址,即约翰,马克斯和亚历克斯。

如果它是Primitive数组,它将直接存储下面的值。

int[] Num = new int[3]; 
Num[0] = 1; 
Num[1] = 2; 
Num[2] = 3; 

Num [0]将直接持有Numbers 1,而不是指向数字的地址。

请纠正我,如果我误解了它。

+3

这是相同的,为原始可变和对象变量之间的差,所不同的是有更多。 Java故意隐藏你的地址。 – 2013-02-25 05:18:52

+0

所以一个对象变量会存储内存地址 – 2013-02-25 05:19:37

+1

不,对象变量存储对象的“引用”,这是一个抽象的东西,Java真的不想让你担心。在低级别,是的,它基本上是一个指针。 http://docs.oracle.com/javase/specs/jls/se7/html/jls-4.html#jls-4.3.1 – 2013-02-25 05:20:17

回答

1

在java中没有原始数组。即使我们在数组中有原始值,那么数组本身也被视为数组对象。

0

原始数组和引用数组是完全相似的对象。

此外,默认值也施加有基本数组:

int[] myPrimitiveArray = new int[1]; 

assertTrue(myPrimitiveArray[0], 0)  //passed since 0 by default in each cell 

同:

Integer[] myReferenceArray = new Integer[1]; 

assertTrue(myPrimitiveArray[0], 0)  //passed since 0 by default in each cell 
相关问题