public static void change(Integer num)
{
    在这里给传过来的形参的值加1,如果是基本类型 int,就能直接++,可是包装类不能。
}
public static void main(String[] args)
{
   Integer num=new Integer(3);
   change(num);
   System.out.println(num);//在change方法加1后,打印出来的应该是4。
}我就是想让num指向的3加1,然后再打印出来。包装类好像不能这样做,不知道是不是真的。IntHolder类能这样做,可我想用包装类实现试试。请会的朋友,教教我,就用Integer类。谢谢啦!

解决方案 »

  1.   

    public static Integer change(Integer num)
    {
    //     在这里给传过来的形参的值加1,如果是基本类型 int,就能直接++,可是包装类不能。
    return new Integer(num.intValue()+1);
    }
    public static void main(String[] args)
    {
       Integer num=new Integer(3);
       num=change(num);
       System.out.println(num);//在change方法加1后,打印出来的应该是4。
    }
    Java里面所有的基本类型包装类都是不可变类,也就是初始化之后值是不可更改的,你想要的功能只能用上面的方法达到,其实是需要新建一个不可变类的对象返回
      

  2.   


       public static void main(String[] args) throws Exception {
          System.out.println(change(3));
       }   public static int change(Integer num)
       {
           return ++num;
       }
      

  3.   

    用包装类,在运算的时候会转换为基本数据类型。。所以你这样无论怎么做,他都不会变成4
    public static void main(String[] args) {
    Integer num = 3;
    num = change(num);
    System.out.println(num);
    }

    public static Integer change(Integer num)
    {
       return num = num + 1;
    }
    这样到是可以,不过就失去意义了。。
      

  4.   

    class Change
    {
    public  static void change(Integer num)
    {
        num=num+1;
    System.out.print(num);
     }
    public static void main(String[] args)
    {
       Integer num=new Integer(3);
       change(num);
       
    }
    }   不知道是不是楼主的意思(我也是新手)。
      

  5.   

    值传递和引用传递,你可以这样 
    class Change
    {
    public Integer num;public void setNum(Integer num){
       this.num=num;
    }public  static void change(Integer num)
    {
        this.num=num+1;
        System.out.print(num);
     }
    public static void main(String[] args)
    {
       Integer num=new Integer(3);
       change(num);
       
    }
    }
      

  6.   

    对不起,少写了个东西
    应该是public static Integer num;
    public  static void change(Integer num)
    {
        num=num+1;
      

  7.   

    主函数中没有接受change()方法的返回值
      

  8.   

    楼主,不知道你是不是这个意思,public static void change(Integer num)
    {
        num++;
    }
    public static void main(String[] args)
    {
       Integer num=new Integer(3);
       change(num);
       System.out.println(num);//在change方法加1后,打印出来的应该是4。
    }你的程序原来是这个样子的,但是并没有实现打印出4的结果。
    并不是包装类不能实现++,java在传递参数的时候被大家误解成两种方式——值传递和引用传递,这个理解是错误的(来自java核心技术卷),其实在java中只有值传递,没有引用传递。在实参传给形参的时候都会先把实参的值(引用就是地址值)复制到形参中,然后进行操作,方法结束,形参被销毁。如果想把形参的值带回来,方法就要加返回类型。public static Integer change(Integer num)
    {   
        num++;//自解包
        return num;自打包

    }
    public static void main(String[] args)
    {
       Integer num=new Integer(3);
       num =  change(num);
       System.out.println(num);//在change方法加1后,打印出来的应该是4。
    }
    这样就好了,希望对你有帮助。
      

  9.   

    不知道楼主学过C++没,那里面的引用才是真正意义上的引用,直接把自己传过去了。java中所谓的引用是把实参(引用类型)的地址值复制到形参中,所以形参也指向那个对象了。你无论怎样操作形参,实参的指向是不会改变的