38 lines
1.3 KiB
Markdown
38 lines
1.3 KiB
Markdown
Обертки: `Integer`, `Long`, `Byte`, `Short`, `Float`, `Double`, `Character`, `Boolean`
|
||
Больше памяти и медленнее, но много полезным методов и являются объектами (можно использовать в дженериках)
|
||
## Автоупаковка/автораспаковка
|
||
```Java
|
||
int primitive = 42;
|
||
Integer wrapper;
|
||
|
||
wrapper = primitive; // автоупаковка
|
||
// на самом деле так
|
||
wrapper = Integer.valueOf(primitive);
|
||
|
||
primitive = wrapper + 1; // автораспаковка + сложение
|
||
// на самом деле так
|
||
privmitive = wrapper.intValue() + 1;
|
||
```
|
||
## Тонкость с кешированием
|
||
```Java
|
||
Integer int1 = 42;
|
||
Integer int2 = 42;
|
||
int1==int2; // true
|
||
|
||
int1 = 452;
|
||
int2 = 452;
|
||
int1==int2; // false
|
||
```
|
||
Для интов значения от -128 до 127 - кешируются, поэтому сравнение сработало
|
||
Но лучше всегда через `equals()`, так как работаем с объектами
|
||
## Иерархия
|
||
Все обертки - потомки `Number`
|
||
Методы `Number`:
|
||
- `intValue()`
|
||
- `byteValue()`
|
||
- `shortValue()`
|
||
- `longValue()`
|
||
- `floatValue()`
|
||
- `doubleValue()`
|
||
|
||
Заметка о [[Character]] |