当前位置:首页 > Java

java 方法如何传递

2026-02-05 02:31:19Java

Java 方法参数传递机制

Java 中方法参数的传递方式分为两种:值传递(Pass by Value)和引用传递(Pass by Reference)。但严格来说,Java 只有值传递,即传递的是变量的副本。

java 方法如何传递

基本数据类型的值传递

对于基本数据类型(如 intdoublechar 等),方法接收的是变量的值副本,修改副本不会影响原始变量。

java 方法如何传递

public class Main {
    public static void modifyValue(int num) {
        num = 100;  // 修改的是副本,不影响原始变量
    }

    public static void main(String[] args) {
        int x = 10;
        modifyValue(x);
        System.out.println(x);  // 输出 10
    }
}

引用类型的值传递

对于引用类型(如对象、数组),方法接收的是对象引用的副本,副本和原始引用指向同一个对象,因此修改对象会影响原始数据。

public class Main {
    public static void modifyArray(int[] arr) {
        arr[0] = 100;  // 修改的是引用指向的对象
    }

    public static void main(String[] args) {
        int[] numbers = {1, 2, 3};
        modifyArray(numbers);
        System.out.println(numbers[0]);  // 输出 100
    }
}

不可变对象的影响

对于 StringInteger 等不可变对象,修改方法内的引用副本不会影响原始引用。

public class Main {
    public static void modifyString(String str) {
        str = "New Value";  // 修改的是副本引用,不影响原始引用
    }

    public static void main(String[] args) {
        String s = "Original";
        modifyString(s);
        System.out.println(s);  // 输出 "Original"
    }
}

总结

  • 基本类型:传递的是值的副本,方法内修改不影响原始变量。
  • 引用类型:传递的是引用的副本,方法内修改对象会影响原始数据,但修改引用本身(如重新赋值)不影响原始引用。
  • 不可变对象:类似于基本类型,方法内修改引用不影响原始引用。

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

相关文章

vue实现懒加载的方法

vue实现懒加载的方法

Vue 实现懒加载的方法 路由懒加载 通过动态导入语法拆分路由组件,减少初始加载时间。适用于 Vue Router 配置: const routes = [ { path: '/home…

java如何创建文件

java如何创建文件

使用 File 类创建文件 通过 File 类的 createNewFile() 方法创建文件。此方法返回布尔值,表示文件是否成功创建。 import java.io.File; import j…

如何用java

如何用java

用Java实现基础功能 Java是一种广泛使用的编程语言,适用于开发各种应用程序。以下是几个常见功能的实现方法。 打印"Hello, World!" public class HelloWorld…

java如何使用

java如何使用

Java 基本使用方法 Java 是一种广泛使用的编程语言,适用于开发各种类型的应用程序。以下是 Java 的基本使用方法,包括环境配置、语法基础和常用操作。 安装 Java 开发环境 下载并安装…

如何运行java

如何运行java

运行Java程序的方法 安装Java开发工具包(JDK) 确保系统已安装JDK。可通过命令行输入 java -version 检查是否安装。若未安装,需从Oracle官网或OpenJDK下载并配置环境…

如何删除java

如何删除java

卸载 Java 的步骤 Windows 系统: 打开控制面板,选择“程序和功能”或“卸载程序”,在列表中找到 Java 相关条目(如“Java Runtime Environment”或“Java D…