Juha
Satu
Taru
Kati

Perheen tarina
Lasten albumi
Sivuston historia

Etusivu

Valid HTML 4.01!
Valid CSS!

Java- opas

Sisällysluettelo

  1. Yleistä
  2. Syntaksi
    • Luokat ja paketit
    • Viittaukset muihin luokkiin
    • Kommentit
    • Näkvyysymääre
    • Muuttujat ja vakiot
    • Konstruktorit
    • Metodit
    • Poikkeukset
    • Ehtorakenteet
    • Primitiivit
    • Toistorakenteet
    • Taulukot
    • Enumeraatiot *
    • Rajapinnat ja abstraktit luokat *
    • Perintä *
    • Kastaus *
    • Tyypittäminen *
    • Ylikuormittaminen *
    • Bittioperaatiot *
    • Sisäkkäiset luokat *
  3. API
    • java.io
    • java.lang
    • java.math
    • java.net
    • java.sql
    • java.text
    • java.util
    • java.util.concurrent
    • java.util.concurrent.locks
    • java.util.jar
    • java.util.regex
Paluu etusivulleni...

Yleistä

Java on:

  • Sun Microsystemsin kehittämä olio-ohjelmointikieli
  • Ohjelmointialusta
  • Käyttöjärjestelmä ja laiteriippumaton
  • Tulkattava kieli
  • Syntaksi lähellä C++:ssaa ja C#:ia
  • Uusin Standard Edition versio Java SE 6
  • Versiosta Java SE 7:sta beetta (1. open source versio)
  • Saatavilla laajennettu Enterprise Edition (myös ilmainen käyttää)
  • Pieniin laitteisiin Micro Edition

Javalla voidaan ohjelmoida:

  • Työasemia
  • Palvelimia
  • Keskustietokoneita
  • PDA-laitteita
  • Sulautettuja järjestelmiä
  • Älykortteja

Javalla voidaan PC-ympäristössä ohjelmoida erityyppisiä sovelluksia:

merkkipohjainen sovellus graaffinen sovellus
Työasema X (Yksi luokka sisältää main- metodin, joka saa String- taulukon parametrina esim.
public static void main(String[] args) { })
X (Swing)
Internet X (Servlet, JSP and JSF) X (Applet)

Sun tarjoaa hyvän oppaan Javan opiskeluun.

Paluu etusivulleni...

Syntaksi

Jokainen Javan käsky lopetetaan joko puolipisteeseen tai kaarisulkuun (Kaarisulku voi olla jollakin seuraavalla rivillä).

Luokat ja paketit

Kaikki Java- koodi kirjoitetaan luokkiin, jotka kuuluvat johonkin pakettiin. Jokaista java luokkaa vastaa java-päätteinen tiedosto ja paketti on hakemisto, jossa on paketin luokat.

Java-luokassa esim. Radio ilmoitetaan ensin paketti esim. package fi.yritys.esimerkki; ja tämä tiedosto tallennetaan fi/yritys/esimerkki-hakemistoon Radio.java nimellä. Paketti määreen jälkeen luokkaan kirjoitetaan luokka määre, joka on tässä public class Radio { }

Viittaukset muihin luokkiin

Luokassa voidaan tarvita luokkia toisista paketista. Näihin viittaminen tehdään package- ja class määritteiden väliin esim. import java.util.Date; viittaa java.util-paketin Date- luokkaan. Viittauksen ansiosta ko. luokkaa voidaan käyttää myöhemmin Radio-luokassa.

Poikkeukset viittauksien käyttöön:

  • java.lang- paketin luokat on käytössä automaattisesti ilman import- lauseita
  • luokkiin voidaan viitata ilman import- määrettä käyttämällä luokan nimen edessä pakettia. Suositellaan käytettäväksi ainoastaan, jos samannimisiä luokkia eri paketeissa (esim. java.sql.Date ja java.util.Date)
  • voidaan tuoda myös paketin luokat (ei suositella) *-operaatiolla esim. import java.util.*;

