JavaRush /Blog Java /Random-PL /Przerwa kawowa #142. Jaką rolę odgrywa słowo kluczowe sta...

Przerwa kawowa #142. Jaką rolę odgrywa słowo kluczowe static w Javie?

Opublikowano w grupie Random-PL
Źródło: FreeCodeCamp Słowo kluczowe static może być używane w różnych częściach kodu Java, takich jak zmienne, metody i bloki statyczne. Dziś dowiemy się dokładnie jak można to zastosować w praktyce. Przerwa kawowa #142.  Jaką rolę odgrywa słowo kluczowe static w Javie?  - 1Głównym celem używania słowa kluczowego static w Javie jest oszczędzanie pamięci. Kiedy tworzymy zmienną w klasie, do której będą miały dostęp inne klasy, musimy najpierw utworzyć instancję klasy, a następnie przypisać nową wartość do każdej instancji zmiennej. Jest to konieczne, aby wartości nowych zmiennych były takie same dla wszystkich nowych klas/obiektów. Ale kiedy tworzymy zmienne statyczne, ich wartość pozostaje stała we wszystkich pozostałych klasach i nie musimy tworzyć instancji, aby użyć zmiennej. W ten sposób zmienną tworzymy raz, więc pamięć jest przydzielana tylko raz. Zrozumiesz to lepiej na kilku przykładach w tym artykule.

Jak utworzyć zmienną statyczną w Javie

Aby zrozumieć, jak używać słowa kluczowego static podczas tworzenia zmiennych, przyjrzyjmy się zwykłemu sposobowi tworzenia zmiennych, które są wspólne dla każdej instancji klasy.
class Student {
    String studentName;
    String course;
    String school;

    public static void main(String[] args) {
        Student Student1 = new Student();
        Student Student2 = new Student();

        Student1.studentName = "Ihechikara";
        Student1.course = "Data Visualization";
        Student1.school = "freeCodeCamp";

        Student2.studentName = "John";
        Student2.course = "Data Analysis with Python";
        Student2.school = "freeCodeCamp";

        System.out.println(Student1.studentName + " " + Student1.course + " " + Student1.school + "\n");
        // Ihechikara Data Visualization freeCodeCamp
        System.out.println(Student2.studentName + " " + Student2.course + " " + Student2.school);
        // John Data Analysis with Python freeCodeCamp
    }
}
Wyjaśnię krok po kroku, co wydarzyło się w powyższym kodzie. Stworzyliśmy klasę Student z trzema zmiennymi – studentName , kurs i szkoła . Następnie utworzyliśmy dwie instancje klasy Student :
Student Student1 = new Student();
Student Student2 = new Student();
Pierwsza instancja to Student1 , która ma dostęp do zmiennych utworzonych w swojej klasie, posiada następujące wartości:
Student1.studentName = "Ihechikara";
Student1.course = "Data Visualization";
Student1.school = "freeCodeCamp";
Drugi przypadek miał następujące znaczenie:
Student2.studentName = "John";
Student2.course = "Data Analysis with Python";
Student2.school = "freeCodeCamp";
Jeśli przyjrzysz się uważnie, zauważysz, że obaj uczniowie noszą tę samą nazwę szkoły – „freeCodeCamp”. Ale co by było, gdybyśmy musieli stworzyć 100 uczniów w tej samej szkole? Oznacza to, że zainicjujemy zmienną tą samą wartością 100 razy, za każdym razem przydzielając nową pamięć. Dla niektórych może to nie być problemem, ale przy dużej bazie kodu może znacznie spowolnić działanie programu. Aby rozwiązać ten problem, użyjemy słowa kluczowego static do utworzenia zmiennej szkolnej . Następnie wszystkie instancje klasy mogą używać tej zmiennej. Coś takiego:
class Student {
    String studentName;
    String course;
    static String school;

    public static void main(String[] args) {
        Student Student1 = new Student();
        Student Student2 = new Student();


        Student1.studentName = "Ihechikara";
        Student1.course = "Data Visualization";
        Student1.school = "freeCodeCamp";


        Student2.studentName = "John";
        Student2.course = "Data Analysis with Python";

        System.out.println(Student1.studentName + " " + Student1.course + " " + Student1.school + "\n");
        // Ihechikara Data Visualization freeCodeCamp
        System.out.println(Student2.studentName + " " + Student2.course + " " + Student2.school);
        // John Data Analysis with Python freeCodeCamp
    }
}
W tym kodzie utworzyliśmy zmienną statyczną o nazwie school . Zwróć uwagę, że słowo kluczowe static poprzedza typ danych i nazwę zmiennej: static String school = "freeCodeCamp"; . Teraz, gdy tworzymy nową instancję naszej klasy, nie musimy inicjować zmiennej szkolnej dla każdej instancji. W naszym kodzie tylko w pierwszej instancji przypisaliśmy wartość zmiennej, a następnie została ona odziedziczona w kolejnej instancji. Należy zauważyć, że zmiana wartości zmiennej statycznej w dowolnym miejscu kodu zastępuje wartość w innych częściach kodu, w których została wcześniej zadeklarowana. Dlatego słowa kluczowego static należy używać tylko w przypadku zmiennych, które mają pozostać stałe w programie. Możesz także przypisać wartość do zmiennej podczas jej tworzenia, dzięki czemu nie będziesz musiał jej ponownie deklarować podczas tworzenia instancji klasy: static String school = "freeCodeCamp"; . Oto, co otrzymasz, jeśli użyjesz tej metody:
class Student {
    String studentName;
    String course;
    static String school = "freeCodeCamp";

