回 帖 发 新 帖 刷新版面

主题:【速度!】问个简单问题,回答就给分。

一个简单问题,为什么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个回复)

沙发


Integer 是Java中的wrapper classes 
中为Int类型的数据提供的一个[b][i]类[/i][/b]!非私有变量,所以说不能进行加减,否则,程序即使运行也是错误的!

板凳


变量i不是公有变量(即全局变量),所以其它的方法不能访问呀,你可以看看书呀,JAVA类与方法那一章,讲得挺清楚的。

3 楼

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 楼

这样应该能明白些吧,你调用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 楼


Integer不能参与加减等数学运算

6 楼

我认为:
      private static void add(Integer i)

  
      这个private不是白写的!!
   
      在public里不会改变 i 的值 。。

7 楼

[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 楼

[quote]
Integer不能参与加减等数学运算[/quote]

Wrong! WRONG!!

9 楼

感谢justforfun626

同时感谢其他某些人,让我在遇到问题的时候开始习惯打开JDK文档

10 楼

Speak it out in English, improve our skills bit by bit.
lol[em5]

我来回复

您尚未登录,请登录后再回复。点此登录或注册