Kommentit

Kommentteja on kolmenlaisia:

  • rivikommentit // Kauttamerkkien jälkeen rivillä oleva teksti on kommenttia
  • lohkokommentit /* Nämä kommentit voisivat jakautua usealla riville tai niiden perässä voisi olla muutakin kuin kommentteja */
  • Javadoc- kommentit (kommenttien sisällä oma syntaksinsa, jota ei käydä läpi), joita kerätään automaattisesti Javadoc- työkalulla tekniseen dokumentatioon /** Eronna lohkokommenttiin vain kaksi tähteä alussa */

Näkyvyysmääre

Luokkia, metodeja, luokan muuttujia ja olion muuttujien näkyvyyksiä voidaan vaihdella seuraavilla määreillä:
NäkyvyysymääreVaikutus näkyvyyteen
publicNäkyy kaikkialle
protectedNäkyy paketin sisällä ja perintä hierarkiassa
Jätetään näkyvyys määre kirjoittamattaNäkyy paketin sisällä
privateNäkyy vain luokan sisällä

Esimerkki näkyvyysmääreen käytöstä: private Date settingsModified; //Luokan sisällä tieto, koska radion asetuksia viimeksi muutettu

Muuttujat ja vakiot

Muuttujia voi olla luokalla, oliolla tai jonkun lohkon sisällä esim. ehtolauseen, metodin tai toistolauseen

Muuttujan arvosta tehdään vakio final -sanalla. Esim. final Date defaultDate = new Date(-1); Olion muuttujasta tehdään luokan muuttuja static sanalla esim. static final Date defaultDate = new Date(-1);

Konstruktorit

Olion luonnin yhteydessä kutsutaan konstruktoria, joka voidaa jättää myös kirjoittamatta. Konsturktorin oltava samanniminen kuin luokan, jossa se sijaitsee. Esimerkki konstruktorin määrittelystä. public Radio() { /* Toteutus kirjoitetaan kaarisulkeiden sisään */ }. Konstruktori voi saada myös parametrin tai useita esim. public Radio(String manufacturer, String model) { /* Toteutus kirjoitetaan kaarisulkeiden sisään */ }

Metodit

Luokalla ja oliolla voi olla metodeja, jotka palauttavat arvon. Luokan metodit määritellään static- sanalla kuten muuttujissa. Esimerkki olion metodin määrittelystä public void turnOn() { /* Toteutus kirjoitetaan kaarisulkeiden sisään */ }:

Poikkeukset

Virhetilanteet erotetaan koodista poikkeuksien käsittelyllä. Metodit heittävät poikkeuksia, jotka voidaan ottaa kiinni. Poikkeuksia voivat olla ajonaikaisia, jolloin kääntäjä ei pakota käsittelmään niitä. Esimerkki ajonaikaisesta poikkeuksesta on java.lang.NullPointerException, joka ilmoittaa että yritetään kutsua oliota, jota ei ole olemassa.

Esimerkki poikkeuksen määrittelystä (java.lang.IllegalStateExcepion heitetään, jos radio yritetään käynnistää uudestaan): public void turnOn() throws IllegalStateException { /* Toteutus kirjoitetaan kaarisulkeiden sisään */ }

Esimerkki poikkeuksen käsittelystä

	try {
		radio.turnOn();
		//Tryn sisällä olevan koodin suorittaminen lopetetaan ensimmäiseen heitettyyn poikkeukseen
		//Jos radio:n turnOn-metodi heittäsi poikkeuksen ja tässä olisi koodia, sitä ei suoritettaisi
	}
	catch(IllegalStateException e) {
		//Radio on jo päällä
		//Ei tehdä mitään muuta
	}
	catch(RuntimeException e) {
		//Catch lohkoja voi olla useita - yhdessä try:ssä ja enintään yksi niistä suoritetaan
		//Tämä on turha, koska ajonaikaiset poikkeukset lentäisivät jokatapauksessa eteenpäin
		throw e;
	}
	finally {
		//Finally lohko suoritetaan joka tapauksessa lensi poikkeuksia tai ei
	}

