Java数组和普通对象的引用变量有什么区别

 我来答
优就业郭老师
2018-03-12 · TA获得超过961个赞
知道小有建树答主
回答量:1053
采纳率:90%
帮助的人:386万
展开全部

数组和普通对象的引用变量有什么区别

了解什么是数组看这里:java中的数组是什么

对于Java的数组来说,只有类型兼容(即属于同一数据类型体系且遵守优先级由低到高原则),才能将数组引用传递给另一数组引用,但仍然不能改变数组长度(仅仅只是调整数组引用指针的指向)。

了解数组传递看这里:数组如何传递

publicclass TestArrayLength {

publicstaticvoidmain(String[] args) {

int[] numbers = { 3, 5, 12 };

int[] digits = newint[4];

System.out.println("digits数组长度:" + digits.length);//4

for(int number : numbers) {

System.out.print(number + ",");//3,5,12,

}

System.out.println("");

for(int digit : digits) {

System.out.print(digit + ",");//0,0,0,0,

}

System.out.println("");

digits = numbers;

System.out.println("digits数组长度:" + digits.length);//3

}

}

执行结果如下:

digits数组长度:4

3,5,12,

0,0,0,0,

digits数组长度:3

数组初始化之后在内存中的存储如下图,在堆中有2个新的数组对象,栈中有2个分别指向这两个数组对象的引用变量:

在执行digits = numbers赋值后,虽然看似digits的数组长度看似由4变成3,其实只是numbers和digits指向同一个数组对象而已。

而digits本身失去引用而变成垃圾,等待垃圾回收来回收(但其长度仍然为4)。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式