Staattinen muuttuja tai metodi on käytettävissä ilman, että luokasta
luodaan olio. Staattisuuden ilmaisee sana static
ennen muuttujan
tai metodin nimeä.
Ohjelman pääluokan muuttujat ja metodit ovat staattisia:
public class Main { private static String viesti = "Hei hei!"; private static void tervehdi() { System.out.println(viesti); } public static void main(String[] args) { tervehdi(); } }
Kirjasto sisältää staattisia metodeja, joita kutsutaan muualta
ohjelmasta. Esimerkki tällaisesta luokasta on Javan valmis Math
,
joka sisältää matemaattisia funktioita.
Seuraava luokka Listat
sisältää metodeita listan
käsittelyyn:
import java.util.*; public class Listat { public static int laskeMaara(ArrayList<Integer> luvut) { return luvut.size(); } public static int laskeSumma(ArrayList<Integer> luvut) { int summa = 0; for (int luku : luvut) { summa += luku; } return summa; } public static double laskeKeskiarvo(ArrayList<Integer> luvut) { return (double)laskeSumma(luvut) / laskeMaara(luvut); } }
Luokkaa voisi käyttää muualla koodissa seuraavasti:
ArrayList<Integer> lista = new ArrayList<Integer>(); lista.add(8); lista.add(2); lista.add(5); lista.add(9); lista.add(2); System.out.println(Listat.laskeMaara(lista)); System.out.println(Listat.laskeSumma(lista)); System.out.println(Listat.laskeKeskiarvo(lista));
Koodin tulostus on seuraava:
5 26 5.2
Huomaa luokan nimi Listat
ennen metodien nimiä.
Luokassa oleva staattinen muuttuja on yhteinen kaikille luokasta luoduille olioille.
Seuraavassa esimerkissä jokainen uusi olio saa yksilöllisen
tunnusnumeron. Tämän mahdollistaa luokassa oleva staattinen muuttuja
yhteinenLaskuri
, jonka arvo kasvaa jokaisen olion luonnin
jälkeen.
public class LaskuriOlio { private static int yhteinenLaskuri = 0; private int omaTunnus; public LaskuriOlio() { omaTunnus = yhteinenLaskuri; yhteinenLaskuri++; } public void tervehdi() { System.out.println("Hei, minun tunnukseni on " + omaTunnus); } }
Luokan toimintaa havainnollistaa seuraava koodi:
LaskuriOlio eka = new LaskuriOlio(); LaskuriOlio toka = new LaskuriOlio(); LaskuriOlio kolmas = new LaskuriOlio(); eka.tervehdi(); toka.tervehdi(); kolmas.tervehdi();
Koodin tulostus on seuraava:
Hei, minun tunnukseni on 0 Hei, minun tunnukseni on 1 Hei, minun tunnukseni on 2