- Statinis kintamasis
- Skaitiklio programa be statinio kintamojo
- Skaitiklio programa su statiniu kintamuoju
- Statinis metodas
- Statinio metodo apribojimai
- Kodėl pagrindinis metodas yra statinis?
- Statinis blokas
- Ar galime vykdyti programą be pagrindinio metodo?
The statinis raktinis žodis in Java daugiausia naudojamas atminties valdymui. Galime taikyti statinį raktinį žodį su kintamieji , metodai, blokai ir įdėtos klasės . Statinis raktinis žodis priklauso klasei nei klasės egzempliorius.
chown komanda
Statinė gali būti:
- Kintamasis (taip pat žinomas kaip klasės kintamasis)
- Metodas (taip pat žinomas kaip klasės metodas)
- Blokuoti
- Įdėta klasė
1) Java statinis kintamasis
Jei kurį nors kintamąjį paskelbiate statiniu, jis vadinamas statiniu.
- Statinis kintamasis gali būti naudojamas norint nurodyti bendrą visų objektų nuosavybę (kuri nėra unikali kiekvienam objektui), pavyzdžiui, darbuotojų įmonės pavadinimas, studentų kolegijos pavadinimas ir kt.
- Statinis kintamasis atmintį gauna tik vieną kartą klasės srityje klasės įkėlimo metu.
Statinio kintamojo privalumai
Tai sukuria jūsų programą efektyvi atmintis (t. y. taupo atmintį).
Problemos supratimas be statinio kintamojo
class Student{ int rollno; String name; String college='ITS'; }
Tarkime, kad mano kolegijoje yra 500 studentų, dabar visi egzempliorių duomenų nariai gaus atmintį kiekvieną kartą, kai bus sukurtas objektas. Visi studentai turi savo unikalų pavadinimą ir pavadinimą, todėl tokiu atveju egzemplioriaus duomenų narys yra geras. Čia „kolegija“ reiškia bendrą visų nuosavybę objektų . Jei padarysime jį statiniu, šis laukas atmintį gaus tik vieną kartą.
„Java“ statinė nuosavybė bendrinama su visais objektais.
Statinio kintamojo pavyzdys
//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(); } }Išbandykite dabar
Išvestis:
java bool į eilutę
111 Karan ITS 222 Aryan ITS
Skaitiklio programa be statinio kintamojo
Šiame pavyzdyje sukūrėme egzempliorių kintamąjį pavadinimu count, kuris padidinamas konstruktoriuje. Kadangi egzemplioriaus kintamasis atmintį gauna objekto kūrimo metu, kiekvienas objektas turės egzemplioriaus kintamojo kopiją. Jei jis padidinamas, jis neatspindės kitų objektų. Taigi kiekvienas objektas turės reikšmę 1 skaičiavimo kintamajame.
//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(); } }Išbandykite dabar
Išvestis:
1 1 1
Skaitiklio programa pagal statinį kintamąjį
Kaip jau minėjome aukščiau, statinis kintamasis gaus atmintį tik vieną kartą, jei koks nors objektas pakeis statinio kintamojo reikšmę, jis išsaugos savo reikšmę.
//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(); } }Išbandykite dabar
Išvestis:
1 2 3
2) Java statinis metodas
Jei taikote statinį raktinį žodį bet kuriuo metodu, jis vadinamas statiniu metodu.
- Statinis metodas priklauso klasei, o ne klasės objektui.
- Statinį metodą galima iškviesti nekuriant klasės egzemplioriaus.
- Statinis metodas gali pasiekti statinių duomenų narį ir pakeisti jo vertę.
Statinio metodo pavyzdys
//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(); } }Išbandykite dabar
Output:111 Karan BBDIT 222 Aryan BBDIT 333 Sonoo BBDIT
Kitas statinio metodo, kuris atlieka įprastą skaičiavimą, pavyzdys
//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); } }Išbandykite dabar
Output:125
Statinio metodo apribojimai
Yra du pagrindiniai statinio metodo apribojimai. Jie yra:
kartoti per žemėlapį java
- Statinis metodas negali naudoti nestatinio duomenų nario arba tiesiogiai iškviesti nestatinį metodą.
- tai ir super negalima naudoti statiniame kontekste.
class A{ int a=40;//non static public static void main(String args[]){ System.out.println(a); } }Išbandykite dabar
Output:Compile Time Error
Kl.) Kodėl pagrindinis Java metodas yra statinis?
Ans) Taip yra todėl, kad objektas neprivalo iškviesti statinio metodo. Jei tai būtų nestatinis metodas, JVM pirmiausia sukuria objektą, tada iškviečia main() metodą, kuris sukels papildomos atminties paskirstymo problemą.
3) Java statinis blokas
- Naudojamas statinių duomenų nario inicijavimui.
- Klasės įkėlimo metu jis vykdomas prieš pagrindinį metodą.
Statinio bloko pavyzdys
class A2{ static{System.out.println('static block is invoked');} public static void main(String args[]){ System.out.println('Hello main'); } }Išbandykite dabar
Output:static block is invoked Hello main
K) Ar galime vykdyti programą be main() metodo?
Ans) Ne, vienas iš būdų buvo statinis blokas, bet tai buvo įmanoma iki JDK 1.6. Nuo JDK 1.7 neįmanoma vykdyti Java klasės be pagrindinis metodas .
class A3{ static{ System.out.println('static block is invoked'); System.exit(0); } }Išbandykite dabar
Išvestis:
len of masyvo java
static block is invoked
Kadangi JDK 1.7 ir naujesnės versijos, išvestis būtų tokia:
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