- Variable estàtica
- Programa del comptador sense variable estàtica
- Programa del comptador amb variable estàtica
- Mètode estàtic
- Restriccions per al mètode estàtic
- Per què el mètode principal és estàtic?
- Bloc estàtic
- Podem executar un programa sense el mètode principal?
El paraula clau estàtica en Java s'utilitza principalment per a la gestió de la memòria. Podem aplicar una paraula clau estàtica amb les variables , mètodes, blocs i classes imbricades . La paraula clau estàtica pertany a la classe que una instància de la classe.
cadena separada en java
L'estàtica pot ser:
- Variable (també coneguda com a variable de classe)
- Mètode (també conegut com a mètode de classe)
- Bloc
- Classe anidada
1) Variable estàtica de Java
Si declareu qualsevol variable com a estàtica, es coneix com a variable estàtica.
- La variable estàtica es pot utilitzar per fer referència a la propietat comuna de tots els objectes (que no és única per a cada objecte), per exemple, el nom de l'empresa dels empleats, el nom de la universitat dels estudiants, etc.
- La variable estàtica només obté memòria una vegada a l'àrea de classe en el moment de la càrrega de la classe.
Avantatges de la variable estàtica
Fa el teu programa eficient en la memòria (és a dir, estalvia memòria).
Comprensió del problema sense variable estàtica
class Student{ int rollno; String name; String college='ITS'; }
Suposem que hi ha 500 estudiants a la meva universitat, ara tots els membres de les dades de la instància tindran memòria cada vegada que es creï l'objecte. Tots els estudiants tenen el seu nom i nom únics, de manera que el membre de dades de la instància és bo en aquest cas. Aquí, 'universitat' es refereix a la propietat comuna de tots objectes . Si el fem estàtic, aquest camp només obtindrà la memòria una vegada.
La propietat estàtica de Java es comparteix amb tots els objectes.
Exemple de variable estàtica
//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(); } }Prova-ho ara
Sortida:
plsql
111 Karan ITS 222 Aryan ITS
Programa del comptador sense variable estàtica
En aquest exemple, hem creat una variable d'instància anomenada count que s'incrementa al constructor. Com que la variable d'instància obté la memòria en el moment de la creació de l'objecte, cada objecte tindrà la còpia de la variable d'instància. Si s'incrementa, no reflectirà altres objectes. Així, cada objecte tindrà el valor 1 a la variable de recompte.
//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(); } }Prova-ho ara
Sortida:
1 1 1
Programa de comptador per variable estàtica
Com hem esmentat anteriorment, la variable estàtica obtindrà la memòria només una vegada, si algun objecte canvia el valor de la variable estàtica, conservarà el seu valor.
//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(); } }Prova-ho ara
Sortida:
1 2 3
2) Mètode estàtic Java
Si apliqueu la paraula clau estàtica amb qualsevol mètode, es coneix com a mètode estàtic.
- Un mètode estàtic pertany a la classe i no a l'objecte d'una classe.
- Es pot invocar un mètode estàtic sense necessitat de crear una instància d'una classe.
- Un mètode estàtic pot accedir a un membre de dades estàtiques i canviar-ne el valor.
Exemple de mètode estàtic
//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(); } }Prova-ho ara
Output:111 Karan BBDIT 222 Aryan BBDIT 333 Sonoo BBDIT
Un altre exemple de mètode estàtic que realitza un càlcul normal
//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); } }Prova-ho ara
Output:125
Restriccions per al mètode estàtic
Hi ha dues restriccions principals per al mètode estàtic. Ells són:
pel·lícules123 a
- El mètode estàtic no pot utilitzar un membre de dades no estàtic ni cridar directament un mètode no estàtic.
- això i super no es poden utilitzar en un context estàtic.
class A{ int a=40;//non static public static void main(String args[]){ System.out.println(a); } }Prova-ho ara
Output:Compile Time Error
P) Per què el mètode principal de Java és estàtic?
Res) És perquè l'objecte no està obligat a cridar un mètode estàtic. Si fos un mètode no estàtic, JVM crea un objecte primer i després crida al mètode main() que conduirà al problema de l'assignació de memòria addicional.
3) Bloc estàtic Java
- S'utilitza per inicialitzar el membre de dades estàtiques.
- S'executa abans del mètode principal en el moment de la càrrega de classes.
Exemple de bloc estàtic
class A2{ static{System.out.println('static block is invoked');} public static void main(String args[]){ System.out.println('Hello main'); } }Prova-ho ara
Output:static block is invoked Hello main
P) Podem executar un programa sense el mètode main()?
Res) No, una de les maneres era el bloc estàtic, però era possible fins a JDK 1.6. Des del JDK 1.7, no és possible executar una classe Java sense el mètode principal .
class A3{ static{ System.out.println('static block is invoked'); System.exit(0); } }Prova-ho ara
Sortida:
igualtat de cadenes en java
static block is invoked
Des de JDK 1.7 i superior, la sortida seria:
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