Ehtorakenteet

Javassa on kaksi ehtorakennetta:

  • if- else- rakenne
  • switch case- rakenne

Esimerkki if- else rakenne:

	//status on String luokan olio
	//if- else- rakenteessa voi oltava yksi if- lause
	//if- else- rakenteessa voi olla yksi tai useampi if- else lauseita
	//if- else- rakenteessa voi olla yksi else- lause
	if("start".equals(status)) {
		//Ehto voitaisiin kirjoitta myös status.equals("start").
		//Erona olisi, että voidaan kutsua equals -metodia oliolle jota ei ole olemassa ("start"-String on aina olemassa, toisin kuin status- olio)
		//Seurauksena olisi NullPointerException
		//Status olion sisältönä oli "start"
	}
	else if("shutdown".equals(status)) {
		//Status olion sisältönä oli "shutdown", tämä tutkiminen tehdään vain, jos ei ollut "start"
	}
	else if("sleep".equals(status)) {
		//Status olion sisältönä oli "shutdown", tämä tutkiminen tehdään vain, jos ei ollut "start" eikä "shutdown"
	}
	else {
		//Status olion sisältö on tuntematon tai olio on null
		throw new MyRuntimeException("Invalid status: '" + status + "'");
	}

Poikkeukset ehtorakenteen käyttöön:

  • kaarisulut voi jättää (ei suositella) kirjoittamatta, jos sisältönä yksi rivi koodia

