昨天遇到个需要改变integer值的问题,找API发现竟然没有相应的函数
今天随便试了下,才发现可以这样改变,呵呵
看代码:
public class IntegerTest {
    
    public static void change(Integer i)
    {
i = 8;
    }    /**
     * @param args
     */
    public static void main(String[] args) {
Integer a = new Integer(9);
a ++;
System.out.println(a);
change(a);
System.out.println(a);
    }}

解决方案 »

  1.   

    Integet和int之间是JVM自动封装和解封的,这样当然可以了啊.
      

  2.   

        public static void main(String[] args) {
        Integer a = new Integer(999);
        a ++;
        System.out.println(a);
        change(a);
        System.out.println(a);
        }
    结果再看看
      

  3.   

    LZ想说明什么?
    明显没有改变Integer的值啊
      

  4.   

    public static void main(String args[]){
    Integer a = new Integer(9);
    //a++;
    a = a+1;
    System.out.println(a);
    change(a);
    System.out.println(a);
    }

    public static void  change(Integer a){
    a = 8;
    }
      

  5.   

    汗,我的意思是,对于integer可以像int一样进行运算,因为遇到改变integer值的问题,网上的解释是必须重新new个带新值的integer出来
      

  6.   

    在必要的时候JVM会进行自动包装和自动解包装。。
      

  7.   

     
     
    1.
    Interger a=new Interger(3);
    Interger b=new Interger(3);
    System.out.println(a.equals(b))
    输出结果为true
    2.
    Interger a=new Interger(3)
    Interger b=new Interger(3);
    System.out.println(a==b);
    输出结果为false
    3.
    Interger a=3;
    Interger b=3;
    System.out.println(a==b);
    输出结果为:true;
    4.
    Interger a=300;
    Interger b=300;
    System.out.println(a==b);
    输出结果为:false
    Interger 定义的变量范围为0-127,如果超出了范围值为false 
      

  8.   

    Integer本身并不能运行
    这个基本类型的支持类只是重写过了操作符而已
    他改变的只是类内部的值而已还有你没搞清楚引用传递和值传递的区别