"Ciao, Amico!"

"Ciao Kim."

"Ti parlerò del tipo booleano. È un wrapper per il tipo booleano ed è facile come una torta. Ecco un codice semplificato dalla classe booleana:"

Codice
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);
 }
}

"In altre parole, la classe è semplicemente un wrapper per il tipo booleano."

"Sì. E ha due costanti (VERO e FALSO), che sono controparti dei valori primitivi vero e falso."

"Gestisce anche l'autoboxing come un campione:"

Codice Cosa succede davvero
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();

"Ed ecco come funzionano i confronti tra tipi booleani e booleani:"

Esempio
boolean a = true;
Boolean b = true; //Will be equal to Boolean.TRUE
Boolean c = true; //Will be equal to Boolean.TRUE

a == b; //true (comparison based on primitive value)
a == c; //true (comparison based on primitive value)
b == c; //true (comparison based on references, but they point to the same object)

"Se hai davvero bisogno di creare un oggetto booleano indipendente, devi crearlo in modo esplicito:

Esempio
boolean a = true;
Boolean b = new Boolean(true); //A new Boolean object
Boolean c = true; //Will be equal to Boolean.TRUE

a == b; //true (comparison based on primitive value)
a == c; //true (comparison based on primitive value)
b == c; //false (comparison based on references; they point to different objects)

"Penso che per ora sia tutto."

"Sì, le tue lezioni sono più brevi di quelle di Bilaabo."

"Quindi, posso usare Boolean all'interno di una condizione if?"

Boolean less = (2 < 3);
if (less)
{
….
}

"Sì, ma non dimenticare che se less è nullo, verrà generata un'eccezione NullPointerException."

"Sì, l'ho già capito. È solo che non me lo tengo sempre in testa."