logo

Java statiskt nyckelord

  1. Statisk variabel
  2. Program för räknaren utan statisk variabel
  3. Program för räknaren med statisk variabel
  4. Statisk metod
  5. Restriktioner för den statiska metoden
  6. Varför är huvudmetoden statisk?
  7. Statiskt block
  8. Kan vi köra ett program utan huvudmetod?

De statiskt nyckelord i Java används främst för minneshantering. Vi kan tillämpa statiska nyckelord med variabler , metoder, block och kapslade klasser . Det statiska nyckelordet tillhör klassen än en instans av klassen.

java gör medan

Det statiska kan vara:

  1. Variabel (även känd som en klassvariabel)
  2. Metod (även känd som en klassmetod)
  3. Blockera
  4. Kapslad klass
Statisk i Java

1) Java statisk variabel

Om du deklarerar någon variabel som statisk är den känd som en statisk variabel.

  • Den statiska variabeln kan användas för att referera till den gemensamma egenskapen för alla objekt (vilket inte är unikt för varje objekt), till exempel företagets namn på anställda, högskolenamn på studenter, etc.
  • Den statiska variabeln får minne endast en gång i klassområdet vid tidpunkten för klassladdning.

Fördelar med statisk variabel

Det gör ditt program minneseffektiv (dvs det sparar minne).

Förstå problemet utan statisk variabel

 class Student{ int rollno; String name; String college='ITS'; } 

Anta att det finns 500 studenter på min högskola, nu kommer alla instansdatamedlemmar att få minne varje gång objektet skapas. Alla elever har sitt unika rollno och namn, så instansdatamedlem är bra i sådana fall. Här syftar 'college' på allas gemensamma egendom föremål . Om vi ​​gör det statiskt kommer detta fält bara att få minnet en gång.

Java static-egenskapen delas med alla objekt.

Exempel på statisk variabel

 //Java Program to demonstrate the use of static variable class Student{ int rollno;//instance variable String name; static String college ='ITS';//static variable //constructor Student(int r, String n){ rollno = r; name = n; } //method to display the values void display (){System.out.println(rollno+' '+name+' '+college);} } //Test class to show the values of objects public class TestStaticVariable1{ public static void main(String args[]){ Student s1 = new Student(111,'Karan'); Student s2 = new Student(222,'Aryan'); //we can change the college of all objects by the single line of code //Student.college='BBDIT'; s1.display(); s2.display(); } } 
Testa det nu

Produktion:

 111 Karan ITS 222 Aryan ITS 

Program för räknaren utan statisk variabel

I det här exemplet har vi skapat en instansvariabel med namnet count som inkrementeras i konstruktorn. Eftersom instansvariabeln hämtar minnet vid tidpunkten för objektskapandet kommer varje objekt att ha kopian av instansvariabeln. Om den ökas kommer den inte att reflektera andra objekt. Så varje objekt kommer att ha värdet 1 i räkningsvariabeln.

 //Java Program to demonstrate the use of an instance variable //which get memory each time when we create an object of the class. class Counter{ int count=0;//will get memory each time when the instance is created Counter(){ count++;//incrementing value System.out.println(count); } public static void main(String args[]){ //Creating objects Counter c1=new Counter(); Counter c2=new Counter(); Counter c3=new Counter(); } } 
Testa det nu

Produktion:

tabell i reaktion
 1 1 1 

Program för räknare av statisk variabel

Som vi har nämnt ovan kommer statisk variabel bara att få minnet en gång, om något objekt ändrar värdet på den statiska variabeln kommer det att behålla sitt värde.

 //Java Program to illustrate the use of static variable which //is shared with all objects. class Counter2{ static int count=0;//will get memory only once and retain its value Counter2(){ count++;//incrementing the value of static variable System.out.println(count); } public static void main(String args[]){ //creating objects Counter2 c1=new Counter2(); Counter2 c2=new Counter2(); Counter2 c3=new Counter2(); } } 
Testa det nu

Produktion:

 1 2 3 

2) Java statisk metod

Om du använder statiskt nyckelord med någon metod kallas det statisk metod.

  • En statisk metod tillhör klassen snarare än objektet för en klass.
  • En statisk metod kan anropas utan att man behöver skapa en instans av en klass.
  • En statisk metod kan komma åt statisk datamedlem och kan ändra värdet på den.

Exempel på statisk metod

 //Java Program to demonstrate the use of a static method. class Student{ int rollno; String name; static String college = 'ITS'; //static method to change the value of static variable static void change(){ college = 'BBDIT'; } //constructor to initialize the variable Student(int r, String n){ rollno = r; name = n; } //method to display values void display(){System.out.println(rollno+' '+name+' '+college);} } //Test class to create and display the values of object public class TestStaticMethod{ public static void main(String args[]){ Student.change();//calling change method //creating objects Student s1 = new Student(111,'Karan'); Student s2 = new Student(222,'Aryan'); Student s3 = new Student(333,'Sonoo'); //calling display method s1.display(); s2.display(); s3.display(); } } 
Testa det nu
 Output:111 Karan BBDIT 222 Aryan BBDIT 333 Sonoo BBDIT 

Ytterligare ett exempel på en statisk metod som utför en normal beräkning

 //Java Program to get the cube of a given number using the static method class Calculate{ static int cube(int x){ return x*x*x; } public static void main(String args[]){ int result=Calculate.cube(5); System.out.println(result); } } 
Testa det nu
 Output:125 

Restriktioner för den statiska metoden

Det finns två huvudsakliga begränsningar för den statiska metoden. Dom är:

hur får jag reda på storleken på min bildskärm
  1. Den statiska metoden kan inte använda icke-statisk datamedlem eller anropa icke-statisk metod direkt.
  2. detta och super kan inte användas i statiska sammanhang.
 class A{ int a=40;//non static public static void main(String args[]){ System.out.println(a); } } 
Testa det nu
 Output:Compile Time Error 

F) Varför är Java-huvudmetoden statisk?

Ans) Det beror på att objektet inte krävs för att anropa en statisk metod. Om det var en icke-statisk metod, JVM skapar ett objekt först och anropar sedan main()-metoden som leder till problemet med extra minnesallokering.


3) Java statiskt block

  • Används för att initiera den statiska datamedlemmen.
  • Den exekveras före huvudmetoden vid tidpunkten för klassladdning.

Exempel på statiskt block

 class A2{ static{System.out.println('static block is invoked');} public static void main(String args[]){ System.out.println('Hello main'); } } 
Testa det nu
 Output:static block is invoked Hello main 

F) Kan vi köra ett program utan main()-metoden?

Svar) Nej, ett av sätten var det statiska blocket, men det var möjligt fram till JDK 1.6. Sedan JDK 1.7 är det inte möjligt att köra en Java-klass utan huvudmetod .

 class A3{ static{ System.out.println('static block is invoked'); System.exit(0); } } 
Testa det nu

Produktion:

maskininlärningsmodeller
 static block is invoked 

Eftersom JDK 1.7 och högre skulle utdata vara:

 Error: Main method not found in class A3, please define the main method as: public static void main(String[] args) or a JavaFX application class must extend javafx.application.Application