java数组程序题

publicclassArrays{publicstaticvoidmain(String[]args){int[]a1={1,2,3,4,5};int[]a2;a2=a... public class Arrays {
public static void main(String[] args) {
int[] a1 = { 1, 2, 3, 4, 5 };
int[] a2;
a2 = a1;
for(int i = 0; i < a2.length; i++)
a2[i]++;
for(int i = 0; i < a1.length; i++)
prt("a1[" + i + "] = " + a1[i]);
}
static void prt(String s) {
System.out.println(s);
}
} ///:~
运行结果是:
a1[0] = 2
a1[1] = 3
a1[2] = 4
a1[3] = 5
a1[4] = 6
搞不懂a1不是赋值给a2了吗?但是a1没有变啊,怎么运行结果会加1呢?
展开
 我来答
waltty
2007-03-02 · TA获得超过328个赞
知道小有建树答主
回答量:115
采纳率:0%
帮助的人:168万
展开全部
数组a2在声明时并没有使用new运算符,也就是说并未在内存中为数组a2开辟档昌扒空间,a2 = a1; 这句中的等号只相当于C++中的引用,是一个指向,a2指向了数组a1的空间,a1的值 变化了a2指向的值自然就跟着变,a2[i]++这句语句使a2指向的空间数据发生了变化,每个元素都自加1,但变化的实质是a1数组的元素都自加迅芹了1,因此,打印数组a1的值也就是变行昌化后的值了.
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式