相关疑难解决方法(0)

在Java中使用==运算符来比较包装器对象

我正在阅读Kathy Sierra和Bert Bates的SCJP Java 6,这本书让我很困惑.在页245上,他们在下面说明以下代码.

Integer i1 = 1000;
Integer i2 = 1000;
if(i1 != i2)
System.out.println("different objects");

//Prints output
different objects
Run Code Online (Sandbox Code Playgroud)

然后在下一页上,他们有以下代码

Integer i3 = 10;
Integer i4 = 10;
if(i3 == i4)
System.out.println("same objects");

//Prints output
same objects
Run Code Online (Sandbox Code Playgroud)

我很困惑!当我自己尝试这个时,似乎你不能使用==来比较你使用equals()方法的方式.即使整数变量设置为相同的值(即10),使用==总是给我'假'.我对么?使用==来比较相同的Integer对象(具有相同的值)将始终导致'false'

java integer equals wrapper operator-keyword

51
推荐指数
3
解决办法
2万
查看次数

盒装基元和等价

所以我今天被问到这个问题.

Integer a = 3;
Integer b = 2;
Integer c = 5;
Integer d = a + b;
System.out.println(c == d);
Run Code Online (Sandbox Code Playgroud)

这个节目打印出来的是什么?它返回true.我回答它总会打印出来,因为我理解自动(和自动联合)拳击.我的印象是,分配整数a = 3将创建一个新的整数(3),以便==将评估参考而不是原始值.

有谁能解释一下?

java autoboxing equivalence

15
推荐指数
4
解决办法
4822
查看次数

Java中的按位异或是什么?

鉴于:

public class Spock {
    public static void main(String[] args) {
        Long tail = 2000L;
        Long distance = 1999L;
        Long story = 1000L;
        if ((tail > distance) ^ ((story * 2) == tail)) {
            System.out.print("1");
        }
        if ((distance + 1 != tail) ^ ((story * 2) == distance)) {
            System.out.print("2");
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

为什么这个示例代码不输出任何内容?

java scjp

6
推荐指数
2
解决办法
9923
查看次数