
- Boolean b = true; - явным присваиванием
- Boolean b = new Boolean("true"); через конструктор
- Boolean b = Boolean.valueOf(true); через статический метод
Оболочки Byte, Short, Integer и Long хранят в себе объекты со значениями от -128 до 127. Character хранит в себе значения от 0 до 127.
Метод valueOf() возвращает один и тот же объект всем ссылкам, которые хотят получить значение от -128 до 127 (от 0 до 127 для Character).
Float и Double не хранят никаких значений.
Для Boolean значения true и false доступны напрямую как Boolean.TRUE и Boolean.FALSE
int i = new Integer(12);
int i2 = new Integer(12);
System.out.println(i == i2); // true, т.к. это примитивы
Integer I = new Integer(12);
Integer I2 = new Integer(12);
System.out.println(I == I2); // false, ссылки на разные объекты
Integer I3 = Integer.valueOf(12);
Integer I4 = Integer.valueOf(12);
System.out.println(I3 == I4); // true, ссылаются на одно и то же число (<128)
Integer I5 = Integer.valueOf(128);
Integer I6 = Integer.valueOf(128);
System.out.println(I5 == I6); // false, ссылаются на разные объекты (>=128)
int i7 = Integer.valueOf(128);
int i8 = Integer.valueOf(128);
System.out.println(i7 == i8); // true, т.к. это примитивы
Boolean b = Boolean.TRUE;
System.out.println(b); // true
Byte bt = new Byte(10); // ошибка компиляции, конструктор Byte не принимает int
Byte bt = new Byte((byte) 10); // выполнили явное приведение
Byte bts = new Byte("10"); // можно и так
Нельзя сравнивать объекты типа оболочек, если они являются объектами разных классов. Использование "==" приведет к ошибке компиляции, а метод equals() вернёт false даже если значения объектов будут одинаковыми.
Integer ob1 = 100;
Short ob2 = 100;
System.out.println(ob1.equals(ob2)); // false
System.out.println(ob1 == ob2)); // ошибка компиляции