De gegevenstypen in Java

Getallen en rekenen

In Java kunnen tijdelijke waarde voor getallen worden opgeslagen in een variabele. Een variabele is een primitieve gegevenstype, waarvan de naam is opgegeven bij de declaratie.

Getallen

Variabelen

Expressies en statements


Primitieve gegevenstypen

In het dagelijks leven werken we met verschillende gegevenstypen, bijv. hele en gebroken getallen. Elk gegevenstype heeft zijn kenmerken. Hele getallen bijvoorbeeld kunnen zekere waarden aannemen en bepaalde bewerkingen ondergaan. Veronderstel dat x een geheel getal is. Dan is de toekenning x = 2 wel, maar de toekenning x = 12,6 niet toegestaan.

Java kent de onderstaande getalstypen voor gehele, gebroken getallen boolean en karakter.

  • naam
grootte in bits minimale t/m maximale waarde
  • byte
8-bit -128 t/m
+127
  • short
16-bit -32.768 t/m
32.767
  • int
32-bit -2.147.483.648 t/m
+2.147.483.747
  • long
64-bit - 9.223.372.036.854.775.808 t/m
9.223.372.036.854.775.808
  • float
32-bit
IEEE 754
-3,40292347E+38 t/m
+3,40292347E+38
  • double
64-bit
IEEE 754
-1,79769313486231570E+308 t/m +1,79769313486231570E+308
  • char
16-bit Unicode '\u0000 t/m
'/uFFFF
  • boolean
vlag true of false

Constante getalswaarden

Integers

Constante waarde voor integers kunnen een decimale, octale, hexadecimale vorm en een long formaat aannemen.

In principe kunnen constante waarden aan byte, short en int worden toegekend mits de waarde binnen dit formaat past. In andere gevallen moet een expliciete typecast toegepast worden, waardoor bij de conversie informatie verloren kan gaan.

Gebroken getallen

Gebroken getallen kunnen een decimale punt bevatten en eindigen met een exponent, maar het is beide niet verplicht.

3
3.
3.1
.31E1
31.0E-1

Constante waarden van gebroken getallen zijn van het type double. Als ze eindigen met een F of f dan zijn ze van het type float. B.v. 18.3F. Als een gebroken eindigt met een D of d dan is het een double, maar dit is overbodig.

Een constante van het type double kan niet worden toegewezen aan een float ook al valt de waarde binnen die van een float .De onderstaande expressie is fout:

float f = 3.1;  // FOUT
float f = 3.1F; // GOED

Karakters

Karakters zijn getallen die letters vertegenwoordigen. Karakter worden gecodeerd volgens het Unicode karakterset. De oude bekende ASCII karakterset is daar een subset van.

Karakters staan tussen enkele aanhalingstekens 'A'. Dit geldt voor ieder Unicode teken. Enkele tekens kunnen met zgn escape karakters worden weergegeven. Deze zijn

\n	newline		volgende regel
\t	tab		de tab
\b	backspace	één karakter terug
\r	return 	terug
\f	form feed	nieuwe bladzijde
\\	back slash	de backslash zelf
\'	single quote	enkele aanhalingsteken
\"	double quote	dubbele aanhalingsteken
\ddd			een ascii karakter weergegeven met 3 of minder octale getallen
\udddd			een Unicode karakter weergegeven met 4 hexadecimale getallen

Strings

