如何比较一个长整型值是否等于另一个长整型值

13
long a = 1111;
Long b = 1113;
    
if (a == b) {
    System.out.println("Equals");
} else {
    System.out.println("not equals");
}

上面的代码输出"equals",这是错误的。

如何检查一个long值是否等于一个Long值?


8
这段代码无法编译。第二行需要一个长整型值,但你提供的是一个整型。应该使用 Long b = 1113L; 的形式。即便如此,它也会输出正确的结果。 - Vincent Ramdhanie
7个回答

28

首先,你的代码未编译。第一行

Long b = 1113;

是错误的。你应该这样写:

Long b = 1113L;

我解决了编译问题后,代码打印出"not equals(不相等)"。


10

它按预期工作:

public static void main(String[] args) {
    long a = 1111;
    Long b = 1113l;

    if (a == b) {
        System.out.println("Equals");
    } else {
        System.out.println("not equals");
    }
}

打印出not equals

使用compareTo()来比较Long类型的值,因为有些情况下使用==会失效,因为Long类型的值有可能被缓存。


1
你是对的,但在这种情况下并不重要。自动装箱会完成它的工作。 - AlexR
3
@AlexR 自动装箱和拆箱。如果自动装箱 1234LLong.valueOf(1234L) 可能是不相等的。与引用一样,如果 bnull,它会出错。 (哦,大写 L 后缀更可取,因为很难将其误认为是 1。) - Tom Hawtin - tackline
2
long类型不能使用==进行比较。理论上,您需要使用一个简单的技巧,如将一个数减去另一个数并查看相关差异。 - hephestos
1
你说不能用 == 运算符比较 long 类型的数据是什么意思?for (int i = 1; i <= 1_000_000; i++) { final long l1 = (long) (Math.random() * 100_000_000); final long l2 = new Long(l1); System.out.println((l2 == l1) + "\t" + (l2 - l1)); } 这段代码可以正常工作... - Matthew Wise

7
long a = 1111;
Long b = new Long(1113);

System.out.println(b.equals(a) ? "equal" : "different");
System.out.println((long) b == a ? "equal" : "different");

3

Long是一个对象,而long是一种原始类型。为了进行比较,您可以从Long类型中获取原始类型:

public static void main(String[] args) {
    long a = 1111;
    Long b = 1113;
    if ((b != null) && (a == b.longValue())) {
        System.out.println("Equals");
    } else {
        System.out.println("not equals");
    }
}

1

1
你可以使用equals方法来比较Object值。 不匹配的示例:
Long first = 12345L, second = 123L;
System.out.println(first.equals(second));

这将返回false

匹配示例

Long first = 12345L, second = 12345L;
System.out.println(first.equals(second));

这将返回true


0

第一个选项:

    public static void main(String[] args) {
        long a = 1111;
        Long b = 1113L;
        if (a == b.longValue()) {
            System.out.println("Equals");
        } else {
            System.out.println("not equals");
        }
    }

第二个选项:

    public static void main(String[] args) {
        long a = 1111;
        Long b = 1113L;
        if (a == b) {
            System.out.println("Equals");
        } else {
            System.out.println("not equals");
        }
    }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接