Primitieven in Java, Wrapper Classes

advertisement
Primitieven en Wrapper classes
Primitieven en Wrapper classes ________________________________________________ 1
I.
Primitieven in Java ______________________________________________________ 2
A.
Primitieven.java ______________________________________________________ 2
B.
Maxima.java ________________________________________________________ 3
C.
Primitieven2.java _____________________________________________________ 4
D.
Primitieven3.java _____________________________________________________ 5
E.
Primitieven4.java _____________________________________________________ 6
II.
De bijhorende Wrapper classes __________________________________________ 8
A.
WrapperBoolean.java _________________________________________________ 8
B.
WrapperBoolean.java _________________________________________________ 9
C.
WrapperInt.java ____________________________________________________ 10
D.
WrapperDouble.java_________________________________________________ 11
III.
Packages ___________________________________________________________ 12
I. Primitieven in Java
A. Primitieven.java
Verwijder de verschillende commentaren en probeer te begrijpen waar het fout gaat !
public class Primitieven {
public static void main(String args[]) {
boolean bo = false;
char c = 'A';
//
byte by = 255;
byte by = (byte)127;
//
short s = 32767;
short s = (short)32767;
int i = 2147483647;
//2^31-1
//
long l = 9223372036854775807;
long l = 9223372036854775807l; //2^63-1
//
float f = 1.1;
//
float f = (float)1.1;
float f = 1.1f;
double d = 1.1;
//
double d = 1.1d;
System.out.println("boolean
: " + bo);
System.out.println("char : " + c);
System.out.println("byte : " + by);
System.out.println("short : " + s);
System.out.println("int : " + i);
System.out.println("long : " + l);
System.out.println("float : " + f);
System.out.println("double : " + d);
}
}
B. Maxima.java
Wijzig het onderstaande programma, zodanig dat je de verschillende maxima berekend van de
opgegeven primitieve data-types. Maak hiervoor gebruik van een static methode uit de klasse
Math.
public class Maxima {
public static void main(String args[]) {
byte by = Math.;
// Bereken 2^7-1
short s = Math.;
// Bereken 2^15-1
int i = Math.; // Bereken 2^31-1
long l = Math.; // Bereken 2^63-1, let op de afrondingsfout!
System.out.println("byte : " + by);
System.out.println("short : " + s);
System.out.println("int : " + i);
System.out.println("long : " + l);
}
}
C. Primitieven2.java
Sla de code van Primitieven.java op onder de naam Primitieven2.java en refactor de code om
tot de onderstaande code te komen. Probeer de fouten die de IDE je rapporteert te begrijpen.


Haal eerst de declaratie van de attributen/variabelen uit de main methode.
Plaats de println-opdrachten in een methode die dezelfde naam heeft als de klasse
public class Primitieven2 {
boolean bo = false;
char c = 'A';
//
byte by = 255;
byte by = (byte)127;
//
short s = 32767;
short s = (short)32767;
int i = 2147483647;
//2^31-1
//
long l = 9223372036854775807;
long l = 9223372036854775807l; //2^63-1
//
float f = 1.1;
//
float f = (float)1.1;
float f = 1.1f;
double d = 1.1;
//
double d = 1.1d;
public Primitieven2() {
System.out.println("boolean
: " + bo);
System.out.println("char : " + c);
System.out.println("byte : " + by);
System.out.println("short : " + s);
System.out.println("int : " + i);
System.out.println("long : " + l);
System.out.println("float : " + f);
System.out.println("double : " + d);
}
}
public static void main(String args[]) {
Primitieven2 primitieven2 = new Primitieven2();
}
D. Primitieven3.java
We kunnen nog iets verder gaan in het refactoren. Ipv. de constructor te gebruiken maken we
twee methodes aan:
 Een methode drukt initialiseert de verschillende attributen, behalve de eerste twee: bo
en c
 bo en c worden geinitialiseerd in de static main, via een referentie naar hun object
 Het afbeelden van de attributen gebeurt in de methode primitievenAfdrukkken.
public class Primitieven3 {
boolean bo;
char c;
byte by;
short s;
int i;
long l;
float f;
double d;
public void primitievenAfdrukkken() {
System.out.println("boolean
: " + bo);
System.out.println("char : " + c);
System.out.println("byte : " + by);
System.out.println("short : " + s);
System.out.println("int : " + i);
System.out.println("long : " + l);
System.out.println("float : " + f);
System.out.println("double : " + d);
}
public void setNumbers() {
by = (byte)127;
s = (short)32767;
i = 2147483647;
//2^31-1
l = 9223372036854775807l; //2^63-1
f = 1.1f;
d = 1.1;
}
public static void main(String args[]) {
Primitieven3 p = new Primitieven3();
p.bo = false;
p.c = 'A';
}
}
p.setNumbers();
p.primitievenAfdrukkken();
E. Primitieven4.java
De variabelen bo en c worden niet met de methode setNumbers geinitialiseerd. Genereer via
de IDE getters en setters voor deze 2 variablen en roep ze aan in de methode main ipv. De
code uit Primitieven3.java
public class Primitieven4 {
boolean bo;
char c;
byte by;
short s;
int i;
long l;
float f;
double d;
/**
* @return Returns the bo.
*/
public boolean isBo() {
return bo;
}
/**
* @param bo The bo to set.
*/
public void setBo(boolean bo) {
this.bo = bo;
}
/**
* @return Returns the c.
*/
public char getC() {
return c;
}
/**
* @param c The c to set.
*/
public void setC(char c) {
this.c = c;
}
/**
* Druk alle primitieve an
*/
public void PrimitievenAfdrukkken() {
System.out.println("boolean : " + bo);
System.out.println("char : " + c);
System.out.println("byte : " + by);
System.out.println("short : " + s);
System.out.println("int : " + i);
System.out.println("long : " + l);
System.out.println("float : " + f);
System.out.println("double : " + d);
}
/**
* Geef alle numeriek primitieven een waarde
*/
public void setNumbers() {
by = (byte)127;
s = (short)32767;
i = 2147483647;
//2^31-1
l = 9223372036854775807l; //2^63-1
f = 1.1f;
d = 1.1;
}
public static void main(String args[]) {
Primitieven4 p = new Primitieven4();
p.setBo(false);
p.setC('A');
p.setNumbers();
p.PrimitievenAfdrukkken();
}
}
II. De bijhorende Wrapper classes
A. WrapperBoolean.java
public class WrapperBoolean {
public static void main(String args[]) {
Boolean wBo;
boolean bo = false;
wBo = new Boolean(bo);
System.out.println(wBo);
System.out.println(wBo.toString());
System.out.println(Boolean.toString(wBo.booleanValue()));
}
}
wBo = Boolean.TRUE;
System.out.println(wBo);
bo = wBo.booleanValue();
System.out.println(bo);
B. WrapperBoolean.java
public class WrapperChar {
public static void main(String args[]) {
Character wC;
char c = 'A';
wC = new Character(c);
System.out.println(wC);
System.out.println(wC.toString());
System.out.println(Character.toString(wC.charValue()));
System.out.println(Character.toLowerCase(wC.charValue()));
c = (char)65;
System.out.println(c);
c = (char)90;
System.out.println(c);
System.out.println(Character.toLowerCase((char)90));
System.out.println((int)Character.toLowerCase((char)90));
c = (char)122;
System.out.println(c);
c = (char)122-25;
System.out.println(c);
}
}
C. WrapperInt.java
public class WrapperInt {
public static void main(String args[]) {
Integer wI;
int i = 153;
wI = new Integer(i);
System.out.println(wI);
System.out.println(wI.toString());
System.out.println(Integer.toString(wI.intValue()));
System.out.println(Integer.MIN_VALUE);
System.out.println(Integer.MAX_VALUE);
String geheelGetal = "136";
i = Integer.parseInt(geheelGetal);
System.out.println(i);
}
}
wI = new Integer((new Integer(5)).intValue() + (new Integer(7)).intValue());
System.out.println(wI);
D. WrapperDouble.java
Maak als oefening een nieuwe java-klasse aan die twee primitieve floats in hun wrapperklasse stopt (=boxing). Ze er terug uit haalt (=unboxing) en samentelt. Het resultaat stop je
opnieuw in een Float-object dat je daarna afbeeld via de toString()-methode in een
System.out.println(). Roep deze methode evt. impliciet aan.
public class WrapperDouble {
public static void main(String args[]) {
Double wD;
double d = 153;
wD = new Double(d);
System.out.println(wD);
System.out.println(wD.toString());
System.out.println(Double.toString(wD.doubleValue()));
System.out.println(Double.MIN_VALUE);
System.out.println(Double.MAX_VALUE);
String geheelGetal = "136";
d = Double.parseDouble(geheelGetal);
System.out.println(d);
wD = new Double((new Double(5)).intValue() + (new Double(7)).intValue());
System.out.println(wD);
wD = new Double((new Double(5.1)).doubleValue() + (new
Double(7.6)).doubleValue());
System.out.println(wD);
}
}
III.Packages
De bovenstaande oefeningen staan waarschijnlijk in het default package.
Maak een package c02R aan en versleep deze oefeningen hier naar toe.
Kijk welke wijzigingen er zich in de code voordoen?
Download