public static void main(String []args){
Integer a = new Integer(9);
d(a);
System.out.print(a) ;
}
public static void d(int z){
z=z+2;
}
或者假设我写
public static void main(String []args){
int a = 9;
d(a);
System.out.print(a) ;
}
public static void d(int z){
z=z+2;
}
但两者的输出相同:9
。谁能详细解释一下为什么?
最佳答案
因为 JAVA 是按值传递而不是按引用传递。
让我们这样理解,
您的 main 函数有一个局部变量 z,其作用域仅限于 main
并且你的 d 函数有另一个局部变量 z,其范围仅限于 d
因此,在您的 d 函数中,您基本上是在创建一个新的整数文字 11 并将其放入局部变量 z,其范围仅限于 d 函数,而不是 main 的变量 z。
关于java - 为什么新的 Integer 充当值类型 int?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51473164/