Java keele elemente
Kommentaarid
C tüüpi kommentaarid (ei soovitata)
/* Mitu
rida
kommentaare */
Erikujulised kommentaarid (javadoc)
/**
*
* @author Jaanus Pöial
* @version 1.00, 03 Mar 1999
*/
C++ tüüpi kommentaarid (eelistatud)
// rea lõpuni kommentaar
//=================================
// Selliseid eraldamisi hea teha
//=================================
Tüübid ja väärtused
Algtüübid (ingl.k. primitive types)
-
byte - 8-bitine täisarv vahemikus -128 kuni
127. Näit. (byte)31, (byte)0x1f, (byte)037
-
short - 16-bitine täisarv vahemikus -32768
kuni 32767. Näit. (short)255, (short)0xff, (short)0377
-
int - 32-bitine täisarv vahemikus -2147483648
kuni 2147483647. Näit. -25, 0x84ed1, 0265475,
1234567890
-
long - 64-bitine täisarv vahemikus -9223372036854775808
kuni 9223372036854775807. Näit. 12L, -0xfcd45dL,
03451207564302L
-
float - 32-bitine ujupunktarv ligikaudses vahemikus
-3,4x1038 kuni
3,4x1038
seitsme tüvekohaga. Näit. -5.4F, 32e+17F, 0.5e-6F
-
double - 64-bitine ujupunktarv ligikaudses vahemikus
-1,7x10308
kuni 1,7x10308
15 tüvekohaga. Näit. 8.3, -5e-100
-
char - 16-bitine Unicode sümbol. Näit.
'a',
'\n',
\u00ff
-
boolean - tõeväärtustüüp
võimalike väärtustega true ja false.
Tühitüüp
void - tagastustüüp meetoditele, mis
väärtust ei tagasta.
Sõned
Keeles Java on sõned (ingl.k. string) "tõelised"
objektid, mis kuuluvad klassi java.lang.String. Näit. "See
on sõne", "Kaks\nrida". Selle klassi olulisteks isendimeetoditeks
on compareTo(), equals(),
length(), concat(),
toString(),
indexOf(),
substring(),
replace(),
trim(),
jpt. ning klassimeetodiks
valueOf()(vt. API kirjeldus).
Kui on tarvis tegelda programselt muutuvate sõnedega,
on soovitav kasutada klassi java.lang.StringBuffer ja selle meetodeid
append(),
insert(),
toString(),
jne.
Mähisklassid (ingl.k. wrapper classes)
Kuuluvad paketti java.lang ja on kasutusel siis,
kui algtüüpi väärtust on tarvis käsitleda objektina
ning mitmesuguste tüübiteisenduste juures.
-
Byte
-
Short
-
Integer
-
Long
-
Float
-
Double
-
Char
-
Boolean
Näit.
Integer intObjekt = new Integer(245);
int o = intObjekt.intValue();//245
String s = String.valueOf(o);//"245"
Integer teineObjekt = Integer.valueOf(s);
Objektitüüp ja liidesetüüp, massiivid
Klassi või liidese nimi on keeles Java kasutusel
ka tüübi määrajana. Näit. String s,
Object
o, java.awt.Frame raam. Universaalne konstant null
näitab objekti puudumist.
Viitamiseks parasjagu töödeldavale objektile
meetodi tekstis kasutatakse objekti nimena võtmesõna this,
kui soovitakse viidata ülemklassi meetodile või üledefineeritud
muutujale, siis võtmesõna super.
Massiivitüübid moodustavad "tavaliste" tüüpidega
paralleelse hierarhia (seejuures on massiiv samuti "tõeline" objekt
klassi java.lang.Object alluvuses).
Näit. int [30] massiiv;
Object[] objektiMassiiv = new Object [100];
String[][] soneMaatriks;
Massiivi mõõtmed on fikseeritud (vt. klassi
Vector,
kui on tarvis dünaamilise pikkusega massiivi), aga näit. kahemõõtmelise
massiivi iga rida saab olla erineva fikseeritud pikkusega. Indeksid algavad
nullist. Avalik isendimuutuja length annab massiivi elementide
arvu.
Avaldis
Piiritlejad (modifikaatorid)
Klasside ja liideste piiritlejad
-
piiritlejate puudumisel on klassid ja liidesed nähtavad
oma paketi piires
-
public - klassid ja liidesed on nähtavad kõikjal
-
abstract - klass võib sisaldada abstraktseid
meetodeid, isendite loomine ei ole võimalik, liideste puhul kehtib
vaikimisi
-
final - klassi ei saa spetsialiseerida (tuletada
alamklasse). Näit. String on niisugune klass
Muutujate ja meetodite piiritlejad
-
piiritlejate puudumisel on muutujad ja meetodid kõigis
sama paketi klassides kättesaadavad ja päranduvad kõigisse
alamklassidesse, mis paiknevad samas paketis
-
public - muutujad ja meetodid on kättesaadavad
kõikjal ja päranduvad sama klassi alamklassidesse
-
protected - muutujad ja meetodid on kättesaadavad
kõigis sama paketi klassides ja päranduvad sama klassi alamklassidesse
-
private - muutujad ja meetodid pole kättesaadavad
üheski teises klassis ega pärandu ühessegi alamklassi
-
abstract - meetodi sisu pole määratud,
see tuleb määrata (üle katta) pärimisel
-
final - muutuja on konstant (selle nimi on soovitav
kirjutada ainult suurtähtedega), meetod ei ole üle kaetav
-
native - meetodi sisu on programmeeritud mingis
muus keeles/keskkonnas
-
static - klassimuutujad ja klassimeetodid (pole
üle kaetavad)
-
synchronized - meetod lukustab töödeldava
objekti (this) teiste lõimede eest
Laused (direktiivid)
Blokk, tühidirektiiv ja märgendatud direktiiv
{ [kirjeldused ja direktiivid] }
Bloki sulgude paigutamisel/treppimisel on soovitused
iga erijuhu jaoks, mida tuleks jälgida
;
identifikaator: direktiiv
Avaldisdirektiiv
avaldis;
Naasmisdirektiiv
return [avaldis];
Tingimusdirektiiv
if (tingimus) direktiiv;
if (tingimus) direktiiv1; else direktiiv2;
Kombineerimine ja treppimine
if (tingimus) {
direktiivid ... ;
} else if (tingimus2) {
direktiivid2 ... ;
} else {
direktiivid3 ... ;
}
Eelkontrolliga tsüklidirektiiv
while (tingimus) direktiiv;
while (jätkamistingimus) {
direktiivid ... ;
}
Järelkontrolliga tsüklidirektiiv
do direktiiv while (tingimus);
do
direktiivid...;
while (jätkamistingimus);
Üldtsüklidirektiiv
for (eeltegevused; jätkamistingimus;
sammu_järeltegevused)
direktiiv;
for (int i = 0, j = 10; i < j; i++, j--) {
System.out.println ("i=" + i + "; j=" + j);
}
Katkestusdirektiiv
break [märgend];
Soovitatakse kasutada ainult lülitidirektiivi harudes
Jätkamisdirektiiv
continue [märgend];
Ei soovitata üldse kasutada
Lülitidirektiiv
switch (intavaldis) {
case avaldis1:
direktiivid1;
case avaldis2:
direktiivid2;
...
default:
direktiivid;
}
Haru lõppedes minnakse vaikimisi järgmisesse
harusse (kumulatiivne efekt), seega tuleks haru lõpus üldiselt
kasutada katkestusdirektiivi
Erindiseade direktiiv
Sünkroondirektiiv
synchronized (osuti) blokk;
Katsendidirektiiv
try {
direktiivid...;
}
catch (Erinditüüp1 muutuja) {
direktiivid1...;
}
...
catch (Erinditüüp_n muutuja) {
direktiivid_n...;
}
finally {
direktiivid...;
}
Spetsiifilisemad erindid enne