— Привет, Амиго!
— Привет, Ким.
— Я тебе расскажу про тип Boolean. Это тоже «обертка» над типом boolean и он прост, как доска. Немного упрощенный код класса Boolean:
class Boolean
{
public static final Boolean TRUE = new Boolean(true);
public static final Boolean FALSE = new Boolean(false);
private final boolean value;
public Boolean(boolean value)
{
this.value = value;
}
public boolean booleanValue()
{
return value;
}
public static Boolean valueOf(boolean b)
{
return (b ? TRUE : FALSE);
}
}
— Т.е. класс просто является «оберткой» над типом boolean.
— Ага. А еще у него есть две константы TRUE и FALSE, которые являются аналогами примитивных значений true/false.
С автобоксингом у него тоже все просто:
Код | Что происходит на самом деле |
---|---|
|
|
А вот как происходят сравнения между типами boolean и Boolean:
boolean a = true;
Boolean b = true; //будет равен Boolean.TRUE
Boolean c = true; //будет равен Boolean.TRUE
a == b; //true (сравниваются как примитивы по значению)
a == c; //true (сравниваются как примитивы по значению)
b == c; //true (сравниваются по ссылке, но указывают на один и тот же объект)
Если очень нужно создать независимый объект Boolean, то надо создать его явно:
boolean a = true;
Boolean b = new Boolean(true); //новый объект Boolean
Boolean c = true; //будет равен Boolean.TRUE
a == b; //true (сравниваются как примитивы по значению)
a == c; //true (сравниваются как примитивы по значению)
b == c; //false (сравниваются по ссылке, указывают на различные объекты)
Собственно на этом все.
— Да, твои лекции покороче, чем у Билаабо.
А можно использовать Boolean внутри if ?
Boolean less = (2<3);
if (less)
{
….
}
— Да, только не забудь, что если less будет null, то выкинется исключение NullPointer.
— Да, я это уже понял. Только не держу все время в голове.
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