Автоупаковка/распаковка значений Boolean и Character


Как описывалось ранее, Java также поддерживает оболочки для boolean и char — соответственно Boolean и Character. Автоупаковка/распаковка также применима к этим типам. Например, рассмотрим следующую программу:

// Автоупаковка/распаковка Boolean и Character.
class AutoBox5 {
public static void main(String args[]) {
// Автоупаковка/распаковка boolean.
Boolean b = true;
// Ниже, b автоматически распаковывается
// при использовании в условном выражении if.
if(b) System.out.println("b равна true");
// Автоупаковка/распаковка char.
Character ch = 'x'; // упаковка char
char ch2 = ch; // распаковка char
System.out.println("ch2 равна " + ch2) ;
}
}

Результат этой программы:

b равна true
ch2 равна x

Наиболее важный момент в этой программе, о котором стоит упомянуть — это автоматическая распаковка b внутри условного выражения if. Как вы должны помнить, условное выражение, которое управляет if, должно при вычислении возвращать boolean. Благодаря автораспаковке, значение boolean, содержащееся в b, автоматически распаковывается при вычислении условного выражения. То есть с появлением автоупаковки/распаковки стало возможным применять объекты Boolean для управления в операторе if.

Благодаря автоупаковке/распаковке, объект Boolean теперь также может применяться для управления всеми циклическими конструкциями Java. Когда Boolean применяется в качестве условного выражения в while, for или do/while, оно автоматически распаковывается в свой boolean-эквивалент. Например, вот новый допустимый код:

Boolean b; // ...
while(b) { // ...