java - 为什么新的 Integer 充当值类型 int?

标签 java

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/

相关文章:

java - 为 ARM 运行 JavaFX 应用程序

java - 如何在 Mac 上使用 Java 获得纳秒分辨率

java - 为什么在向正在运行的进程发送输入时需要添加\n 和\r?

java - 如何在 Java 中旋转屏幕组件?

java - 从 W 参数在主机端生成 ECDSA 公钥

java - GWT 网页复杂度

java - 在java中等待一个线程完成

Java 对象 : value for comparison in if statement, 运算符重载

java - Hibernate Criteria Query ...添加新条件

java - Maven 无法在 Mac OS X 中的 Tomcat 服务器上部署 Web 应用程序