— Привіт, Аміго!

— Привіт, Кім.

— Я розповім тобі про тип Boolean. Це теж обгортка над типом boolean і він простий, як дошка. Небагато спрощений код класу Boolean:

Код
class Boolean
{
 public static final Boolean TRUE = New Boolean (true);
 public static final Boolean FALSE = новий 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 a = true;
Boolean b = true;
Boolean c = false;
boolean d=a;
Boolean a = Boolean.valueOf(true);
Boolean b = Boolean.valueOf(true);
Boolean c = Boolean.valueOf(false);
boolean d = a.booleanValue();

А ось як відбуваються порівняння між типами 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 = новий 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.

— Так, я вже це зрозумів. Тільки не пам'ятаю весь час.