Java 不可变对象是指一旦创建,它的状态就不能被改变的对象。它们是线程安全的,因为他们的状态不会被其他线程改变。这使得不可变对象在多线程应用中非常有用,因为你不必担心其他线程会修改你的对象。
Java 中有几个内建的不可变对象,包括 String、Integer、Long、Double 等。这些都是 Java 的原生数据类型,它们都是 final 的,所以你无法修改它们的值。此外,Java 还有一些内建的不可变集合,如 Collections.unmodifiableList() 和 Collections.unmodifiableSet()。
String str = "Hello World"; str = str + "!"; // 这将创建一个新字符串 "Hello World!" System.out.println(str); // 输出 "Hello World!"
在创建状态后无法更改其状态的对象称为不可变对象。
一个对象不可变的类称为不可变类。
不变的对象可以由程序的不同区域共享而不用担心其状态改变。
不可变对象本质上是线程安全的。
以下代码创建了不可变类的示例。
public class IntWrapper { private final int value; public IntWrapper(int value) { this.value = value; } public int getValue() { return value; } }
这是如何创建IntWrapper类的对象:
IntWrapper wrapper = new IntWrapper(101);
在这一点上,包装器对象保持101,并且没有办法改变它。
因此,IntWrapper类是一个不可变的类,它的对象是不可变的对象。
最好将所有实例变量声明为final,这样Java编译器将在编译期间强制实现不可变性。
Java面向对象设计 -Java内部类类型您可以在类中的任何位置定义内部类,您可以在其中编写Java语句。有三种类型的内部类。内部类的...
Java面向对象设计 -Java枚举方法因为枚举类型实际上是一个类类型,所以我们可以在枚举类型体中声明一切,我们可以在类体中声明它...
Java数据类型教程 -Java字符串编辑修剪字符串我们可以使用trim()方法从字符串中删除所有前导和尾随空格和控制字符。tri ...
JavaFX教程 -JavaFX拖放例子import javafx.application.Application;import javafx.event.EventHandler;import javafx.scene.Gro...
Java 实例 - 获取目录最后修改时间 Java 实例以下实例演示了使用 File 类的 file.lastModified() 方法来获取目录的最后修改时间...