gpt4 book ai didi

java - 要比较 UUID,我可以使用 == 还是必须使用 UUID.equals(UUID)?

转载 作者:IT老高 更新时间:2023-10-28 20:57:55 26 4
gpt4 key购买 nike

开始使用 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
}
}

最佳答案

这取决于:你想要哪种类型的平等?

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 只有当 ab 是同一个对象时才为真。如果它们是两个相同的对象,它仍然是错误的。

如果 ab 是相同的 UUID 值,则

a.equals(b) 为真 - 如果它们的两个部分相同。

顺便说一句,这是一个反问。几乎总是你想要.equals== 与 UUID 并没有多大用处。

关于java - 要比较 UUID,我可以使用 == 还是必须使用 UUID.equals(UUID)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23589058/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com