Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 基元数组和引用数组之间的区别是什么。_Java_Arrays - Fatal编程技术网

Java 基元数组和引用数组之间的区别是什么。

Java 基元数组和引用数组之间的区别是什么。,java,arrays,Java,Arrays,我在网络中阅读并找到了引用数组存储引用。如果我没有弄错的话,数组将存储变量的内存地址。如果这就是为什么我在循环字符串数组时看不到内存地址的原因,如下所示 String[] arrNames = new String[3]; arrNames[0] = "John"; arrNames[1] = "Mac"; arrNames[2] = "Alex"; 现在根据定义,arrNames数组将在arrNames[0]、arrNames[1]、arr

我在网络中阅读并找到了引用数组存储引用。如果我没有弄错的话,数组将存储变量的内存地址。如果这就是为什么我在循环字符串数组时看不到内存地址的原因,如下所示

  String[] arrNames = new String[3];
  arrNames[0]       = "John";
  arrNames[1]       = "Mac";
  arrNames[2]       = "Alex";
现在根据定义,arrNames数组将在arrNames[0]、arrNames[1]、arrNames[2]处存储引用。这意味着内存地址将指向名字,如eJohn,Max和Alex

如果它是基元数组,它将直接存储如下所示的值

 int[] Num = new int[3];
 Num[0]    = 1;
 Num[1]    = 2;
 Num[2]    = 3;
Num[0]将直接保存数字1,而不是指向数字的地址


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

在java中没有基元数组。即使数组中有基元值,数组本身也被视为数组对象。

基元数组和引用数组是完全相似的对象

此外,默认值也应用于基元数组:

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

这与基本变量和对象变量之间的区别相同,只是它们的数量更多。Java故意对您隐藏地址,因此对象变量将存储内存地址。不,对象变量存储对对象的“引用”,这是Java不想让您担心的抽象问题。在低层次上,它基本上是一个指针。