    public static void main(String[] args) {
        Student Student1 = new Student();
        Student Student2 = new Student();


        Student1.studentName = "Ihechikara";
        Student1.course = "Data Visualization";

        Student2.studentName = "John";
        Student2.course = "Data Analysis with Python";

        System.out.println(Student1.studentName + " " + Student1.course + " " + Student1.school + "\n");
        // Ihechikara Data Visualization freeCodeCamp
        System.out.println(Student2.studentName + " " + Student2.course + " " + Student2.school);
        // John Data Analysis with Python freeCodeCamp
    }
}
Teraz zobaczysz, jak inicjować zmienne statyczne za pomocą bloków statycznych.

Jak utworzyć metodę statyczną w Javie

Zanim przyjrzymy się przykładowi, oto kilka rzeczy, które musisz wiedzieć o metodach statycznych w Javie:
  • Metody statyczne mogą jedynie uzyskiwać dostęp do zmiennych statycznych i je modyfikować.
  • Metody statyczne można wywoływać/używać bez tworzenia instancji klasy.
Oto przykład, który pomoże Ci to zrozumieć:
class EvenNumber {

    static int evenNumber;

    static void incrementBy2(){
        evenNumber = evenNumber + 2;
        System.out.println(evenNumber);
    }

    public static void main(String[] args) {
        incrementBy2(); // 2
        incrementBy2(); // 4
        incrementBy2(); // 6
        incrementBy2(); // 8
    }
}
W powyższym kodzie utworzyliśmy liczbę całkowitą ( evenNumber ) w klasie o nazwie EvenNumber . Nasza metoda statyczna nazywa się inkrementacjaBy2() . Ta metoda zwiększa wartość liczby całkowitej EvenNumber i drukuje jej wartość. Bez tworzenia instancji klasy mogliśmy wywołać metodę inkrementacjiBy2() w metodzie głównej programu . Za każdym razem, gdy wywoływaliśmy metodę, wartość EvenNumber była zwiększana o 2 i drukowana. Podczas wywoływania metody możesz także dołączyć nazwę klasy do metody, używając notacji z kropką: EvenNumber.inkrementBy2(); . Każda metoda statyczna należy do klasy, a nie do instancji klasy.

Jak utworzyć blok statyczny w Javie

Bloki statyczne w Javie są podobne do konstruktorów. Możemy ich użyć do inicjowania zmiennych statycznych, są one wykonywane przez kompilator przed metodą główną .
class Block {

    static int year;

    static {
        year = 2022;
        System.out.println("This code block got executed first");
    }

    public static void main(String[] args) {

        System.out.println("Hello World");
        System.out.println(year);
    }
}
W powyższym kodzie utworzyliśmy statyczną zmienną całkowitą year . Następnie zainicjowaliśmy go w bloku statycznym:
static {
        year = 2022;
        System.out.println("This code block got executed first");
    }
Jak widać, blok statyczny można utworzyć za pomocą słowa kluczowego static i nawiasów klamrowych. W statycznym bloku naszego kodu zainicjowaliśmy zmienną roku wartością 2022. Wydrukowaliśmy także tekst: „Ten blok kodu został wykonany jako pierwszy”. W metodzie głównej wydrukowaliśmy „Hello World” i statyczną zmienną rok . W konsoli kod zostanie wykonany w następującej kolejności:
Ten blok kodu został wykonany jako pierwszy w Hello World 2022
To wyraźnie pokazuje, jak kod w bloku statycznym jest wykonywany jako pierwszy przed metodą główną .

Wniosek

W tym artykule omówiliśmy słowo kluczowe static w Javie. Jest to słowo kluczowe, które w zasadzie pomaga nam zoptymalizować pamięć w programach napisanych w Javie. Na przykładach widzieliśmy także, jak tworzyć zmienne i metody statyczne. Na koniec rozmawialiśmy o blokach statycznych, których można użyć do inicjowania zmiennych statycznych. Bloki statyczne są wykonywane przed metodą główną. Miłego kodowania!
Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION