可变对象和不可变对象之间的区别
javaobject oriented programmingprogramming更新于 2025/11/13 15:40:17
在 Java 中,不可变对象的状态在创建后无法修改,但可以引用其他对象。它们在多线程环境中非常有用,因为多个线程无法更改对象的状态,因此不可变对象是线程安全的。不可变对象非常有助于避免时间耦合,并且始终具有失败原子性。
另一方面,可变对象具有可以更改的字段,不可变对象在创建对象后没有可以更改的字段。
| Sr.不。 | Key | 可变对象 | 不可变对象 |
|---|---|---|---|
| 1 | Basic | 我们可以在创建可变对象后修改其状态 | 我们不能在创建对象后修改其状态。 |
| 2 | 线程安全 | 可变对象不是线程安全的 | 不可变对象是线程安全的。 |
| 3 | Final | 可变类不是 final | 要创建不可变对象,请将类设为 final |
| 4 | 示例 | 默认情况下,所有类及其对象本质上都是可变的。 | String 和所有包装类都是不可变的示例类 |
不可变类的示例
public final class ImmutableClass {
private String laptop;
public String getLaptop() {
return laptop;
}
public ImmutableClass(String laptop) {
super();
this.laptop = laptop;
}
}
public class Main {
public static void main(String args[]) {
ImmutableClass immutableClass = new ImmutableClass("Dell");
System.out.println(immutableClass.getLaptop());
}
}
可变类示例
public class MuttableClass {
private String laptop;
public String getLaptop() {
return laptop;
}
public void setLaptop(String laptop) {
this.laptop = laptop;
}
public MuttableClass(String laptop) {
super();
this.laptop = laptop;
}
}
public class Main {
public static void main(String args[]) {
MuttableClass muttableClass = new MuttableClass("Dell");
System.out.println(muttableClass.getLaptop());
muttableClass.setLaptop("IBM");
System.out.println(muttableClass.getLaptop());
}
}
相关文章
有用资源
java 参考教程 - 该教程包含有关 java 的更多信息:https://www.cainiaomax.com/java/
打印
下一节:如何在 Java 9 中使用 JavaFX 实现 JShell?\ ❯❮ 上一节:如何在 Java 9 中的 JShell 中实现 HashMap、LinkedHashMap 和 TreeMap?

