当前位置:首页 > Java

java 方法如何传递

2026-03-03 13:45:38Java

方法参数传递机制

在Java中,方法参数的传递方式分为两种:值传递(Pass by Value)和引用传递(Pass by Reference)。但严格来说,Java仅支持值传递,即使是对象类型,传递的也是引用的副本。

基本数据类型的值传递

基本数据类型(如intdoublechar等)在方法调用时,传递的是实际值的副本。方法内部对参数的修改不会影响原始变量。

public class Main {
    public static void modifyValue(int num) {
        num = 20;
    }
    public static void main(String[] args) {
        int x = 10;
        modifyValue(x);
        System.out.println(x); // 输出 10(未改变)
    }
}

对象类型的引用传递(值传递的引用副本)

对象类型(如数组、类实例)传递的是引用的副本,方法内部可以通过引用修改对象的属性,但重新赋值不会影响原始引用。

public class Main {
    static void modifyArray(int[] arr) {
        arr[0] = 99; // 修改数组元素会影响原始对象
        arr = new int[]{100, 200}; // 重新赋值不影响原始引用
    }
    public static void main(String[] args) {
        int[] myArray = {1, 2, 3};
        modifyArray(myArray);
        System.out.println(myArray[0]); // 输出 99
    }
}

不可变对象(如String)的特殊情况

String等不可变对象在方法内重新赋值时,会创建新对象,原始引用不受影响。

java 方法如何传递

public class Main {
    static void modifyString(String str) {
        str = "New Value"; // 不影响原始引用
    }
    public static void main(String[] args) {
        String s = "Original";
        modifyString(s);
        System.out.println(s); // 输出 "Original"
    }
}

总结

  • 基本类型:传递值的副本,方法内修改不影响原始变量。
  • 对象类型:传递引用的副本,方法内可修改对象属性,但重新赋值不影响原始引用。
  • 不可变对象(如String):重新赋值会创建新对象,原始引用不变。

标签: 方法java
分享给朋友:

相关文章

java如何运行

java如何运行

运行Java程序的基本方法 Java程序的运行需要经过编写、编译和执行三个主要阶段。以下是具体步骤: 编写Java源代码 创建一个以.java为后缀的文件,例如HelloWorld.java。文件内…

java如何调用接口

java如何调用接口

调用接口的基本方法 在Java中调用接口通常涉及实现接口或使用接口引用对象。以下是几种常见场景的示例: 定义接口 public interface MyInterface { void d…

如何自学java

如何自学java

选择合适的学习资源 从官方文档开始,Oracle提供的Java官方教程(Java Tutorials)是权威且免费的学习资料。在线平台如Codecademy、Coursera或Udemy提供互动式课程…

如何编译java文件

如何编译java文件

安装JDK 确保系统已安装Java Development Kit(JDK)。可通过命令行输入 javac -version 和 java -version 验证。若未安装,需从Oracle或Open…

java如何删除文件

java如何删除文件

删除文件的基本方法 使用 java.io.File 类的 delete() 方法可以删除文件。如果文件存在且删除成功,返回 true;否则返回 false。 import java.io…

java如何连接数据库

java如何连接数据库

Java连接数据库的方法 Java连接数据库通常使用JDBC(Java Database Connectivity)技术,以下是具体步骤和示例代码。 加载数据库驱动 在连接数据库之前,需要加载对应的…