温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

java不可变变量如何定义

发布时间:2026-10-01 19:06:27 来源:亿速云 阅读:90 作者:小樊 栏目:编程语言

在 Java 中,“不可变变量”通常可以从两个层面理解:变量引用不可变 和 对象本身不可变。下面分别说明。


一、变量引用不可变(最常用)

使用 final 关键字修饰变量,表示该变量的引用不能再次指向其他对象。

1. 局部变量

final int x = 10;
// x = 20; // 编译错误

2. 成员变量

public class Person {
    private final String name;

    public Person(String name) {
        this.name = name;
    }
}

3. 静态变量

public static final int MAX_COUNT = 100;

注意:final 只保证引用不变,不保证对象内容不变。

final List<String> list = new ArrayList<>();
list.add("a"); // 合法,对象内容可变
// list = new ArrayList<>(); // 非法

二、对象本身不可变(真正不可变对象)

要让一个对象“不可变”,需要满足:

  1. 类用 final 修饰(防止被继承修改行为)
  2. 所有成员变量用 private final 修饰
  3. 不提供 setter 方法
  4. 不暴露可变对象的引用

示例

public final class ImmutablePoint {
    private final int x;
    private final int y;

    public ImmutablePoint(int x, int y) {
        this.x = x;
        this.y = y;
    }

    public int getX() {
        return x;
    }

    public int getY() {
        return y;
    }
}

三、集合的“不可变”

Java 提供多种方式创建不可变集合:

Java 9+

List<String> list = List.of("a", "b", "c");

Collections 工具类

List<String> list = Collections.unmodifiableList(
    new ArrayList<>(Arrays.asList("a", "b"))
);

四、常见误解

❌ final ≠ 不可变对象
✅ final 只是引用不可变


如果你指的是 String 为什么不可变、常量定义、或 并发中的不可变变量,可以继续问我。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手