java代码为什么是println 10?
我编写了上述代码,并运行output 10。为什么没有改变java代码为什么是println 10?,java,integer,Java,Integer,我编写了上述代码,并运行output 10。为什么没有改变 为什么输出10,请给出详细说明,谢谢!主方法中的方法局部变量b与add()方法中的方法局部变量不同。改变一个不会影响另一个 public class Exa { public static void main(String[] args) { Integer b = new Integer(10); add(b); System.out.println(b.intValue());
为什么输出10,请给出详细说明,谢谢!主方法中的方法局部变量b与
add()
方法中的方法局部变量不同。改变一个不会影响另一个
public class Exa {
public static void main(String[] args) {
Integer b = new Integer(10);
add(b);
System.out.println(b.intValue());
}
public static void add(Integer b){
int i = b.intValue();
i += 3;
b = new Integer(i);
System.out.println("b="+b+",i="+i);
}
}
这里您指的是add(Integer b)
方法中的变量,而不是main方法中的变量
Java总是按值传递。不幸的是,他们决定将对象的位置称为“参考”。当我们传递一个对象的值时,我们传递的是对它的引用。这让初学者感到困惑
(摘自)
该值不会更改,因为您仅在
add
方法中本地分配b
。在Java中,不能更改整数的值,只能更改引用。要产生预期的副作用,您可以将b
包装到对象中。您创建了一个新的整数。当你这样做的时候,你真的期望旧的改变吗?你确定输出不是b=13,i=13然后是10吗?
b = new Integer(i);