当前位置:首页 > Java

java 如何传址

2026-03-04 04:31:04Java

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

传递对象引用

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

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
    }
}

使用数组

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

java 如何传址

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 等原子类。

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代码 使用文本编辑器或IDE(如IntelliJ IDEA、Eclipse)编写Java源代码,保存为.java文件。例如: public class HelloWorld {…

java如何输入字符串

java如何输入字符串

使用 Scanner 类 在 Java 中,可以通过 java.util.Scanner 类来输入字符串。以下是一个示例代码: import java.util.Scanner; public c…

java如何生成随机数

java如何生成随机数

生成随机数的方法 在Java中生成随机数可以通过多种方式实现,以下是几种常见的方法: 使用Math.random()方法 Math.random()方法返回一个double类型的伪随机数,范围在[0…

如何搭建java环境

如何搭建java环境

下载JDK 访问Oracle官网或OpenJDK官网下载适合操作系统的JDK安装包。推荐选择长期支持版本(如JDK 17或JDK 21)。 安装JDK 运行下载的安装程序,按照向导完成安装。注意…

java版本如何查看

java版本如何查看

查看Java版本的命令行方法 在命令行或终端中运行以下命令可以查看当前安装的Java版本: java -version 输出示例: java version "1.8.0_301" Java(TM…

如何阅读java源码

如何阅读java源码

阅读Java源码的方法 选择合适的源码项目 初学者建议从JDK核心类库(如java.lang、java.util)或知名开源项目(如Spring、Guava)入手。选择文档完善、社区活跃的项目能降低理…