Klasy opakowujące

Typy danych i wyjątki w Javie

Jim White

Java Developer

8 prymitywów Javy

8 prymitywów Javy to podstawowe typy danych, z których zbudowane są wszystkie dane.

Typy danych i wyjątki w Javie

Klasy opakowujące

  • Każdy typ prymitywny ma odpowiadającą mu klasę opakowującą
Prymityw Klasa opakowująca
byte Byte
short Short
int Integer
long Long
float Float
double Double
boolean Boolean
char Character

Klasy opakowujące umożliwiają traktowanie prymitywów jak obiektów. Są podklasami klasy Object.

Typy danych i wyjątki w Javie

Opakowywanie prymitywów

  • Instancje klasy opakowującej przechowują jeden prymityw
    • Przykład: Integer przechowuje pojedynczą wartość prymitywną int

Obiekty opakowujące zawierają prymityw jako swoją wartość

Typy danych i wyjątki w Javie

Szczegóły klas opakowujących

  • Klasy opakowujące posiadają dodatkowe pola i metody
    • Pola (np. wartość maksymalna) dotyczące typu
    • Metody do pracy z opakowanym prymitywem
  • Klasy opakowujące są częścią języka
    • Używane bez import (więcej o importach później)
Typy danych i wyjątki w Javie

Tworzenie obiektów opakowujących

  • Przypisanie prymitywu do zmiennej typu opakowującego
    • Składnia: Wrapper-type variable = primitive-value;
Integer age = 12;
Double cost = 150250.55;
Float interest = 5.5f;
Character grade = 'A';
Boolean isActive = true;
  • Obiekty opakowujące mogą nie mieć wartości (null)
Integer age = null;
Typy danych i wyjątki w Javie

Używanie obiektów opakowujących

Integer age = 12;
  • Wyświetlanie
    System.out.println(age);    // Displays 12
    
  • Pobieranie wartości prymitywnej
    int x = age.intValue();     // x is assigned 12
    
  • Wykonywanie innych operacji
    double z = age.doubleValue();  //z is 12.0
    String y = age.toString();  // y is assigned "12"
    Integer teenAge = 16;
    int smaller = age.compareTo(teenAge);  // smaller is -1 since 12 < 16
    
Typy danych i wyjątki w Javie

Statyczne metody klas opakowujących

  • Klasy opakowujące posiadają metody statyczne
  • Służą do operacji na powiązanych prymitywach
    int x = Integer.sum(8,12);  // x is 20
    int y = Integer.remainderUnsigned(102, 10);  // y is 2
    
  • Służą do konwersji między String a prymitywem
    int z = Integer.parseInt("123");   // z is 123;
    boolean ans = Boolean.parseBoolean("false");  // ans is false
    
1 See https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html for more on the Integer wrapper
Typy danych i wyjątki w Javie

Statyczne pola klas opakowujących

Przykładowe pola statyczne klas opakowujących

System.out.println(Integer.MAX_VALUE); // Maximum value an int can have
System.out.println(Integer.MIN_VALUE); // Minimum value an int can have
2147483647
-2147483648
System.out.println(Boolean.TRUE); // Corresponding to the primitive value of true
System.out.println(Boolean.FALSE); // Corresponding to the primitive value of false
true
false
Typy danych i wyjątki w Javie

Statyczne pola klas opakowujących

Przykładowe pola statyczne klas opakowujących

System.out.println(Character.SPACE_SEPARATOR);  // Unicode for the regular space like ' '
System.out.println(Character.LINE_SEPARATOR); // Unicode for line return like '\n'
12
13
Typy danych i wyjątki w Javie

Przydatne metody klas opakowujących

Metoda opakowująca Zwraca
Boolean.logicalAnd(boolean a, boolean b) boolean
Boolean.logicalOr(boolean a, boolean b) boolean
Boolean.parseBoolean(String s) boolean
Character.getNumericValue(char ch) Wartość Unicode int znaku
Character.isDigit(char ch) boolean
Character.isLowerCase(char ch) boolean
Character.isWhitespace(char ch) boolean
Double.parseDouble(String s) double
Double.longValue() Wartość Double zaokrąglona w dół jako Long
Typy danych i wyjątki w Javie

Po co klasy opakowujące?

  • Prymitywy nie mają metod (tylko operacje)
    • Klasy opakowujące dostarczają przydatnych metod
      int score = Integer.parseInt("8");
      
  • Klasy opakowujące umożliwiają używanie prymitywów jako obiektów, np. w kolekcjach
    • Kolekcje omówione są w rozdziale 2.
Typy danych i wyjątki w Javie

Klasy opakowujące mogą być null

  • Klasy opakowujące pozwalają na wartość null dla pól instancyjnych i statycznych
    • Pola prymitywne mają wartość domyślną, gdy nie są zainicjalizowane
int herAge; // age is 0 by default
Integer hisAge = null;
if (hisAge != null) {
  // do something when hisAge is not set
}
Typy danych i wyjątki w Javie

Czas na ćwiczenia!

Typy danych i wyjątki w Javie

Preparing Video For Download...