long a = 1111;
Long b = 1113;
if (a == b) {
System.out.println("Equals");
} else {
System.out.println("not equals");
}
上面的代码输出"equals"
,这是错误的。
如何检查一个long
值是否等于一个Long
值?
long a = 1111;
Long b = 1113;
if (a == b) {
System.out.println("Equals");
} else {
System.out.println("not equals");
}
上面的代码输出"equals"
,这是错误的。
如何检查一个long
值是否等于一个Long
值?
首先,你的代码未编译。第一行
Long b = 1113;
是错误的。你应该这样写:
Long b = 1113L;
我解决了编译问题后,代码打印出"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");
}
}
打印出not equals
。
使用compareTo()
来比较Long类型的值,因为有些情况下使用==
会失效,因为Long类型的值有可能被缓存。
1234L
和 Long.valueOf(1234L)
可能是不相等的。与引用一样,如果 b
是 null
,它会出错。 (哦,大写 L 后缀更可取,因为很难将其误认为是 1。) - Tom Hawtin - tacklinefor (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 Wiselong a = 1111;
Long b = new Long(1113);
System.out.println(b.equals(a) ? "equal" : "different");
System.out.println((long) b == a ? "equal" : "different");
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");
}
}
这些实用程序包括空安全或空容忍方法
Long id1 = null;
Long id2 = 0l;
Objects.equals(id1, id2));
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
。
第一个选项:
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");
}
}