Ключове слово static використовується для створення методів, які існуватимуть незалежно від того, чи згенеровано екземпляри класу чи ні. Будь-який метод, який використовує ключове слово static, називається статичним методом.
Особливості статичного методу:
- Статичний метод у Java — це метод, який є частиною класу, а не екземпляром цього класу.
- Кожен екземпляр класу має доступ до методу.
- Статичні методи мають доступ до змінних класу (статичних змінних) без використання об’єкта (примірника) класу.
- Тільки статичні дані можуть бути доступні за допомогою статичного методу. Він не може отримати доступ до даних, які не є статичними (змінні екземпляра).
- Як у статичних, так і в нестатичних методах, до статичних методів можна отримати прямий доступ.
Синтаксис для оголошення статичного методу:
Access_modifier static void methodName() { // Method body. }>
Ім'я класу можна використовувати для виклику або доступу до статичних методів.
Синтаксис виклику статичного методу:
className.methodName();>
Приклад 1: статичний метод не має доступу до змінної екземпляра
JVM спочатку запускає статичний метод, а потім створює екземпляри класу. Оскільки жоден об’єкт не доступний, коли використовується статичний метод. Статичний метод не має доступу до змінних екземпляра. Як наслідок, статичний метод не може отримати доступ до змінної екземпляра класу.
Java
// Java program to demonstrate that> // The static method does not have> // access to the instance variable> > import> java.io.*;> > public> class> GFG {> > // static variable> > static> int> a => 40> ;> > > // instance variable> > int> b => 50> ;> > > void> simpleDisplay()> > {> > System.out.println(a);> > System.out.println(b);> > }> > > // Declaration of a static method.> > static> void> staticDisplay()> > {> > System.out.println(a);> > }> > > // main method> > public> static> void> main(String[] args)> > {> > GFG obj => new> GFG();> > obj.simpleDisplay();> > > // Calling static method.> > staticDisplay();> > }> }> |
dfs проти bfs
>
>Вихід
40 50 40>
Приклад 2: як у статичних, так і в нестатичних методах доступ до статичних методів здійснюється безпосередньо.
Java
// Java program to demonstrate that> // In both static and non-static methods,> // static methods are directly accessed.> > import> java.io.*;> > public> class> StaticExample {> > > static> int> num => 100> ;> > static> String str => 'GeeksForGeeks'> ;> > > // This is Static method> > static> void> display()> > {> > System.out.println(> 'static number is '> + num);> > System.out.println(> 'static string is '> + str);> > }> > > // non-static method> > void> nonstatic()> > {> > // our static method can accessed> > // in non static method> > display();> > }> > > // main method> > public> static> void> main(String args[])> > {> > StaticExample obj => new> StaticExample();> > > // This is object to call non static function> > obj.nonstatic();> > > // static method can called> > // directly without an object> > display();> > }> }> |
пропустити список
>
>Вихід
static number is 100 static string is GeeksForGeeks static number is 100 static string is GeeksForGeeks>
Навіщо використовувати статичні методи?
- Для доступу та зміни статичних змінних та інших необ’єктних статичних методів.
- Допоміжні та корисні класи часто використовують статичні методи.
Обмеження в статичних методах:
- Нестатичні елементи даних або нестатичні методи не можуть використовуватися статичними методами, а статичні методи не можуть викликати нестатичні методи безпосередньо.
- У статичному середовищі це та супер не можна використовувати.
чому є основним методом у Java статичний?
Це тому, що виклик статичного методу не потрібен об’єкту. Якби це була нестатична функція, JVM спочатку створила б об’єкт перед викликом методу main(), що призвело б до ускладнень із виділенням додаткової пам’яті.
Різниця між статичним методом і методом екземпляра
Методи екземплярів | Статичні методи |
---|---|
Для цього потрібен об’єкт класу. | Для цього не потрібен об’єкт класу. |
Він може отримати доступ до всіх атрибутів класу. | Він може отримати доступ лише до статичного атрибута класу. |
Доступ до методів можна отримати лише за допомогою посилання на об’єкт. | Доступ до методу здійснюється лише за назвою класу. |
Синтаксис: Objref.methodname() | Синтаксис: className.methodname() |
Це приклад програмування передавання за значенням. | Це приклад програмування за посиланням. |