- Zmienna statyczna
- Program licznika bez zmiennej statycznej
- Program licznika ze zmienną statyczną
- Metoda statyczna
- Ograniczenia metody statycznej
- Dlaczego główna metoda jest statyczna?
- Blok statyczny
- Czy możemy wykonać program bez metody głównej?
The statyczne słowo kluczowe W Jawa służy głównie do zarządzania pamięcią. Możemy zastosować statyczne słowo kluczowe za pomocą zmienne , metody, bloki i zagnieżdżone klasy . Słowo kluczowe static należy do klasy niż instancja klasy.
przycinanie JavaScriptu
Statyka może być:
- Zmienna (znana również jako zmienna klasowa)
- Metoda (znana również jako metoda klasowa)
- Blok
- Zagnieżdżona klasa
1) Zmienna statyczna Java
Jeśli zadeklarujesz dowolną zmienną jako statyczną, nazywa się ją zmienną statyczną.
- Zmiennej statycznej można używać do odwoływania się do wspólnej właściwości wszystkich obiektów (która nie jest unikalna dla każdego obiektu), na przykład nazwy firmy pracowników, nazwy uczelni studentów itp.
- Zmienna statyczna pobiera pamięć tylko raz w obszarze klasy w momencie ładowania klasy.
Zalety zmiennej statycznej
To tworzy twój program pamięć wydajna (tj. oszczędza pamięć).
Zrozumienie problemu bez zmiennej statycznej
class Student{ int rollno; String name; String college='ITS'; }
Załóżmy, że w mojej uczelni jest 500 studentów, teraz wszyscy członkowie danych instancji otrzymają pamięć za każdym razem, gdy obiekt zostanie utworzony. Wszyscy uczniowie mają swoje unikalne rollno i nazwę, więc element danych instancji jest w tym przypadku dobry. Tutaj „uczelnia” odnosi się do wspólnej własności wszystkich obiekty . Jeśli uczynimy je statycznym, to pole otrzyma pamięć tylko raz.
Właściwość statyczna Java jest współdzielona ze wszystkimi obiektami.
Przykład zmiennej statycznej
//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(); } }Przetestuj teraz
Wyjście:
111 Karan ITS 222 Aryan ITS
Program licznika bez zmiennej statycznej
W tym przykładzie utworzyliśmy zmienną instancji o nazwie count, która jest zwiększana w konstruktorze. Ponieważ zmienna instancji pobiera pamięć w momencie tworzenia obiektu, każdy obiekt będzie miał kopię zmiennej instancji. Jeśli zostanie zwiększony, nie będzie odzwierciedlał innych obiektów. Zatem każdy obiekt będzie miał wartość 1 w zmiennej count.
//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(); } }Przetestuj teraz
Wyjście:
nie ma wartości null w js
1 1 1
Program licznika według zmiennej statycznej
Jak wspomnieliśmy powyżej, zmienna statyczna zostanie zapisana w pamięci tylko raz, jeśli jakikolwiek obiekt zmieni wartość zmiennej statycznej, zachowa swoją wartość.
//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(); } }Przetestuj teraz
Wyjście:
1 2 3
2) Metoda statyczna Java
Jeśli zastosujesz słowo kluczowe static z dowolną metodą, jest to znane jako metoda statyczna.
- Metoda statyczna należy do klasy, a nie do obiektu klasy.
- Metodę statyczną można wywołać bez konieczności tworzenia instancji klasy.
- Metoda statyczna może uzyskać dostęp do statycznego elementu danych i zmienić jego wartość.
Przykład metody statycznej
//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(); } }Przetestuj teraz
Output:111 Karan BBDIT 222 Aryan BBDIT 333 Sonoo BBDIT
Kolejny przykład metody statycznej, która wykonuje normalne obliczenia
//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); } }Przetestuj teraz
Output:125
Ograniczenia metody statycznej
Istnieją dwa główne ograniczenia metody statycznej. Oni są:
zawijanie słów w CSS
- Metoda statyczna nie może używać niestatycznego elementu danych ani bezpośrednio wywoływać metody niestatycznej.
- this i super nie mogą być używane w kontekście statycznym.
class A{ int a=40;//non static public static void main(String args[]){ System.out.println(a); } }Przetestuj teraz
Output:Compile Time Error
P) Dlaczego główna metoda Java jest statyczna?
Odp.) Dzieje się tak dlatego, że obiekt nie musi wywoływać metody statycznej. Gdyby była to metoda niestatyczna, JVM najpierw tworzy obiekt, a następnie wywołuje metodę main(), co spowoduje problem z alokacją dodatkowej pamięci.
3) Blok statyczny Java
- Służy do inicjowania statycznego elementu danych.
- Jest wykonywany przed metodą główną w momencie ładowania klasy.
Przykład bloku statycznego
class A2{ static{System.out.println('static block is invoked');} public static void main(String args[]){ System.out.println('Hello main'); } }Przetestuj teraz
Output:static block is invoked Hello main
P) Czy możemy uruchomić program bez metody main()?
Odp.) Nie, jednym ze sposobów był blok statyczny, ale było to możliwe do wersji JDK 1.6. Od wersji JDK 1.7 nie jest możliwe wykonanie klasy Java bez główna metoda .
class A3{ static{ System.out.println('static block is invoked'); System.exit(0); } }Przetestuj teraz
Wyjście:
dekodowanie javascript base64
static block is invoked
Od wersji JDK 1.7 i nowszych wynik będzie następujący:
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