Στατική λέξη-κλειδί Java (με παραδείγματα)

Σε αυτό το σεμινάριο, θα μάθουμε για τη στατική λέξη-κλειδί Java μαζί με στατικές μεθόδους, στατικές μεταβλητές και στατικά μπλοκ με τη βοήθεια παραδειγμάτων.

Τι είναι μια στατική λέξη-κλειδί στην Java;

Στην Java, εάν θέλουμε να αποκτήσουμε πρόσβαση στα μέλη της τάξης, πρέπει πρώτα να δημιουργήσουμε μια παρουσία της τάξης. Αλλά θα υπάρξουν καταστάσεις όπου θέλουμε να έχουμε πρόσβαση στα μέλη της τάξης χωρίς να δημιουργούμε μεταβλητές.

Σε αυτές τις περιπτώσεις, μπορούμε να χρησιμοποιήσουμε τη staticλέξη-κλειδί στην Java. Αν θέλουμε να αποκτήσουμε πρόσβαση στα μέλη της τάξης χωρίς να δημιουργήσουμε μια παρουσία της τάξης, πρέπει να δηλώσουμε στατικά τα μέλη της τάξης.

Η Mathτάξη στην Java έχει σχεδόν όλα τα μέλη της στατική. Έτσι, μπορούμε να έχουμε πρόσβαση στα μέλη του χωρίς να δημιουργούμε παρουσίες της τάξης των Μαθηματικών. Για παράδειγμα,

 public class Main ( public static void main( String() args ) ( // accessing the methods of the Math class System.out.println("Absolute value of -12 = " + Math.abs(-12)); System.out.println("Value of PI = " + Math.PI); System.out.println("Value of E = " + Math.E); System.out.println("2^2 = " + Math.pow(2,2)); ) )

Έξοδος :

 Απόλυτη τιμή -12 = 12 Τιμή PI = 3.141592653589793 Τιμή E = 2.718281828459045 2 2 = 4.0

Στο παραπάνω παράδειγμα, δεν έχουμε δημιουργήσει εμφανίσεις της Mathτάξης. Αλλά είμαστε σε θέση να έχουν πρόσβαση σε μεθόδους της: abs()και pow()και μεταβλητές: PIκαι E.

Είναι δυνατό επειδή οι μέθοδοι και οι μεταβλητές της Mathτάξης είναι στατικές.

Στατικές μέθοδοι

Οι στατικές μέθοδοι ονομάζονται επίσης μέθοδοι κατηγορίας. Είναι επειδή μια στατική μέθοδος ανήκει στην τάξη και όχι στο αντικείμενο μιας τάξης.

Και μπορούμε να επικαλεστούμε στατικές μεθόδους χρησιμοποιώντας το όνομα της τάξης. Για παράδειγμα,

 class Test ( // static method inside the Test class public static void method() (… ) ) class Main ( // invoking the static method Test.method(); )

Εδώ, μπορούμε να δούμε ότι η στατική μέθοδος μπορεί να προσεγγιστεί απευθείας από άλλες κατηγορίες χρησιμοποιώντας το όνομα της τάξης.

Σε κάθε πρόγραμμα Java, έχουμε δηλώσει τη mainμέθοδο static. Επειδή για την εκτέλεση του προγράμματος το JVM θα πρέπει να μπορεί να επικαλεστεί την κύρια μέθοδο κατά την αρχική φάση όπου δεν υπάρχουν αντικείμενα στη μνήμη.

Παράδειγμα 1: Στατικές και μη στατικές μέθοδοι Java

 class StaticTest ( // non-static method int multiply(int a, int b)( return a * b; ) // static method static int add(int a, int b)( return a + b; ) ) public class Main ( public static void main( String() args ) ( // create an instance of the StaticTest class StaticTest st = new StaticTest(); // call the nonstatic method System.out.println(" 2 * 2 = " + st.multiply(2,2)); // call the static method System.out.println(" 2 + 3 = " + StaticTest.add(2,3)); ) )

Έξοδος :

 2 * 2 = 4 2 + 3 = 5

Στο παραπάνω πρόγραμμα, έχουμε δηλώσει μια μη στατική μέθοδο multiply()και μια στατική μέθοδο που ονομάζεται add()μέσα στην τάξη StaticTest.

Μέσα στην κύρια τάξη, μπορούμε να δούμε ότι καλούμε τη μη στατική μέθοδο χρησιμοποιώντας το αντικείμενο της κλάσης ( st.multiply(2, 2)). Ωστόσο, καλούμε τη στατική μέθοδο χρησιμοποιώντας το όνομα κλάσης ( StaticTest.add(2, 3)).

Στατικές μεταβλητές

Στην Java, όταν δημιουργούμε αντικείμενα μιας κλάσης, τότε κάθε αντικείμενο θα έχει το δικό του αντίγραφο όλων των μεταβλητών της κλάσης. Για παράδειγμα,

 class Test ( // regular variable int age; ) class Main ( // create instances of Test Test test1 = new Test(); Test test2 = new Test(); )

Εδώ, τόσο τα αντικείμενα test1 όσο και test2 θα έχουν ξεχωριστά αντίγραφα της μεταβλητής ηλικίας. Και, διαφέρουν μεταξύ τους.

Ωστόσο, εάν δηλώσουμε μια μεταβλητή στατική, όλα τα αντικείμενα της κλάσης μοιράζονται την ίδια στατική μεταβλητή. Είναι επειδή όπως οι στατικές μέθοδοι, οι στατικές μεταβλητές σχετίζονται επίσης με την τάξη. Και, δεν χρειάζεται να δημιουργήσουμε αντικείμενα της κλάσης για πρόσβαση στις στατικές μεταβλητές. Για παράδειγμα,

 class Test ( // static variable static int age; ) class Main ( // access the static variable Test.age = 20; )

Εδώ, μπορούμε να δούμε ότι έχουμε πρόσβαση στη στατική μεταβλητή από την άλλη τάξη χρησιμοποιώντας το όνομα κλάσης.

Παράδειγμα 2: Στατικές και μη στατικές μεταβλητές Java

 class Test ( // static variable static int max = 10; // non-static variable int min = 5; ) public class Main ( public static void main(String() args) ( Test obj = new Test(); // access the non-static variable System.out.println("min + 1 = " + (obj.min + 1)); // access the static variable System.out.println("max + 1 = " + (Test.max + 1)); ) )

Έξοδος :

 min + 1 = 6 max + 1 = 11

Στο παραπάνω πρόγραμμα, έχουμε δηλώσει μια μη στατική μεταβλητή που ονομάζεται min και μια στατική μεταβλητή που ονομάζεται max μέσα στην κλάση Test.

Μέσα στην κύρια τάξη, μπορούμε να δούμε ότι καλούμε τη μη στατική μεταβλητή χρησιμοποιώντας το αντικείμενο της κλάσης ( obj.min + 1). Ωστόσο, καλούμε τη στατική μεταβλητή χρησιμοποιώντας το όνομα κλάσης ( Test.max + 1).

Σημείωση : Οι στατικές μεταβλητές χρησιμοποιούνται σπάνια στην Java. Αντ 'αυτού, χρησιμοποιούνται οι στατικές σταθερές. Αυτές οι στατικές σταθερές ορίζονται με static finalλέξη-κλειδί και αντιπροσωπεύονται με κεφαλαία. Αυτός είναι ο λόγος για τον οποίο ορισμένα άτομα προτιμούν να χρησιμοποιούν κεφαλαία και για στατικές μεταβλητές.

Πρόσβαση στατικών μεταβλητών και μεθόδων εντός της κλάσης

Έχουμε πρόσβαση στη στατική μεταβλητή από άλλη τάξη. Ως εκ τούτου, χρησιμοποιήσαμε το όνομα της τάξης για πρόσβαση σε αυτό. Ωστόσο, εάν θέλουμε να αποκτήσουμε πρόσβαση στο στατικό μέλος μέσα από την τάξη, μπορεί να έχει άμεση πρόσβαση. Για παράδειγμα,

 public class Main ( // static variable static int age; // static method static void display() ( System.out.println("Static Method"); ) public static void main(String() args) ( // access the static variable age = 30; System.out.println("Age is " + age); // access the static method display(); ) )

Έξοδος :

 Η ηλικία είναι 30 στατική μέθοδος

Εδώ, μπορούμε να έχουμε άμεση πρόσβαση στη στατική μεταβλητή και τη μέθοδο χωρίς να χρησιμοποιήσουμε το όνομα κλάσης. Αυτό συμβαίνει επειδή οι στατικές μεταβλητές και οι μέθοδοι είναι από προεπιλογή δημόσιες. Και, καθώς έχουμε πρόσβαση από την ίδια τάξη, δεν χρειάζεται να καθορίσουμε το όνομα της τάξης.

Στατικά μπλοκ

Στην Java, χρησιμοποιούνται στατικά μπλοκ για την αρχικοποίηση των στατικών μεταβλητών. Για παράδειγμα,

 class Test ( // static variable static int age; // static block static ( age = 23; ) )

Εδώ μπορούμε να δούμε ότι έχουμε χρησιμοποιήσει ένα στατικό μπλοκ με τη σύνταξη:

 static ( // variable initialization )

The static block is executed only once when the class is loaded in memory. The class is loaded if either the object of the class is requested in code or the static members are requested in code.

A class can have multiple static blocks and each static block is executed in the same sequence in which they have been written in a program.

Example 3: Use of static block in java

 class Main ( // static variables static int a = 23; static int b; static int max; // static blocks static ( System.out.println("First Static block."); b = a * 4; ) static ( System.out.println("Second Static block."); max = 30; ) // static method static void display() ( System.out.println("a = " + a); System.out.println("b = " + b); System.out.println("max = " + max); ) public static void main(String args()) ( // calling the static method display(); ) )

Output:

 First Static block. Second Static block. a = 23 b = 92 max = 30

In the above program. as soon as the Main class is loaded,

  • The value of a is set to 23.
  • The first static block is executed. Hence, the string First Static block is printed and the value of b is set to a * 4.
  • The second static block is executed. Hence, the string Second Static block is printed and the value of max is set to 30.
  • Και τέλος, display()εκτελούνται οι δηλώσεις εκτύπωσης μέσα στη μέθοδο .

Ένθετη στατική τάξη

Στην Java, μπορούμε να δηλώσουμε μια τάξη μέσα σε μια άλλη τάξη. Τέτοιες τάξεις είναι γνωστές ως ένθετες τάξεις. Τα ένθετα μαθήματα είναι 2 τύπων:

  • Στατικές ένθετες τάξεις
  • Μη στατικές ένθετες τάξεις

Για παράδειγμα,

 class OuterClass ( // static nested class static class NestedClass (… ) // non-static nested class class InnerClass (… ) )

Για να μάθετε περισσότερα, επισκεφθείτε την τάξη Java Nested.

ενδιαφέροντα άρθρα...