- Statikus változó
- A számláló programja statikus változó nélkül
- A számláló programja statikus változóval
- Statikus módszer
- A statikus módszer korlátozásai
- Miért statikus a fő módszer?
- Statikus blokk
- Futtathatunk-e programot fő metódus nélkül?
A statikus kulcsszó ban ben Jáva elsősorban memóriakezelésre használják. Statikus kulcsszót alkalmazhatunk változók , módszerek, blokkok és beágyazott osztályok . A statikus kulcsszó az osztályhoz tartozik, mint az osztály példánya.
bash karakterlánc elválasztóval osztott
A statikus lehet:
- Változó (más néven osztályváltozó)
- Method (más néven osztálymetódus)
- Blokk
- Beágyazott osztály
1) Java statikus változó
Ha bármely változót statikusnak deklarál, azt statikus változónak nevezzük.
- A statikus változóval hivatkozhatunk az összes objektum közös tulajdonára (ami nem minden objektum egyedi), például az alkalmazottak cégnevére, a hallgatók főiskolai nevére stb.
- A statikus változó csak egyszer kap memóriát az osztályterületen az osztály betöltésekor.
A statikus változó előnyei
Ez teszi a programját memória hatékony (azaz memóriát takarít meg).
A probléma megértése statikus változó nélkül
class Student{ int rollno; String name; String college='ITS'; }
Tegyük fel, hogy 500 diák van a főiskolán, most minden példány adattag memóriát kap minden alkalommal, amikor az objektum létrejön. Minden tanulónak megvan a maga egyedi rollno-ja és neve, így ilyen esetben jó a példány adattag. Itt a „főiskola” mindenki közös tulajdonára vonatkozik tárgyakat . Ha statikussá tesszük, ez a mező csak egyszer kapja meg a memóriát.
A Java statikus tulajdonsága meg van osztva minden objektummal.
Példa statikus változóra
//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(); } }Tesztelje most
Kimenet:
111 Karan ITS 222 Aryan ITS
A számláló programja statikus változó nélkül
Ebben a példában létrehoztunk egy count nevű példányváltozót, amely a konstruktorban növekszik. Mivel a példányváltozó az objektum létrehozásakor kapja meg a memóriát, minden objektum rendelkezik a példányváltozó másolatával. Ha növeli, akkor nem tükrözi a többi objektumot. Tehát minden objektum értéke 1 lesz a count változóban.
//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(); } }Tesztelje most
Kimenet:
római számjegy 1-től 100-ig
1 1 1
Számláló program statikus változó alapján
Ahogy fentebb említettük, a statikus változó csak egyszer kapja meg a memóriát, ha bármely objektum megváltoztatja a statikus változó értékét, akkor megtartja értékét.
//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(); } }Tesztelje most
Kimenet:
1 2 3
2) Java statikus módszer
Ha statikus kulcsszót alkalmaz bármilyen módszerrel, azt statikus módszernek nevezik.
- A statikus metódus inkább az osztályhoz tartozik, mint az osztály objektumához.
- A statikus metódus meghívható anélkül, hogy egy osztály példányát kellene létrehozni.
- A statikus metódusok hozzáférhetnek a statikus adattagokhoz, és megváltoztathatják annak értékét.
Példa statikus módszerre
//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(); } }Tesztelje most
Output:111 Karan BBDIT 222 Aryan BBDIT 333 Sonoo BBDIT
Egy másik példa egy statikus módszerre, amely normál számítást végez
//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); } }Tesztelje most
Output:125
A statikus módszer korlátozásai
A statikus módszerre két fő korlátozás vonatkozik. Ők:
java kapcsold össze a mysql-lel
- A statikus metódus nem használhat nem statikus adattagot, és nem hívhatja meg közvetlenül a nem statikus metódust.
- ez és a szuper nem használható statikus környezetben.
class A{ int a=40;//non static public static void main(String args[]){ System.out.println(a); } }Tesztelje most
Output:Compile Time Error
K) Miért statikus a Java fő metódus?
Válasz) Ez azért van, mert az objektumnak nem kell statikus metódust hívnia. Ha nem statikus módszerről lenne szó, JVM először létrehoz egy objektumot, majd meghívja a main() metódust, ami az extra memóriafoglalás problémájához vezet.
3) Java statikus blokk
- A statikus adattag inicializálására szolgál.
- Az osztálybetöltéskor a fő metódus előtt kerül végrehajtásra.
Példa statikus blokkra
class A2{ static{System.out.println('static block is invoked');} public static void main(String args[]){ System.out.println('Hello main'); } }Tesztelje most
Output:static block is invoked Hello main
K) Futtathatunk-e programot main() metódus nélkül?
Válasz) Nem, az egyik módszer a statikus blokk volt, de ez lehetséges volt a JDK 1.6-ig. A JDK 1.7 óta nem lehet Java osztályt végrehajtani a nélkül fő módszer .
class A3{ static{ System.out.println('static block is invoked'); System.exit(0); } }Tesztelje most
Kimenet:
python generál uuid
static block is invoked
A JDK 1.7 és újabb verziója óta a kimenet a következő lenne:
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