Cuvânt cheie static Java (cu exemple)

În acest tutorial, vom afla despre cuvântul cheie static Java împreună cu metodele statice, variabilele statice și blocurile statice cu ajutorul exemplelor.

Ce este un cuvânt cheie static în Java?

În Java, dacă dorim să accesăm membrii clasei, trebuie mai întâi să creăm o instanță a clasei. Dar vor exista situații în care dorim să accesăm membrii clasei fără a crea nicio variabilă.

În aceste situații, putem folosi staticcuvântul cheie în Java. Dacă dorim să accesăm membrii clasei fără a crea o instanță a clasei, trebuie să declarăm membrii clasei statici.

MathClasa în Java are aproape toți membrii statice sale. Deci, putem accesa membrii săi fără a crea instanțe ale clasei Math. De exemplu,

 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)); ) )

Ieșire :

 Valoarea absolută a -12 = 12 Valoarea PI = 3,141592653589793 Valoarea E = 2,718281828459045 2 2 = 4,0

În exemplul de mai sus, nu am creat nicio instanță a Mathclasei. Dar suntem capabili să accesăm metodele sale: abs()și pow()și variabile: PIși E.

Este posibil, deoarece metodele și variabilele Mathclasei sunt statice.

Metode statice

Metodele statice se mai numesc metode de clasă. Aceasta se datorează faptului că o metodă statică aparține clasei mai degrabă decât obiectului unei clase.

Și putem invoca metode statice folosind direct numele clasei. De exemplu,

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

Aici, putem vedea că metoda statică poate fi accesată direct din alte clase folosind numele clasei.

În fiecare program Java, am declarat mainmetoda static. Acest lucru se datorează faptului că pentru a rula programul, JVM ar trebui să poată invoca metoda principală în timpul fazei inițiale în care nu există obiecte în memorie.

Exemplul 1: Metode Java statice și nestatice

 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)); ) )

Ieșire :

 2 * 2 = 4 2 + 3 = 5

În programul de mai sus, am declarat o metodă nestatică numită multiply()și o metodă statică numită add()în interiorul clasei StaticTest.

În interiorul clasei Main, putem vedea că apelăm metoda nestatică folosind obiectul clasei ( st.multiply(2, 2)). Cu toate acestea, apelăm metoda statică utilizând numele clasei ( StaticTest.add(2, 3)).

Variabile statice

În Java, atunci când creăm obiecte ale unei clase, atunci fiecare obiect va avea propria copie a tuturor variabilelor clasei. De exemplu,

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

Aici, atât obiectele test1 cât și test2 vor avea copii separate ale vârstei variabile. Și, ele sunt diferite între ele.

Cu toate acestea, dacă declarăm o variabilă statică, toate obiectele clasei împărtășesc aceeași variabilă statică. Acest lucru se datorează faptului că, ca și metodele statice, variabilele statice sunt, de asemenea, asociate clasei. Și nu trebuie să creăm obiecte ale clasei pentru a accesa variabilele statice. De exemplu,

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

Aici, putem vedea că accesăm variabila statică din cealaltă clasă folosind numele clasei.

Exemplul 2: Variabile Java statice și nestatice

 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)); ) )

Ieșire :

 min + 1 = 6 max + 1 = 11

În programul de mai sus, am declarat o variabilă nestatică numită min și o variabilă statică numită max în clasa Test.

În interiorul clasei Main, putem vedea că apelăm variabila nestatică folosind obiectul clasei ( obj.min + 1). Cu toate acestea, apelăm variabila statică utilizând numele clasei ( Test.max + 1).

Notă : Variabilele statice sunt rareori folosite în Java. În schimb, se folosesc constantele statice. Aceste constante statice sunt definite prin static finalcuvinte cheie și reprezentate cu majuscule. Acesta este motivul pentru care unii oameni preferă să utilizeze majuscule și pentru variabilele statice.

Accesați variabile statice și metode în cadrul clasei

Accesăm variabila statică de la o altă clasă. Prin urmare, am folosit numele clasei pentru a-l accesa. Cu toate acestea, dacă dorim să accesăm membrul static din interiorul clasei, acesta poate fi accesat direct. De exemplu,

 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(); ) )

Ieșire :

 Vârsta este de 30 de metode statice

Aici, putem accesa direct variabila statică și metoda fără a utiliza numele clasei. Aceasta se datorează faptului că variabilele și metodele statice sunt publice în mod implicit. Și, întrucât accesăm din aceeași clasă, nu trebuie să specificăm numele clasei.

Blocuri statice

În Java, blocurile statice sunt utilizate pentru a inițializa variabilele statice. De exemplu,

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

Aici putem vedea că am folosit un bloc static cu sintaxa:

 static ( // variable initialization )

The static block is executed only once when the class is loaded in memory. The class is loaded if either the object of the class is requested in code or the static members are requested in code.

A class can have multiple static blocks and each static block is executed in the same sequence in which they have been written in a program.

Example 3: Use of static block in java

 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(); ) )

Output:

 First Static block. Second Static block. a = 23 b = 92 max = 30

In the above program. as soon as the Main class is loaded,

  • The value of a is set to 23.
  • The first static block is executed. Hence, the string First Static block is printed and the value of b is set to a * 4.
  • The second static block is executed. Hence, the string Second Static block is printed and the value of max is set to 30.
  • Și, în cele din urmă, declarațiile de tipărire din interiorul metodei display()sunt executate.

Clasa statică imbricată

În Java, putem declara o clasă în interiorul altei clase. Astfel de clase sunt cunoscute sub numele de clase imbricate. Clasele imbricate sunt de 2 tipuri:

  • Clase cuibărite statice
  • Clase imbricate nestatice

De exemplu,

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

Pentru a afla mai multe, vizitați Clasa imbricată Java.

Articole interesante...