Java本身都是值传递式的调用,对于对象传递的是地址值。给地址值重新赋值等于重新指向,不会影响外层。
而且这里Integer对象也有特殊性。其实现上可能类似
class Integer{
final int value; //一旦赋值,就不能改变。
}
这就出现:调用时传的地址值不能改变外层+对象本身又不能改变。导致这个值没法改变
解决方案很多
1、java风格就是,单个值用返回值。return i; 外面再i=foo();赋值;多个值用数组或对象。
2、传递自己的封装类。class MutableInteger{ int value;}
3、传递专用AtomicInteger原子整型对象
 public static void main(String[] 参数) {        
        AtomicInteger i=new AtomicInteger(40);
        i.intValue();
        System.out.println(i);
    }
    public static void change(AtomicInteger i) {
        i.set(55);
}

 

也可以实现传递后改值 ,
推荐方案1,尽量避免

相关文章:

  • 2021-07-19
  • 2021-10-07
  • 2022-12-23
  • 2022-12-23
  • 2021-10-26
  • 2021-09-30
  • 2021-08-17
  • 2021-12-26
猜你喜欢
  • 2021-04-23
  • 2022-12-23
  • 2021-06-02
  • 2021-05-18
  • 2021-06-26
  • 2021-06-03
  • 2022-01-12
相关资源
相似解决方案