在 Java 中,“不可变(Immutable)”通常指对象创建后其状态(字段值)不能被修改,例如 String、Integer、LocalDateTime 等。下面从优点和缺点两方面说明。
String s = "hello";
多个线程读 s 永远不会出问题。
LocalDate d = LocalDate.now();
LocalDate next = d.plusDays(1); // d 不变
Map<String, Integer> map = new HashMap<>();
String、Integer 可利用缓存Integer a = 127;
Integer b = 127;
System.out.println(a == b); // true(缓存范围内)
String s = "";
for (int i = 0; i < 10000; i++) {
s += i; // 产生大量 String 对象
}
✅ 应该用 StringBuilder
User u = new User("Tom", 18);
User u2 = new User(u.getName(), u.getAge() + 1);
(可用 Builder / record 缓解)
List<String> list = List.of("a", "b"); // 真不可变
StringInteger、Long)BigDecimalLocalDate / LocalDateTimeList.of() / Set.of()如果你愿意,我也可以:
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。