| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 528 人关注过本帖
标题:[求助]数组问题!
只看楼主 加入收藏
baby69yy2000
Rank: 1
等 级:新手上路
帖 子:67
专家分:0
注 册:2007-4-5
收藏
 问题点数:0 回复次数:9 
[求助]数组问题!
程序结果为什么是2,3,4,5,6呢?而不是1,2,3,4,5呢? 6是怎么得的呀?



// Java Document
public class ArrayTest
{
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]);
}
public static void prt(String s)
{
System.out.println(s);
}
}
搜索更多相关主题的帖子: public border color Java 
2007-10-07 04:45
baby69yy2000
Rank: 1
等 级:新手上路
帖 子:67
专家分:0
注 册:2007-4-5
收藏
得分:0 
不好意思
我没仔细看
a1的地址给了a2,a2++就是a1++,这样理解对吗?

[此贴子已经被作者于2007-10-7 5:04:00编辑过]


2007-10-07 04:58
guoxhvip
Rank: 8Rank: 8
来 自:聖西羅南看臺
等 级:贵宾
威 望:44
帖 子:4052
专家分:135
注 册:2006-10-8
收藏
得分:0 
是这样的 因为数组是引用类型

愛生活 && 愛編程
2007-10-07 05:09
baby69yy2000
Rank: 1
等 级:新手上路
帖 子:67
专家分:0
注 册:2007-4-5
收藏
得分:0 

有些问题还迷糊呢!
当创建了"int[] a1 = { 1, 2, 3, 4, 5 };",是分配在堆内存里面吗?
a2 = a1;是把堆内存里面int[] a1的首地址给了栈内存基本变量"int[] a2;"吗?


2007-10-07 05:45
Eastsun
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:32
帖 子:802
专家分:0
注 册:2006-12-14
收藏
得分:0 
看起来楼主是从刚C/C++转过来的

My BlogClick Me
2007-10-07 11:52
batwyx
Rank: 1
等 级:新手上路
威 望:1
帖 子:88
专家分:0
注 册:2007-4-16
收藏
得分:0 
回复:(Eastsun)看起来楼主是从刚C/C++转过来的

怎么讲?


2007-10-07 12:00
时空之蕊
Rank: 2
等 级:新手上路
威 望:3
帖 子:691
专家分:0
注 册:2004-10-31
收藏
得分:0 
以下是引用baby69yy2000在2007-10-7 5:45:03的发言:

有些问题还迷糊呢!
当创建了"int[] a1 = { 1, 2, 3, 4, 5 };",是分配在堆内存里面吗?
a2 = a1;是把堆内存里面int[] a1的首地址给了栈内存基本变量"int[] a2;"吗?

在java里面非值类型就是引用类型,引用类型变量里面存储的是一个真实对象的引用,而不是就是那个真实对象,确实可以理解类比于c的指针,不过理解为c++的引用更加合适!
不过非初学者就应该理解引用就是指向堆里面的一个真实对象,
例外情况对于"abc"这样的常量字符串却不是在堆中分配的


我渴望掌控时空的核心——用最先进的技术,打造无比美丽的世界!
2007-10-07 12:05
baby69yy2000
Rank: 1
等 级:新手上路
帖 子:67
专家分:0
注 册:2007-4-5
收藏
得分:0 
int[] a1 = { 1, 2, 3, 4, 5 };它分配在栈内存里面吧

2007-10-07 20:27
hwoarangzk
Rank: 4
来 自:冰封王座
等 级:贵宾
威 望:12
帖 子:1894
专家分:0
注 册:2007-7-17
收藏
得分:0 
a1和a2指向同一个数组,所以如果你改变a1,那么a2也被改变了

I'm here, as always...
2007-10-08 11:14
qazwsx123456
Rank: 1
等 级:新手上路
帖 子:71
专家分:0
注 册:2007-6-29
收藏
得分:0 
用a2=a1的形式复制只是把a1的引用地址传给了a2!改变a1就等于改变了a2了!6是由a2[4]++即(a1[4]++)得到的!

飞的最高的鹰靠的不是翅膀而是坚定的信念!!!
2007-10-09 11:49
快速回复:[求助]数组问题!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017031 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved