Что произойдет при попытке запустить/откомпилировать следующий программный код?

1.import static java.lang.System.*;
2.public class A {
3.    public static void main(String[] args){
4.        B b1 = new B("one", "two");
5.        B b2 = new B("one", "two");
6.        B b3 = b1;
7.        out.println(b1 == b2);
8.        out.println(b1 == b3);
9.        out.println(b2 == b3);
10.       out.println(b1.equals(b2));
11.       out.println(b1.equals(b3));
12.       out.println(b3.equals(b2));
13.  }
14.}

class B {
    public B(String prop1, String prop2){
        this.prop1 = prop1;
        this.prop2 = prop2;
    }
    String prop1 = null;
    String prop2 = null;
}
Explanation
Оператор == проверяет, находятся ли объекты в одной и той же области памяти. Тогда, логично, что строки 7 и 9 возвращают false. Так как b3 и b1 указывают на один и тот же объект, то 8-я строка возвращает true.
Для строк 10, 11 и 12 выполняются аналогичные операции, так как метод equals() не переопределен в классе B.

Следи за CodeGalaxy

Мобильное приложение Beta

Get it on Google Play
Обратная Связь
Продолжайте изучать
тесты по Java
Cosmo
Зарегистрируйся сейчас
или Подпишись на будущие тесты