Staattinen Java-avainsana (esimerkkejä)

Tässä opetusohjelmassa opit Java-staattisesta avainsanasta sekä staattisista menetelmistä, staattisista muuttujista ja staattisista lohkoista esimerkkien avulla.

Mikä on staattinen avainsana Java-ohjelmassa?

Jos haluamme käyttää Java-jäseniä Java: ssa, meidän on ensin luotava luokan esiintymä. Mutta on tilanteita, joissa haluamme käyttää luokan jäseniä luomatta muuttujia.

Näissä tilanteissa voimme käyttää staticavainsanaa Java-ohjelmassa. Jos haluamme käyttää luokan jäseniä luomatta luokan esiintymää, meidän on julistettava luokan jäsenet staattisiksi.

MathLuokan Java on lähes kaikki sen jäsenet staattinen. Joten voimme käyttää sen jäseniä luomatta matematiikkaluokan esiintymiä. Esimerkiksi,

 public class Main ( public static void main( String() args ) ( // accessing the methods of the Math class System.out.println("Absolute value of -12 = " + Math.abs(-12)); System.out.println("Value of PI = " + Math.PI); System.out.println("Value of E = " + Math.E); System.out.println("2^2 = " + Math.pow(2,2)); ) )

Tuotos :

 Absoluuttinen arvo -12 = 12 PI: n arvo = 3,141592653589793 Arvo E = 2,718281828459045 2 2 = 4,0

Yllä olevassa esimerkissä emme ole luoneet yhtään Mathluokan esiintymää . Mutta voimme käyttää sen menetelmiä: abs()ja pow()ja muuttujia: PIja E.

Se on mahdollista, koska Mathluokan menetelmät ja muuttujat ovat staattisia.

Staattiset menetelmät

Staattisia menetelmiä kutsutaan myös luokkamenetelmiksi. Se johtuu siitä, että staattinen menetelmä kuuluu luokkaan eikä luokan objektiin.

Ja voimme käyttää staattisia menetelmiä suoraan käyttämällä luokan nimeä. Esimerkiksi,

 class Test ( // static method inside the Test class public static void method() (… ) ) class Main ( // invoking the static method Test.method(); )

Tässä voimme nähdä, että staattiseen menetelmään pääsee suoraan muista luokista käyttämällä luokan nimeä.

Jokaisessa Java-ohjelmassa olemme ilmoittaneet mainmenetelmän static. Tämä johtuu siitä, että ohjelman suorittamiseksi JVM: n tulisi pystyä käyttämään päämenetelmää alkuvaiheessa, jossa muistissa ei ole objekteja.

Esimerkki 1: Java staattiset ja ei-staattiset menetelmät

 class StaticTest ( // non-static method int multiply(int a, int b)( return a * b; ) // static method static int add(int a, int b)( return a + b; ) ) public class Main ( public static void main( String() args ) ( // create an instance of the StaticTest class StaticTest st = new StaticTest(); // call the nonstatic method System.out.println(" 2 * 2 = " + st.multiply(2,2)); // call the static method System.out.println(" 2 + 3 = " + StaticTest.add(2,3)); ) )

Tuotos :

 2 * 2 = 4 2 + 3 = 5

Yllä olevassa ohjelmassa olemme julistaneet ei-staattisen menetelmän nimeksi multiply()ja staattisen menetelmän nimeksi add()luokan sisällä StaticTest.

Pääluokan sisällä voimme nähdä, että kutsumme ei-staattista menetelmää luokan objektin ( st.multiply(2, 2)) avulla. Kutsumme kuitenkin staattista menetelmää käyttämällä luokan nimeä ( StaticTest.add(2, 3)).

Staattiset muuttujat

Kun luot Java-tilassa luokan objekteja, jokaisella objektilla on oma kopio kaikista luokan muuttujista. Esimerkiksi,

 class Test ( // regular variable int age; ) class Main ( // create instances of Test Test test1 = new Test(); Test test2 = new Test(); )

Tässä sekä kohteilla test1 että test2 on erilliset kopiot vaihtelevasta iästä. Ja ne eroavat toisistaan.

Jos kuitenkin julistamme muuttujan staattiseksi, kaikilla luokan objekteilla on sama staattinen muuttuja. Se johtuu siitä, että staattisten menetelmien tapaan staattiset muuttujat liittyvät myös luokkaan. Ja meidän ei tarvitse luoda luokan objekteja staattisten muuttujien käyttämiseksi. Esimerkiksi,

 class Test ( // static variable static int age; ) class Main ( // access the static variable Test.age = 20; )

Täällä voimme nähdä, että pääsemme staattiseen muuttujaan toisesta luokasta käyttämällä luokan nimeä.

Esimerkki 2: Java staattiset ja ei-staattiset muuttujat

 class Test ( // static variable static int max = 10; // non-static variable int min = 5; ) public class Main ( public static void main(String() args) ( Test obj = new Test(); // access the non-static variable System.out.println("min + 1 = " + (obj.min + 1)); // access the static variable System.out.println("max + 1 = " + (Test.max + 1)); ) )

Tuotos :

 min + 1 = 6 max + 1 = 11

Edellä mainitussa ohjelmassa olemme ilmoittaneet ei-staattisen muuttujan nimeltä Min ja staattisen muuttujan nimeltä Max luokan sisällä Test.

Main-luokan sisällä voimme nähdä, että kutsumme ei-staattista muuttujaa luokan objektin ( obj.min + 1) avulla. Kutsumme kuitenkin staattista muuttujaa käyttämällä luokan nimeä ( Test.max + 1).

Huomaa : Staattisia muuttujia käytetään harvoin Javassa. Sen sijaan käytetään staattisia vakioita. Nämä staattiset vakiot on määritelty static finalavainsanalla ja edustettuina isoilla kirjaimilla. Siksi jotkut ihmiset haluavat käyttää isoja kirjaimia myös staattisiin muuttujiin.

Käytä luokan staattisia muuttujia ja menetelmiä

Käytämme staattista muuttujaa toisesta luokasta. Siksi olemme käyttäneet luokan nimeä pääsemään siihen. Jos kuitenkin haluamme käyttää staattista jäsentä luokan sisältä, siihen pääsee suoraan. Esimerkiksi,

 public class Main ( // static variable static int age; // static method static void display() ( System.out.println("Static Method"); ) public static void main(String() args) ( // access the static variable age = 30; System.out.println("Age is " + age); // access the static method display(); ) )

Tuotos :

 Ikä on 30 Staattinen menetelmä

Täällä voimme käyttää staattista muuttujaa ja menetelmää suoraan käyttämättä luokan nimeä. Se johtuu siitä, että staattiset muuttujat ja menetelmät ovat oletusarvoisesti julkisia. Ja koska käytämme samaa luokkaa, meidän ei tarvitse määrittää luokan nimeä.

Staattiset lohkot

Java-sovelluksessa staattisia lohkoja käytetään staattisten muuttujien alustamiseen. Esimerkiksi,

 class Test ( // static variable static int age; // static block static ( age = 23; ) )

Täällä voimme nähdä, että olemme käyttäneet staattista lohkoa syntaksin kanssa:

 static ( // variable initialization )

Staattinen lohko suoritetaan vain kerran, kun luokka ladataan muistiin. Luokka ladataan, jos joko luokan kohdetta pyydetään koodina tai staattisia jäseniä koodina.

Luokalla voi olla useita staattisia lohkoja, ja jokainen staattinen lohko suoritetaan samassa järjestyksessä kuin ne on kirjoitettu ohjelmassa.

Esimerkki 3: Staattisen lohkon käyttö Java-sovelluksessa

 class Main ( // static variables static int a = 23; static int b; static int max; // static blocks static ( System.out.println("First Static block."); b = a * 4; ) static ( System.out.println("Second Static block."); max = 30; ) // static method static void display() ( System.out.println("a = " + a); System.out.println("b = " + b); System.out.println("max = " + max); ) public static void main(String args()) ( // calling the static method display(); ) )

Tuotos :

Ensimmäinen staattinen lohko. Toinen staattinen lohko. a = 23 b = 92 max = 30

Yllä olevassa ohjelmassa. heti kun pääluokka on ladattu,

  • A: n arvoksi asetetaan 23.
  • Ensimmäinen staattinen lohko suoritetaan. Siksi merkkijono First Static blocktulostetaan ja b: n arvoksi asetetaan a * 4.
  • Toinen staattinen lohko suoritetaan. Näin ollen merkkijono Second Static blocktulostetaan ja arvoksi max asetetaan 30.
  • Ja lopuksi menetelmän sisällä olevat tulosteet display()suoritetaan.

Sisäkkäinen staattinen luokka

Java: ssa voimme julistaa luokan toisen luokan sisällä. Tällaisia ​​luokkia kutsutaan sisäkkäisiksi luokiksi. Sisäkkäisiä luokkia on 2 tyyppiä:

  • Staattiset sisäkkäiset luokat
  • Ei-staattiset sisäkkäiset luokat

Esimerkiksi,

 class OuterClass ( // static nested class static class NestedClass (… ) // non-static nested class class InnerClass (… ) )

Lisätietoja on Java Nested -luokassa.

Mielenkiintoisia artikkeleita...