考虑两个调用静态工厂方法 valueOf 的 Integer 类型的引用,如下所示:-
Integer a = Integer.valueOf("10");
Integer b = Integer.valueOf("10");
考虑到 Integer 是不可变的,是否可以使用 == 而不是使用 equals 方法比较 a 和 b。我猜 valueOf 方法确保只创建一个值为 10 的 Integer 实例,并且为每个创建的值为 10 的 Integer 返回对该实例的引用。
一般来说,是否可以比较使用 == 而不是 equals 调用相同静态工厂方法创建的不可变类的两个引用?
编辑: Integer 类仅用作示例。我知道如果使用 == 进行比较,最多 127 的整数将返回 true。我需要知道的是,当我创建自己的不可变类时,例如使用方法 create() 的 MyImmutable,该方法将确保不会创建重复的 MyImmutable 对象,如果我比较使用 create 方法创建的 2 个 MyImmutable 引用是否可以使用 == 而不是等于。