Wrapper-klasser

Datatyper och undantag i Java

Jim White

Java Developer

Javas 8 primitiva typer

Javas 8 primitiva typer är de grundläggande datatyperna som all data byggs upp av.

Datatyper och undantag i Java

Wrapper-klasser

  • Varje primitiv typ har en motsvarande wrapper-klass
Primitiv Wrapper-klass
byte Byte
short Short
int Integer
long Long
float Float
double Double
boolean Boolean
char Character

Wrapper-klasser gör att primitiver kan behandlas som objekt. Wrapper-klasser är underklasser till Object.

Datatyper och undantag i Java

Omsluta primitiver

  • En instans av en wrapper-klass lagrar ett enda primitivt värde
    • Exempel: Integer lagrar ett enda primitivt int-värde

Wrapper-objekt innehåller ett primitivt värde

Datatyper och undantag i Java

Om wrapper-klasser

  • Wrapper-klasser har extra fält och metoder
    • Fält (t.ex. maxvärde) om typen
    • Metoder för att arbeta med den omslutna primitiva typen
  • Wrapper-klasser ingår i basspråket
    • Används utan import (mer om importer senare)
Datatyper och undantag i Java

Skapa wrapper-objekt

  • Tilldela ett primitivt värde till en variabel av wrapper-typ
    • Syntax: Wrapper-typ variabel = primitivt-värde;
Integer age = 12;
Double cost = 150250.55;
Float interest = 5.5f;
Character grade = 'A';
Boolean isActive = true;
  • Wrapper-objekt kan också sakna värde (null)
Integer age = null;
Datatyper och undantag i Java

Använda wrapper-objekt

Integer age = 12;
  • Skriv ut dem
    System.out.println(age);    // Displays 12
    
  • Hämta deras primitiva värde
    int x = age.intValue();     // x is assigned 12
    
  • Utför andra operationer på dem
    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
    
Datatyper och undantag i Java

Statiska metoder i wrapper-klasser

  • Wrapper-klasser har statiska metoder
  • Används för operationer på associerade primitiver
    int x = Integer.sum(8,12);  // x is 20
    int y = Integer.remainderUnsigned(102, 10);  // y is 2
    
  • Används för konvertering mellan String och primitiv
    int z = Integer.parseInt("123");   // z is 123;
    boolean ans = Boolean.parseBoolean("false");  // ans is false
    
1 Se https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html för mer om wrapper-klassen Integer
Datatyper och undantag i Java

Statiska fält i wrapper-klasser

Exempel på statiska fält i wrapper-klasser

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
Datatyper och undantag i Java

Statiska fält i wrapper-klasser

Exempel på statiska fält i wrapper-klasser

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
Datatyper och undantag i Java

Användbara wrapper-metoder

Wrapper-metod Returnerar
Boolean.logicalAnd(boolean a, boolean b) boolean
Boolean.logicalOr(boolean a, boolean b) boolean
Boolean.parseBoolean(String s) boolean
Character.getNumericValue(char ch) Unicode int-värde för tecknet
Character.isDigit(char ch) boolean
Character.isLowerCase(char ch) boolean
Character.isWhitespace(char ch) boolean
Double.parseDouble(String s) double
Double.longValue() Double-värdet, avrundat nedåt, som Long
Datatyper och undantag i Java

Varför wrappers?

  • Primitiver har inga metoder (bara operationer)
    • Wrapper-klasser har användbara metoder
      int score = Integer.parseInt("8");
      
  • Wrappers gör att primitiver kan användas som objekt, t.ex. i en samling
    • Mer om samlingar i kapitel 2.
Datatyper och undantag i Java

Wrappers kan vara null

  • Wrappers gör att instans- eller statiska variabler av typen kan vara null
    • Primitiva instans- eller statiska variabler får ett standardvärde om de inte initieras
int herAge; // age is 0 by default
Integer hisAge = null;
if (hisAge != null) {
  // do something when hisAge is not set
}
Datatyper och undantag i Java

Nu kör vi en övning!

Datatyper och undantag i Java

Preparing Video For Download...