logo

Java статична ключова дума

  1. Статична променлива
  2. Програма на брояча без статична променлива
  3. Програма на брояча със статична променлива
  4. Статичен метод
  5. Ограничения за статичния метод
  6. Защо главният метод е статичен?
  7. Статичен блок
  8. Можем ли да изпълним програма без основен метод?

The статична ключова дума в Java се използва главно за управление на паметта. Можем да приложим статична ключова дума с променливи , методи, блокове и вложени класове . Ключовата дума static принадлежи на класа, отколкото на екземпляр на класа.

ляво съединяване срещу дясно съединяване

Статиката може да бъде:

  1. Променлива (известна също като променлива на клас)
  2. Метод (известен също като метод на клас)
  3. Блокирайте
  4. Вложен клас
Статично в Java

1) Статична променлива на Java

Ако декларирате която и да е променлива като статична, тя е известна като статична променлива.

  • Статичната променлива може да се използва за препращане към общото свойство на всички обекти (което не е уникално за всеки обект), например името на фирмата на служителите, името на колежа на студентите и т.н.
  • Статичната променлива получава памет само веднъж в областта на класа по време на зареждането на класа.

Предимства на статичната променлива

Това прави вашата програма ефективна памет (т.е. спестява памет).

Разбиране на проблема без статична променлива

 class Student{ int rollno; String name; String college='ITS'; } 

Да предположим, че има 500 студенти в моя колеж, сега всички членове на данни на екземпляр ще получават памет всеки път, когато обектът бъде създаден. Всички студенти имат свое уникално rollno и име, така че членът на данните за екземпляр е добър в такъв случай. Тук „колеж“ се отнася до общата собственост на всички обекти . Ако го направим статично, това поле ще получи паметта само веднъж.

Статичното свойство на Java се споделя за всички обекти.

Пример за статична променлива

 //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(); } } 
Тествайте сега

Изход:

сайтове като coomeet
 111 Karan ITS 222 Aryan ITS 

Програма на брояча без статична променлива

В този пример създадохме променлива на екземпляр с име count, която се увеличава в конструктора. Тъй като променливата на екземпляра получава паметта по време на създаването на обекта, всеки обект ще има копие на променливата на екземпляра. Ако се увеличи, няма да отразява други обекти. Така че всеки обект ще има стойност 1 в променливата 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(); } } 
Тествайте сега

Изход:

 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

Ако приложите статична ключова дума с който и да е метод, той е известен като статичен метод.

  • Статичният метод принадлежи на класа, а не на обекта на класа.
  • Статичен метод може да бъде извикан без необходимост от създаване на екземпляр на клас.
  • Статичният метод може да има достъп до статични данни и да променя стойността им.

Пример за статичен метод

 //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 

Ограничения за статичния метод

Има две основни ограничения за статичния метод. Те са:

конвертиране на байтов масив в низ
  1. Статичният метод не може да използва член от нестатични данни или да извиква директно нестатичен метод.
  2. this и super не могат да се използват в статичен контекст.
 class A{ int a=40;//non static public static void main(String args[]){ System.out.println(a); } } 
Тествайте сега
 Output:Compile Time Error 

В) Защо основният метод на Java е статичен?

Отг.) Това е така, защото не се изисква обектът да извиква статичен метод. Ако беше нестатичен метод, JVM първо създава обект, след което извиква метод main(), който ще доведе до проблема с разпределянето на допълнителна памет.


3) Java статичен блок

  • Използва се за инициализиране на статичния член на данните.
  • Изпълнява се преди основния метод по време на зареждането на класа.

Пример за статичен блок

 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 

Q) Можем ли да изпълним програма без метод main()?

Отг.) Не, един от начините беше статичният блок, но беше възможно до JDK 1.6. От JDK 1.7 не е възможно да се изпълни Java клас без основен метод .

 class A3{ static{ System.out.println('static block is invoked'); System.exit(0); } } 
Тествайте сега

Изход:

java локална дата и час
 static block is invoked 

От JDK 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