比较java中的两个原始长变量

Dra*_*gan 8 java compare long-integer

标题非常明显.我正在从C#转向Java.我有一个对象和一个返回其ID的getter方法.我想比较两个相同类型的对象的ID,并检查它们的id值是否相等.

尝试:

obj.getId() == obj1.getId();
Run Code Online (Sandbox Code Playgroud)
Long id1 = obj.getId();
Long id2 = obj1.getId();

assertTrue(id1.equals(id2))
Run Code Online (Sandbox Code Playgroud)
assertTrue(id1== id2)
Run Code Online (Sandbox Code Playgroud)

Boh*_*ian 22

在java中:

  • ==运营商告诉你,如果两个操作数是同一个对象(实例).
  • .equals()方法上Long告诉你,如果他们的价值相等.

但你不应该这样做.正确的方法是:

assertEquals(id1, id2);
Run Code Online (Sandbox Code Playgroud)

有了assertEquals(),如果断言失败,错误信息会告诉你这两个值分别为,如expected 2, but was 5


Ano*_*Dev 6

要比较两个原始 long 您可以简单地使用 ==

例子:

long x = 1L;
long y = 1L;

if (x == y) {
 System.out.println("value of x and y are same");
}
Run Code Online (Sandbox Code Playgroud)

要比较两个 Long 对象,可以使用 Long.compare(long x, long y)。这个方法是在java 1.7中添加的。下面是方法的实现:

public static int compare(long x, long y) {
        return (x < y) ? -1 : ((x == y) ? 0 : 1);
}
Run Code Online (Sandbox Code Playgroud)

例子:

Long x = new Long(1);
Long y = new Long(1);
if (Long.compare(x,y) == 0) {
  System.out.println(values of x and y are same);
}
Run Code Online (Sandbox Code Playgroud)