主题:【速度!】问个简单问题,回答就给分。
zhouxin0706
[专家分:160] 发布于 2007-10-19 20:45:00
一个简单问题,为什么Integer的值不能被改变?
Integer是一个对象,应该是传的地址,但是为什么不能改?
public class Test {
private static void add(Integer i) {
i += 1;
}
public static void main(String[] args) {
Integer i = 0;
add(i);
System.out.print(i);
}
}
回复列表 (共18个回复)
沙发
mqzqlsc [专家分:10] 发布于 2007-10-19 21:08:00
Integer 是Java中的wrapper classes
中为Int类型的数据提供的一个[b][i]类[/i][/b]!非私有变量,所以说不能进行加减,否则,程序即使运行也是错误的!
板凳
cuigu521 [专家分:10] 发布于 2007-10-21 12:26:00
变量i不是公有变量(即全局变量),所以其它的方法不能访问呀,你可以看看书呀,JAVA类与方法那一章,讲得挺清楚的。
3 楼
justforfun626 [专家分:18460] 发布于 2007-10-21 13:32:00
All answers above are WRONG!
Integer class is immutable, when the value is set, it cannot be changed. That is why!!!
Read here:
[url]http://www.javaworld.com/javaworld/javaqa/2000-06/01-qa-0602-immutable.html[/url]
4 楼
sjhlovejava [专家分:1690] 发布于 2007-10-21 14:27:00
这样应该能明白些吧,你调用add(i)方法时,加的是add方法中的i,而不是入口方法main中的i
public class Test6 {
private static Integer j;
private static void add(Integer i) {
i += 1;
System.out.println(i);
j = i;
}
public static void main(String[] args) {
Integer i = 0;
add(i);
System.out.println(i);
System.out.println(j);
}
}
5 楼
菡萏2008 [专家分:70] 发布于 2007-10-21 18:26:00
Integer不能参与加减等数学运算
6 楼
t-bug [专家分:10] 发布于 2007-10-21 20:23:00
我认为:
private static void add(Integer i)
这个private不是白写的!!
在public里不会改变 i 的值 。。
7 楼
justforfun626 [专家分:18460] 发布于 2007-10-21 22:40:00
[quote]我认为:
private static void add(Integer i)
这个private不是白写的!!
在public里不会改变 i 的值 。。[/quote]
Haha, change it to public/private/protected, see what happens?
If you don't know something, please at least test what you are going to say before publish your WRONG statement.
8 楼
justforfun626 [专家分:18460] 发布于 2007-10-21 22:41:00
[quote]
Integer不能参与加减等数学运算[/quote]
Wrong! WRONG!!
9 楼
zhouxin0706 [专家分:160] 发布于 2007-10-22 00:26:00
感谢justforfun626
同时感谢其他某些人,让我在遇到问题的时候开始习惯打开JDK文档
10 楼
zhouxin0706 [专家分:160] 发布于 2007-10-22 00:30:00
Speak it out in English, improve our skills bit by bit.
lol[em5]
我来回复