- Статичка променљива
- Програм бројача без статичке променљиве
- Програм бројача са статичком променљивом
- Статичка метода
- Ограничења за статичку методу
- Зашто је главни метод статичан?
- Статички блок
- Можемо ли извршити програм без главног метода?
Тхе статична кључна реч ин Јава се углавном користи за управљање меморијом. Можемо применити статичну кључну реч са Променљиве , методе, блокови и угнежђене класе . Статична кључна реч припада класи него инстанци класе.
листа сортирај по јава
Статика може бити:
- Променљива (позната и као променљива класе)
- Метод (познат и као метод класе)
- Блокирати
- Угнежђена класа
1) Јава статичка променљива
Ако декларишете било коју променљиву као статичку, она је позната као статичка променљива.
- Статичка променљива се може користити за упућивање на заједничку особину свих објеката (која није јединствена за сваки објекат), на пример, назив компаније запослених, назив факултета студената итд.
- Статичка променљива добија меморију само једном у области класе у време учитавања класе.
Предности статичке променљиве
То чини ваш програм меморијски ефикасан (тј. штеди меморију).
Разумевање проблема без статичке променљиве
class Student{ int rollno; String name; String college='ITS'; }
Претпоставимо да на мом колеџу има 500 студената, сада ће сви чланови података инстанце добити меморију сваки пут када се објекат креира. Сви ученици имају свој јединствени роллно и име, тако да је члан података инстанце добар у том случају. Овде се 'колеџ' односи на заједничку имовину свих објеката . Ако га учинимо статичним, ово поље ће добити меморију само једном.
Јава статичко својство се дели са свим објектима.
Пример статичке променљиве
//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(); } }Тестирајте одмах
Излаз:
111 Karan ITS 222 Aryan ITS
Програм бројача без статичке променљиве
У овом примеру смо креирали променљиву инстанце под називом цоунт која се повећава у конструктору. Пошто променљива инстанце добија меморију у време креирања објекта, сваки објекат ће имати копију променљиве инстанце. Ако се повећа, неће одражавати друге објекте. Дакле, сваки објекат ће имати вредност 1 у променљивој бројања.
//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(); } }Тестирајте одмах
Излаз:
јава обрнути низ
1 1 1
Програм бројача по статичкој променљивој
Као што смо поменули горе, статичка променљива ће добити меморију само једном, ако било који објекат промени вредност статичке променљиве, она ће задржати своју вредност.
//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(); } }Тестирајте одмах
Излаз:
1 2 3
2) Јава статичка метода
Ако примените статичну кључну реч са било којом методом, она је позната као статичка метода.
- Статички метод припада класи, а не објекту класе.
- Статички метод се може позвати без потребе за креирањем инстанце класе.
- Статички метод може приступити статичком члану података и може променити његову вредност.
Пример статичке методе
//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(); } }Тестирајте одмах
Output:111 Karan BBDIT 222 Aryan BBDIT 333 Sonoo BBDIT
Још један пример статичке методе која обавља нормалан прорачун
//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); } }Тестирајте одмах
Output:125
Ограничења за статичку методу
Постоје два главна ограничења за статичку методу. Су:
асции од а у јава
- Статички метод не може користити нестатичке чланове података или директно позвати нестатичку методу.
- ово и супер се не могу користити у статичком контексту.
class A{ int a=40;//non static public static void main(String args[]){ System.out.println(a); } }Тестирајте одмах
Output:Compile Time Error
П) Зашто је главни Јава метод статичан?
Одговор) То је зато што објекат није обавезан да позове статички метод. Да је то био нестатичан метод, ЈВМ прво креира објекат, а затим позива маин() метод који ће довести до проблема додатне алокације меморије.
3) Јава статички блок
- Користи се за иницијализацију статичког члана података.
- Извршава се пре главног метода у време учитавања класе.
Пример статичког блока
class A2{ static{System.out.println('static block is invoked');} public static void main(String args[]){ System.out.println('Hello main'); } }Тестирајте одмах
Output:static block is invoked Hello main
П) Можемо ли извршити програм без маин() методе?
Одговор) Не, један од начина је био статички блок, али то је било могуће до ЈДК 1.6. Од ЈДК 1.7, није могуће извршити Јава класу без главни метод .
class A3{ static{ System.out.println('static block is invoked'); System.exit(0); } }Тестирајте одмах
Излаз:
потхинени рам
static block is invoked
Од ЈДК 1.7 и новијих, излаз би био:
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