Een tekst begint en eindigt met een dubbele aanhalingsteken (") B.v. "Dit is een tekst". De string wordt opgeslagen in een String klasse

Declareren van een variabel

Een declaratie bestaat uit het noemen van een naam, voorafgegaan door een gegevenstype en afgesloten met een puntkomma.

int getal;

Hierboven wordt een variabele getal gedeclareerd van het gegevenstype int. Vanaf de zinsnede van de declaratie en verder is de naam van de variabele te gebruiken. Voorafgaande aan de declaratie is de naam dus niet bekend.

De compiler weet nu hoeveel ruimte voor de variabele getal in het geheugen moet worden gereserveerd. De Java compiler reserveert voor een integer 4 bytes, 32 bits.

Als we meer dan één variabele van het type int nodig hebben, bijv. getalX en getalY dan kunnen we die op de volgende drie manieren declareren

	int getalX; 		//vergeet de punt-komma niet
	int getalY; 
 
	int getalX, getalY; 
 
	int getalX, 		// Let op: er staat een komma
	    getalY; 

De naam van een variabele

getal is de naam van een variabele. Namen, of identifiers, worden in Java voor verschillende doelen gebruikt, o.a. voor het aanduiden van variabelen en methoden. Kenmerken van een identifier zijn:

Naamgeving conventie in Java

Probeer variabelen aan te duiden met een naam die zo goed mogelijk de functie van de variabele weergeeft. Namen als winst en verlies zijn veelzeggender dan w en v. Maar aan de andere kant gebruik geen overdreven lange namen, waardoor het correct overschrijven van die namen een probleem wordt. Hoewel de Java programmeurs er zelf ook wat van kunnen; neem nou de klassenaam ArrayIndexOutOfBoundsException, maar je weet wel direct wat er bedoeld wordt.

Begin namen van variabelen bij voorkeur met kleine letters (klassenamen met een hoofdletter). Als een identifier bestaat uit een samentrekking van twee namen schrijf de beginletters van de tweede en eventueel daaropvolgende namen als hoofdletters. Bijv.

	idCode, 
	telefNr
	xCoord 

Dit is de manier die in de java bibliotheken consequent wordt toegepast. Dit geldt ook voor de namen van methoden.

Initialiseren van een variabele

Een variabele kan een beginwaarde krijgen bij de declaratie

int teller = 0;
char kar = 'A';
boolean vlag = false;

Standaard initialisatie
Wordt een variabele niet geinitieerd dan geeft de java compiler standaard een waarde. Dit geldt alleen als het een datamember van een klasse of een element in een array betreft. De lokale variabele van een methode worden niet geinitieerd. Dit moet de programmeur dus doen.

Dat standaard initialisatie waarden zijn

boolean 
false
byte, short, int, long 
0
float
0.0f
double
0.0
char
'/u0000'
object referentie
null

De levensduur van een variabele

Een variabele kan alleen binnen een klasse of binnen een methode gedeclareerd worden. Een variabele mag op elke willekeurige plaats gedeclareerd worden. Een variabele bestaat vanaf het moment van declareren totdat de levensduur van de klasse of methode is afgelopen. De levensduur wordt ook wel de scoop genoemd. De scoop van een variabel is het programmablok waarin de variabele toegankelijk is. Er zijn drie plaatsen waar variabelen voorkomen:

declaratie van constanten

In Java kan een variabele een constante waarde krijgen, die in het verdere programma niet meer veranderd kan worden.

final int aantal = 12;

De waarde mag ook later dan bij de declaratie worden vastgelegd mits het voor het eerste gebruik van deze variabele is

final int totaal; 
...// een stuk programma
totaal = 10; // dit mag
totaal = 12; // dit mag niet meer

De wrapper klassen

De standaard gegevenstype zijn voorzien van een zogenaamde wrapper klasse. In deze wrapper klasse staan:

int Integer
byte Byte
short Short
long Long
float Float
double Double
boolean Boolean
char Character

Maximale en minimale waarden

Alle standaard gegevenstypen hebben een maximale waarde. Deze waarde staat in de wrapper klasse van dit type. Bijvoorbeeld de maximale waarden van een int staat in de Integer klasse.

int
Integer.MAX_VALUE
IntegerMIN_VALUE
double 
Double.MAX_VALUE
Double.MIN_VALUE
byte
Byte.MAX_VALUE
Byte.MIN_VALUE
char
Character.MAX_VALUE
Character.MIN_VALUE

De waarde van pi = 3.14 staat in Math.PI en e is Math.E

Expressies en statements

De uitdrukking lengte * breedte is een expressie. Alle zinvolle combinaties van constanten, variabelen, operatoren en functie-aanroepen noemen we expressies. Volgt na een expressie een punt-komma dan is het een statement. Voorbeelden van expressies zijn:

x 
a + b 
c = a + b 
a*b + b/(d -c) 
e > x

Voorbeelden van statements zijn:

x = 3;
z= a + b ;
c = methode(a);

Prioriteit en associatie

operator type
( ) haakjes
[] . (parameters) x++ x-- postfix
++x --x +x -x unary
new (type) creatie of typecast
* / % vermenigvuldigen delen
+ - optellen aftrekken
<< >> <<< schuiven
< > >= <= instanceof relationeel
== != gelijkheid
& ^ | bitwise AND, XOR en OR
&& logische AND
|| logische OR
?: conditioneel
= += -= *= /= %= >>= <<= >>>= &= ^= |= toewijzing

Alle operatoren associeren van links naar rechts dus a * b / c komt overeen met (a * b) / c. De enige uitzondering vormen de toewijzings operatoren. Met als gevolg dat a = b = c hetzelfde is als a = (b = c).

Expressie worden altijd van links naar rechts geëvalueerd. In het onderstaande voorbeeld wordt x[2] gelijk aan 0. Eerst wordt de expressie x[a] uitgevoerd en daarna het = -teken. Het = -teken associeert van rechts naar links, dus wordt gelezen als x[a] = (a = 0);

a = 2;
x[a] = a = 0;

Scheidingstekens

Om programma's goed leesbaar te maken mogen we in de broncode als scheidingstekens spaties en/of tabs en/of newline gebruiken. Scheidingstekens (whitespaces) mogen overal in een programma worden gebruikt, maar niet in namen en gereserveerde woorden. Dus som1 = a + b is wel, maar som 1 = a + b is niet toegestaan (spatie tussen som en 1). Een spatie na een komma en punt-komma en tussen identifiers en operatoren kan een programma beter leesbaar maken.

copyright ® 1998 Little World