Vaikeasti löydettävä virhe on kirjoittaa ylimääräinen puolipiste: esim. if("start").equals(status); {, koska kääntäjä ei herjaa, mutta kaarisulun sisälle mennään aina riippumatta if- ehdosta

Esimerkki switch- case rakenteesta:

	//Kaikki switch case- rakenteet voidaan toteuttaa myös if- else rakenteella
	//switch casessa tutkittavan muuttujan oltava primitiivi, josta on oma kappale
	switch(myInt) {
		case 1:
			//myInt on 1
			//Suoritetaan vain tämä lohko
			break;
		case 2:
			//myInt on 2
			//Suoritetaan tämä ja seuraava lohko, koska ei ole breakkiä lopussa
		case 3:
			//myInt on 2 tai 3
			break;
		default:
			//myInt ei ole 1, 2 tai 3
	}

Primitiivit

Ainoan poikkeuksen Javan olio maisuuteen tekee on muutama primitiivi:
Primitiivi Koko Minimi Maximi
byte 8bit -128 127
short 16bit -32'768 32'767
int 32bit -2'147'483'648 2'147'483'647
long 64bit -9'223'372'036'854'775'808 9'223'372'036'854'775'807
float 32bit - -
double 64bit - -
boolean - - -
char 16bit Unicode - -

Lisätietoja primitiiveistä

Primitiivinen vertaileminen tapahtuu olioista poiketen seuraavilla operatioilla:
Operaatio Selite
== Yhtäsuuri kuin
!= Erisuuri kuin
< pienempi kuin
<= pienempi tai yhtäsuuri kuin
> isompi kuin
>= isompi tai yhtäsuuri kuin

Toistorakenteet

Javassa on kolme toistorakennetta:

  1. for- toistorakenne
  2. while- toistorakenne
  3. do- while- toistorakenne

Kaikilla toistorakenteilla voi tehdä saman asian. For-toistorakenne on käytetyin.

Esimerkki for- toistorakenteesta:

	for(int i = 0; i < 10; i++) {
		//Tämä toistorakenne tehdään kymmenen kertaa
		//Ensimmäisellä kierroksella alustetaan int- muuttuja i nollaksi
		//Joka kierroksella verrataan onko i pienempi kuin 10
		//Joka kierroksella kasvatetaan i:tä yhdellä (i++ voisi olla myös muotoa i += 1 tai i = i + 1)
	}

Esimerkki while- toistorakenteesta:

	int i = 0;
	while(i < 10) {
		i++;
		//Toistorakenne toimii kuten edellinen for-toistorakenne
	}

Esimerkki do while- toistorakenteesta:

	int i = -1; //Huomaa alustus arvo yhden pienempi kuin muista toistorakenteissa
	do {
		i++;
		//Toistorakenne toimii kuten edelliset for- ja while-toistorakenteet
		//Do while- rakenne suoritetaan ainakin kerran, koska ehdon tutkiminen tehdään lohkon suorituksen jälkeen
		//Muissa toistorakenteissa ehto tutkitaan ennen toistorakenteen lohkon suoritusta.
		while(i < 10)
	}

Taulukot

Javassa taulukot määritellään hakasuluilla. Taulukot ovat olioita, joilla on muuttuja lenght, joka kertaa taulukon koon. Kokoa ei voi muuttaa, jos tarvitset muuttaa taulukon kokoa useasti, käytä esim. java.util.List- rajapintaa sekä java.util.ArrayList- luokkaa. Taulukon alkiot saavat oletus sisällön (oliolla null, luku primitiiveillä 0 ja boolean primitiivi false)

Esimerkkejä taulukon käytöstä:

	//Taulukko voidaan alustaa tyhjäksi ilman kokoa: String[] myArray;
	//Taulukko voidaan alustaa tyhjäksi ja tietyn kokoiseksi: String[] myArray = new String[10];
	//Hakasulut voivat olla myös taulukon nimen perässä (ei suositella): String myArray[] = new String[10];
	String[] myArray = {"Matti", "Miina", "Mauri"};

	//Toistorakenne tulostaa ruudulle:
	//Taulukon 1. alkio: Matti
	//Taulukon 2. alkio: Miina
	//Taulukon 3. alkio: Mauri
	for(int i = 0; i < myArray.length; i++) {
		System.out.println("Taulukon " + (i + 1) + ". alkio: " + myArray[i]);
	}

Enumeraatiot *

Ylemmille syntaksi tiedoilla pärjäät jo. Jos haluat, kannattaa myös nämä tähdellä merkityt asiat lukea.

Java 5:ssa mukaan tullut ominaisuus määritellä enumeraatiota omiin tiedostoihin. Esim.

	public enum Day {
		MONDAY, TUESDAY, WEDNESDAY, 
		THURSDAY, FRIDAY, SATURDAY, SUNDAY
	}

Lisätietoja enumeraatioista

Rajapinnat ja abstraktit luokat *

Joskus on tarvetta tehdä yleistyksiä, jolle tehdään useita erilaisia toteutuksia. Rajapinnan kaikki metodi toteutukset ovat tyhjiä. Abstraktissa luokassa osa toteutuksista voi olla valmiina. Hyvä esimerkki tästä tarpeesta on java.lang.Comparable- rajapinta, jolla oliot voidaan järjestyy järkevään järjestykseen listoissa - kaikki oliot toteuttavat samanrajapinnan vaikka niiden toteutus on hyvinkin erilainen esim. ihmiset järjestetään yleensä suku- ja etunimen perusteella kun autot merkin ja mallin perusteella.

Esimerkki rajapinnasta:

	public interface MyVehicle {
		public void drive(); //Ei kaarisulkuja, tyhjä toteutus
	}

	public class Car implements MyVehicle {
		public void drive() {
			//Toteutus olisi moottori käyntiin jne.
		}
	}

	public class Cycle implements MyVehicle {
		public void drive() {
			//Toteutus olisi jalat liikkeelle jne.
		}
	}

Esimerkki abstraktista luokasta:

	public abstract class MyVehicle {
		public void cleanUp() {
			//Toteutus olisi sama kaikille kulkupeleille eli harja käteen ja menoksi.
		}

		public abstract void drive(); //Ei kaarisulkuja, tyhjä toteutus
	}

	public class Car extends MyVehicle {
		public void drive() {
			//Toteutus olisi moottori käyntiin jne.
		}
	}

	public class Cycle extends MyVehicle {
		public void drive() {
			//Toteutus olisi jalat liikkeelle jne.
		}
	}

Perintä *

Luokat voivat periä metodit ja muuttujat toiselta luokalta (jollei perimistä ole estetty luokan final- määreellä). Luokka voi periä vain yhden luokan. Rajapinta voi periä useita rajapintoja. Perintää käytetään helposti liikaa, mutta perusteltuja paikkoja on periä omat poikkeukset.

	public class MyRuntimeException extends RuntimeException {
		public MyRuntimeException(String message) {
			super(message); //Kutsutaan yläluokan konstruktoria, super- määreellä voidaan viitta myös metodeihin ja muuttujiin
		}
	}

Kastaus *

Ylemmän luokan oliossa voi olla aliluokan olio. Aliluokan olion tietoihin (joita ei ole yläluokassa) päästään käsiksi kastaamalla:

	List list = new ArrayList();
	list.add("teksti");
	//Tiedetään, että listassa on String- olio (List- olio palautta Object- olion), joka lähetään eteepäin
	//Jos tarvitsee tutkia olion tyyppiä (harvinaista) se onnistuu instanceof -komennolla
	//Object object = list.get(0);
	//if(object instanceof String) {
	//	Tehdään jotain
	//}
	String text = (String)list.get(0);
	sendText(text);

Tyypittäminen (eng. generics) *

Kastauksessa on ongelma, että kääntäjä ei huomaa virheitä (ClassCastException). Java 1.5:ssä avuksi tuli tiedon tyypittäminen:

	//Listaan ei voida enää lisätä muita Object- olioita kuin String- olioita (sekä sen periviä olioita)
	List<String> list = new ArrayList<String>();
	list.add("teksti");
	String text = list.get(0);
	sendText(text);

Ylikuormittaminen *

Metodilla voi olla useita samannimisiä metodeja, joilla on eri parametrit:

	public void drive() {
		//Ajetaan vain perille
	}

	public void drive(RadioChannel radioChannel) {
		//Ajon lisäksi kuunnellan radiota
		radioChannel.open();
		this.drive();
		radioChannel.close();
	}

	public void drive(Speech speech) {
		//Ajon lisäksi valmistellaan miellessä puhetta
		speech.prepare();
		this.drive();
		speech.pause();
	}

Pieni yksityiskohta: Kääntäjä antaa herjan, jos kutsutaan drive- metodia arvolla joka on aina tyhjä, koska se ei tiedä kuunnellaanko radiota vai valmistellaanko puhetta.

Bittioperaatiot *

Bittioperaatio voidaan tehdä vain primitiivien kokonaisluvuille.
OperaatioEsimerkkiTulos
Vasemmalla siirto4 << 18 (0100 ==> 1000)
Oikealle siirto4 >> 12 (0100 ==> 0010)
AND5 & 31 (0101 & 0011 ==> 0001)
OR5 | 37 (0101 | 0011 ==> 0111)
XOR5 ^ 36 (0101 | 0011 ==> 0110)
Negaatio (byte)~5-6 (00000101 ==> 11111010)

Sisäkkäiset luokat *

Luokkien sisään voidaan määritellä sisäkkäisiä luokkia, joiden käyttöä vältettävä, koska eivät tuota selkeää koodia. Perusteltu käyttökohde on esim. sovelluksen yksikkötestauksessa voidaan toteuttaa esim. konfiguraatio rajapinta palauttamaan halutut konfiguraation arvot.

	public class MyClass {
		private class InnerClass {
			//Sisäluokan näkyvyys määre voi olla muutakin kuin private
		}
	}
Paluu etusivulleni...

API

Javadocin lukeminen on avain Java APIin. Javadoc kannattaa ladata omalle koneelle. Javan API on valtavan kokoinen, joten tässä hieman parhaita paloja, jotka helpottavat asioiden ymmärtämistä.

java.io

RajapintaKuvaus
FileFilterSuodata halutut tiedostot File.listFiles- metodilla
FilenameFilterSuodata halutut tiedoston nimet File.listFiles- metodilla
SerializableMahdollista luokan olion siirtäminen IO:n yli (ei tarvitse toteuttaa)
LuokkaKuvaus
BufferedReaderLue Stringi kerrallaan
ByteArrayInputStreamMuuta String Byte-taulukon kautta input streamiksi
ByteArrayOutputStreamMuuta output stream Byte-taulukon kautta Stringiksi
FileTiedoston / hakemiston metatiedot
InputStreamAbstrakti yläluokka
InputStreamReaderMuuta input stream readeriksi
OutputStreamAbstrakti yläluokka
OutputStreamWriterKirjoita Stringi kerrallaan
RandomAccessFileTiedoston luku & kirjoitus
PoikkeusKuvaus
FileNotFoundExceptionTiedostoa ei löydy
IOExceptionYläluokka IO-yhteyden epäonnistumiselle

java.lang

RajapintaKuvaus
CloneableObjektti kloonattavissa
ComparableLuokan objektit järjestettävissä
IterableObjekti sisältää yhden listan
RunnableObjekti voidaan käynnistää eri säikeessä
LuokkaKuvaus
BooleanPrimitiivin vastine
BytePrimitiivin vastine
CharacterPrimitiivin vastine
ClassLuokan kuvaus, voidaan luoda uusi olioita newInstance- metodilla (=reflection)
ClassLoaderLataa mikä tahansa resurssi (kuva, pdf, jne.) luokkapolusta
DoublePrimitiivin vastine
FloatPrimitiivin vastine
IntegerPrimitiivin vastine
LongPrimitiivin vastine
MathMatemaattisia funktioita mm. sin, cos, tan
ObjectKaikkien luokkien yläluokka
RuntimeKomentoriville shutdown hookit, muiden komentojen suoritus, muistin tila
ShortPrimitiivin vastine
Stringchar- taulukkoa vastaava luokka
StringBufferSuorituskykyisempi Stringien liitoksissa
StringBuilderSuorituskykyisin Stringien liitoksissa (synkroimaton)
Systemout- ja err-tulosteet, kellonaika, taulukon kopiointi ja yleisiä asetuksia
(javan tiedot, luokkapolku, käyttöjärjestelmä, erotinmerkit, käyttäjän tiedot)
ThreadSäikeen käynnistys - kts. Runnable-rajapinta
ThreadGroupMm. säikeen nimi
ThrowableException luokan yläluokka
PoikkeusKuvaus
ArrayIndexOutOfBoundsExceptionViittaus ohi taulukon
ClassCastExceptionOlion kastaus epäonnistui
ClassNotFoundExceptionLuokkaa ei löydy luokkapolusta
ExceptionYläluokka
IllegalArgumentExceptionVirheellinen parametri
IllegalStateExceptionVirheellinen tila
NoSuchFieldExceptionLuokka / olio ei sisällä kenttää
(Osa luokista käännetty eri versiolla kuin ajossa)
NoSuchMethodExceptionLuokka / olio ei sisällä metodia
(Osa luokista käännetty eri versiolla kuin ajossa)
NullPointerExceptionOlion metodia yritetään kutsua, kun oliota ei ole olemassa
NumberFormatExceptionEsimerkiksi sanasta yritetään tehdä desimaalinumero
RuntimeExceptionAjonaikaisten poikkeusten yläluokka
UnsupportedOperationExceptionMetodilla ei ole toteutusta
VirheKuvaus
ErrorVirheen yläluokka
UnsupportedClassVersionErrorVanhemmalla Javalla yritetään ajaa tuntematonta luokka formaattia
(Formaatti ei muutu joka Java-versiossa)

java.math

LuokkaKuvaus
BigDecimalTieteelliseen laskentaan äärettömän iso desimaaliluku
BigIntegerTieteelliseen laskentaan äärettömän iso kokonaisluku

java.net

LuokkaKuvaus
HttpURLConnectionHTTP:llä yhteys palvelimeen
ServerSocketPortin kuuntelija palvelimeen
SocketTCP yhteys palvelimeen
URLOsoitteen metatieto
URLConnectionYhteys palvelimeen (abstrakti yläluokka)
PoikkeusKuvaus
ConnectExceptionViallinen yhteys
MalformedURLExceptionViallinen osoite
SocketExceptionViallinen TCP yhteys
UnknownHostExceptionTuntematon palvelin

java.sql

RajapintaKuvaus
ConnectionTietokantayhteys
PreparedStatementTietokantakysely muuttujilla
ResultSetTietokantakyselyn vastaus
ResultSetMetaDataTietokantakyselyn vastauksen metatiedot
StatementTietokantakysely ilman muuttujia
LuokkaKuvaus
DatePäivämäärä tietotyyppi tietokannassa
DriverManagerTietokanta-ajurin lataus
TimeAika tietotyyppi tietokannassa
TimestampAika tietotyyppi tietokannassa
PoikkeusKuvaus
SQLExceptionTietokantavirhe (joko viallinen kysely tai yhteys ongelma)

java.text

LuokkaKuvaus
DecimalFormatNumeroiden formatointi ja parsiminen (mm. tuhateroitin, desimaalierotin)
MessageFormatTekstin formatointi ja parsiminen
SimpleDateFormatPäivämäärän formatointi ja parsiminen
PoikkeusKuvaus
ParseExceptionMerkkijonosta ei voida tehdä haluttua objektia

java.util

RajapintaKuvaus
EnumerationListan läpikäynnin apuväline
IteratorListan läpikäynnin apuväline
ListLista, jonka koko voi muuttua ajonaikaisesti
MapAvain- arvo pareja
QueueJono toteutus säikeille
LuokkaKuvaus
ArrayListSynroinoimaton lista toteutus
ArraysTaulukoiden käsittelyyn apuja mm. taulukko listaksi
CalendarKalenteri
DatePäivämäärä
HashMapMap toteutus, jossa avaimia käsittellään numeroina
LocaleMaa ja kieli asetukset
Properties*.properties tiedostojen käsittelyyn
ResourceBundleMonikielinen *.properties käsittely
StringTokenizerStringin pilkkoja - samantyylinen kuin Stringin split-metodi
TimerAjastin
PoikkeusKuvaus
MissingResourceExceptionPyydettyä resurssia ei löydy ResourceBundle- oliosta

java.util.concurrent

RajapintaKuvaus
ExecutorSäikeiden käynnistäminen
LuokkaKuvaus
CyclicBarrierSäikeille yhteinen piste, jossa odotetaan hitaampia säikeitä
ThreadPoolExecutorSäikeiden kierrättämiseen
PoikkeusKuvaus
TimeoutExceptionKaikki säikeet eivät päässeet perille ajoissa

java.util.concurrent.locks

RajapintaKuvaus
LockParempi vaihtoehto säielukolle kuin Object.wait & Object.notify
LuokkaKuvaus
ReentrantLockLukon toteutus

java.util.jar

LuokkaKuvaus
AttributesJAR:ssa olevan tiedoston attribuutit
JarEntryJAR:ssa oleva tiedosto
JarFileJAR:in lukeminen

java.util.regex

LuokkaKuvaus
MatcherStringien käsittely Regexillä
PatternStringien käsittely Regexillä
PoikkeusKuvaus
PatternSyntaxRegex syntaksi viallinen

Paluu etusivulleni...