Класи-обгортки

Типи даних і винятки в Java

Jim White

Java Developer

8 примітивів Java

8 примітивів Java — це базові типи даних, з яких будується вся інформація.

Типи даних і винятки в Java

Класи-обгортки

  • Кожен примітив має відповідний клас-обгортку
primitive Wrapper Class
byte Byte
short Short
int Integer
long Long
float Float
double Double
boolean Boolean
char Character

Класи-обгортки дозволяють поводитися з примітивами як з об'єктами. Класи-обгортки — це підкласи Object.

Типи даних і винятки в Java

Обгортання примітивів

  • Екземпляри класу-обгортки зберігають один примітив
    • Приклад: Integer зберігає одне примітивне значення int

Об'єкти-обгортки містять примітив як своє значення

Типи даних і винятки в Java

Деталі про обгортки

  • Класи-обгортки мають додаткові поля та методи
    • Поля (наприклад, максимальне значення) про тип
    • Методи для роботи з обгорнутим примітивом
  • Класи-обгортки входять до базової мови
    • Використовуйте їх без import (про імпорти згодом)
Типи даних і винятки в Java

Створення об'єктів-обгорток

  • Присвойте примітив змінній типу обгортки
    • Синтаксис: Wrapper-type variable = primitive-value;
Integer age = 12;
Double cost = 150250.55;
Float interest = 5.5f;
Character grade = 'A';
Boolean isActive = true;
  • Об'єкти-обгортки також можуть не мати значення (null)
Integer age = null;
Типи даних і винятки в Java

Використання об'єктів-обгорток

Integer age = 12;
  • Друкуйте їх
    System.out.println(age);    // Виведе 12
    
  • Отримуйте їхнє примітивне значення
    int x = age.intValue();     // x дорівнює 12
    
  • Виконуйте інші операції з ними
    double z = age.doubleValue();  // z — 12.0
    String y = age.toString();  // y дорівнює "12"
    Integer teenAge = 16;
    int smaller = age.compareTo(teenAge);  // smaller — -1, оскільки 12 < 16
    
Типи даних і винятки в Java

Статичні методи обгорток

  • Класи-обгортки мають статичні методи
  • Використовуються для операцій над пов'язаними примітивами
    int x = Integer.sum(8,12);  // x дорівнює 20
    int y = Integer.remainderUnsigned(102, 10);  // y дорівнює 2
    
  • Використовуються для перетворення між String і примітивом
    int z = Integer.parseInt("123");   // z дорівнює 123;
    boolean ans = Boolean.parseBoolean("false");  // ans — false
    
1 See https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html for more on the Integer wrapper
Типи даних і винятки в Java

Статичні поля обгорток

Приклади статичних полів у класах-обгортках

System.out.println(Integer.MAX_VALUE); // Максимальне значення для int
System.out.println(Integer.MIN_VALUE); // Мінімальне значення для int
2147483647
-2147483648
System.out.println(Boolean.TRUE); // Відповідає примітивному значенню true
System.out.println(Boolean.FALSE); // Відповідає примітивному значенню false
true
false
Типи даних і винятки в Java

Статичні поля обгорток

Приклади статичних полів у класах-обгортках

System.out.println(Character.SPACE_SEPARATOR);  // Юнікод для звичайного пробілу, як ' '
System.out.println(Character.LINE_SEPARATOR); // Юнікод для переведення рядка, як '\n'
12
13
Типи даних і винятки в Java

Цікаві методи обгорток

Wrapper Method Повертає
Boolean.logicalAnd(boolean a, boolean b) boolean
Boolean.logicalOr(boolean a, boolean b) boolean
Boolean.parseBoolean(String s) boolean
Character.getNumericValue(char ch) Юнікод-ціле значення символу
Character.isDigit(char ch) boolean
Character.isLowerCase(char ch) boolean
Character.isWhitespace(char ch) boolean
Double.parseDouble(String s) double
Double.longValue() значення Double, округлене донизу, як Long
Типи даних і винятки в Java

Навіщо обгортки?

  • Примітиви не мають методів (лише операції)
    • Класи-обгортки надають корисні методи
      int score = Integer.parseInt("8");
      
  • Обгортки дозволяють використовувати примітиви як об'єкти; наприклад, поміщати їх у колекції
    • Про колекції дізнаєтеся в розділі 2.
Типи даних і винятки в Java

Обгортки можуть бути null

  • Обгортки дозволяють екземплярним або статичним змінним типу бути null
    • Примітивні екземплярні чи статичні змінні мають типове значення, якщо не ініціалізовані
int herAge; // age за замовчуванням дорівнює 0
Integer hisAge = null;
if (hisAge != null) {
  // зробіть щось, якщо hisAge не задано
}
Типи даних і винятки в Java

Давайте потренуємось!

Типи даних і винятки в Java

Preparing Video For Download...