当前位置:首页 > Java

java 如何传址

2026-03-04 04:31:04Java

在 Java 中,所有的参数传递都是按值传递(pass by value),但可以通过传递对象的引用来实现类似“传址”的效果。以下是具体方法:

传递对象引用

Java 中对象变量存储的是对象的引用(内存地址的副本)。当传递对象作为参数时,实际上是传递引用的副本,但通过这个副本仍然可以修改原对象的状态。

class MyObject {
    int value;
}

public class Main {
    static void modifyObject(MyObject obj) {
        obj.value = 100; // 修改原对象的状态
    }

    public static void main(String[] args) {
        MyObject obj = new MyObject();
        obj.value = 50;
        modifyObject(obj);
        System.out.println(obj.value); // 输出 100
    }
}

使用数组

数组是对象,传递数组时传递的是数组的引用,可以通过数组修改元素。

public class Main {
    static void modifyArray(int[] arr) {
        arr[0] = 99; // 修改数组元素
    }

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

使用包装类

对于基本类型,可以通过包装类(如 IntegerDouble)实现类似传址的效果,但需要注意包装类是不可变的,需要通过其他方式修改值。

class MutableInt {
    int value;
}

public class Main {
    static void modifyValue(MutableInt wrapper) {
        wrapper.value = 42;
    }

    public static void main(String[] args) {
        MutableInt wrapper = new MutableInt();
        wrapper.value = 10;
        modifyValue(wrapper);
        System.out.println(wrapper.value); // 输出 42
    }
}

使用 Atomic

对于需要线程安全的场景,可以使用 AtomicIntegerAtomicReference 等原子类。

java 如何传址

import java.util.concurrent.atomic.AtomicInteger;

public class Main {
    static void modifyAtomic(AtomicInteger atomic) {
        atomic.set(200);
    }

    public static void main(String[] args) {
        AtomicInteger atomicInt = new AtomicInteger(50);
        modifyAtomic(atomicInt);
        System.out.println(atomicInt.get()); // 输出 200
    }
}

注意事项

  • Java 中无法直接传递基本类型的地址(如 C 语言的 & 操作符)。
  • 传递对象引用时,不能修改引用本身(即让引用指向新对象),但可以修改对象的状态。
  • 如果需要修改引用本身,可以通过返回新对象或使用容器类(如 AtomicReference)实现。

标签: java
分享给朋友:

相关文章

如何运行java程序

如何运行java程序

编写Java代码 创建一个以.java为扩展名的文件,例如HelloWorld.java。文件内容需包含一个类定义,类名必须与文件名一致。例如: public class HelloWorld {…

如何运行java文件

如何运行java文件

运行Java文件的方法 确保已安装Java Development Kit (JDK),可通过命令行输入java -version和javac -version验证安装。 编写Java代码并保存为.…

java如何输出数组

java如何输出数组

输出数组的方法 在Java中,输出数组内容有多种方式,具体取决于数组类型和输出格式需求。以下是几种常见的方法: 使用Arrays.toString()方法 适用于一维数组,直接调用Arrays.to…

如何编写java

如何编写java

编写Java程序的基本步骤 安装Java开发工具包(JDK),确保系统环境变量配置正确。可以从Oracle官网下载最新版本的JDK并进行安装。 选择一个合适的集成开发环境(IDE),如Eclipse…

java如何连接mysql

java如何连接mysql

连接 MySQL 数据库的基本步骤 添加 MySQL 驱动依赖 在项目中引入 MySQL 的 JDBC 驱动。如果使用 Maven,在 pom.xml 中添加以下依赖: <dependency…

如何精通java

如何精通java

理解Java核心概念 Java的基础知识包括数据类型、变量、运算符、控制流语句(如循环和条件判断)、数组以及面向对象编程(OOP)的核心概念(类、对象、继承、多态、封装)。熟练掌握这些内容是后续学习的…