logo

Statisches Java-Schlüsselwort

  1. Statische Variable
  2. Programm des Zählers ohne statische Variable
  3. Programm des Zählers mit statischer Variable
  4. Statische Methode
  5. Einschränkungen für die statische Methode
  6. Warum ist die Hauptmethode statisch?
  7. Statischer Block
  8. Können wir ein Programm ohne Hauptmethode ausführen?

Der statisches Schlüsselwort In Java wird hauptsächlich zur Speicherverwaltung verwendet. Wir können ein statisches Schlüsselwort mit anwenden Variablen , Methoden, Blöcke und verschachtelte Klassen . Das Schlüsselwort static gehört zur Klasse als zu einer Instanz der Klasse.

Netzwerkarchitektur

Die Statik kann sein:

  1. Variable (auch als Klassenvariable bekannt)
  2. Methode (auch als Klassenmethode bekannt)
  3. Block
  4. Verschachtelte Klasse
Statisch in Java

1) Statische Java-Variable

Wenn Sie eine Variable als statisch deklarieren, wird sie als statische Variable bezeichnet.

  • Die statische Variable kann verwendet werden, um auf die gemeinsame Eigenschaft aller Objekte zu verweisen (die nicht für jedes Objekt eindeutig ist), beispielsweise den Firmennamen von Mitarbeitern, den Hochschulnamen von Studenten usw.
  • Die statische Variable erhält beim Laden der Klasse nur einmal Speicher im Klassenbereich.

Vorteile statischer Variablen

Es macht Ihr Programm speichereffizient (d. h. es spart Speicher).

Das Problem ohne statische Variable verstehen

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

Angenommen, an meiner Hochschule gibt es 500 Studenten. Jetzt erhalten alle Instanzdatenmitglieder bei jeder Objekterstellung Speicher. Alle Schüler haben ihre eindeutige Rollennummer und ihren eindeutigen Namen, daher ist in einem solchen Fall ein Instanzdatenelement gut. „Hochschule“ bezieht sich hier auf das gemeinsame Eigentum aller Objekte . Wenn wir es statisch machen, erhält dieses Feld den Speicher nur einmal.

Die statische Java-Eigenschaft wird von allen Objekten gemeinsam genutzt.

Beispiel einer statischen Variablen

 //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(); } } 
Testen Sie es jetzt

Ausgabe:

 111 Karan ITS 222 Aryan ITS 

Programm des Zählers ohne statische Variable

In diesem Beispiel haben wir eine Instanzvariable namens count erstellt, die im Konstruktor inkrementiert wird. Da die Instanzvariable zum Zeitpunkt der Objekterstellung den Speicher erhält, verfügt jedes Objekt über eine Kopie der Instanzvariablen. Wenn es erhöht wird, spiegelt es keine anderen Objekte wider. Jedes Objekt hat also den Wert 1 in der Zählvariablen.

Vorwärtsverkettung
 //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(); } } 
Testen Sie es jetzt

Ausgabe:

 1 1 1 

Zählerprogramm nach statischer Variable

Wie oben erwähnt, erhält eine statische Variable den Speicher nur einmal. Wenn ein Objekt den Wert der statischen Variablen ändert, behält es seinen Wert.

 //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(); } } 
Testen Sie es jetzt

Ausgabe:

Saitenbauer
 1 2 3 

2) Statische Java-Methode

Wenn Sie das Schlüsselwort static mit einer Methode anwenden, wird dies als statische Methode bezeichnet.

  • Eine statische Methode gehört zur Klasse und nicht zum Objekt einer Klasse.
  • Eine statische Methode kann aufgerufen werden, ohne dass eine Instanz einer Klasse erstellt werden muss.
  • Eine statische Methode kann auf statische Datenelemente zugreifen und deren Wert ändern.

Beispiel einer statischen Methode

 //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(); } } 
Testen Sie es jetzt
 Output:111 Karan BBDIT 222 Aryan BBDIT 333 Sonoo BBDIT 

Ein weiteres Beispiel für eine statische Methode, die eine normale Berechnung durchführt

 //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); } } 
Testen Sie es jetzt
 Output:125 

Einschränkungen für die statische Methode

Für die statische Methode gibt es zwei wesentliche Einschränkungen. Sie sind:

  1. Die statische Methode kann keine nicht-statischen Datenelemente verwenden oder nicht-statische Methoden direkt aufrufen.
  2. this und super können nicht im statischen Kontext verwendet werden.
 class A{ int a=40;//non static public static void main(String args[]){ System.out.println(a); } } 
Testen Sie es jetzt
 Output:Compile Time Error 

F) Warum ist die Java-Hauptmethode statisch?

Antwort) Dies liegt daran, dass das Objekt keine statische Methode aufrufen muss. Wenn es eine nicht statische Methode wäre, JVM Erstellt zuerst ein Objekt und ruft dann die Methode main() auf, was zu dem Problem der zusätzlichen Speicherzuweisung führt.


3) Statischer Java-Block

  • Wird zum Initialisieren des statischen Datenelements verwendet.
  • Sie wird beim Laden der Klasse vor der Hauptmethode ausgeführt.

Beispiel für einen statischen Block

 class A2{ static{System.out.println('static block is invoked');} public static void main(String args[]){ System.out.println('Hello main'); } } 
Testen Sie es jetzt
 Output:static block is invoked Hello main 

F) Können wir ein Programm ohne die Methode main() ausführen?

Antwort) Nein, eine Möglichkeit war der statische Block, aber das war bis JDK 1.6 möglich. Seit JDK 1.7 ist es nicht mehr möglich, eine Java-Klasse ohne auszuführen Hauptmethode .

 class A3{ static{ System.out.println('static block is invoked'); System.exit(0); } } 
Testen Sie es jetzt

Ausgabe:

Java-Binärbaum
 static block is invoked 

Seit JDK 1.7 und höher wäre die Ausgabe:

 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