刚开始使用java.util.UUID
.我的问题是,如果我有两个UUID变量,比如u1和u2,我想检查它们是否相等,我可以安全地使用表达式u1 == u2
还是必须写u1.equals(u2)
?假设两者都不为空.
顺便说一句,我正在使用它的randomUUID
方法来创建新的UUID值,但我认为这应该不重要.我想知道UUID是唯一的,每个值都可以是单例,然后使用它是安全的u1 == u2
.
void method1(UUID u1, UUID u2) { // I know it is always safe to use equal method if (u1.equals(u2)){ // do something } // is it safe to use == if (u1 == u2) { // do something } }
user253751.. 58
这取决于:你想要哪种平等?
UUID a = new UUID(12345678, 87654321); UUID b = new UUID(12345678, 87654321); UUID c = new UUID(11111111, 22222222); System.out.println(a == a); // returns true System.out.println(a.equals(a)); // returns true System.out.println(a == b); // returns false System.out.println(a.equals(b)); // returns true System.out.println(a == c); // returns false System.out.println(a.equals(c)); // returns false
a == b
只有当a
且b
是同一个对象时才是真的.如果它们是两个相同的对象,它仍然是错误的.
a.equals(b)
如果a
且b
是相同的UUID值,则为true - 如果它们的两个部分相同.