Rumah Java javaTutorial Keajaiban `statik` di Jawa: Satu untuk Semua, dan Semua untuk Satu!

Keajaiban `statik` di Jawa: Satu untuk Semua, dan Semua untuk Satu!

Sep 10, 2024 pm 06:30 PM

The Magic of `static` in Java: One for All, and All for One!

Sejujurnya—apabila kita mula-mula menjumpai kata kunci statik, kita semua berfikir: "Sihir jenis apakah ini?" ? Tetapi jangan risau, saya di sini untuk memecahkannya dengan cara yang mudah, mendalam dan mungkin juga menyeronokkan!

Bayangkan anda berada di sebuah parti?. Anda dan semua rakan anda memakai topi. Tetapi hanya ada satu topi yang semua orang perlu kongsi. Ini pada asasnya yang dilakukan oleh kata kunci statik di Jawa! Daripada mencipta topi untuk setiap rakan (yang boleh menjadi kucar-kacir), anda mempunyai satu topi yang dimiliki oleh kumpulan itu—kelas—dan anda semua boleh bergilir-gilir memakainya.

Sekarang kita sudah memikirkan gambaran itu, mari kita selami perkara yang sebenarnya dilakukan oleh statik di Jawa.


Apakah Maksud Statik Genap?

Secara ringkasnya, apabila anda menggunakan kata kunci statik dalam Java, anda berkata, "Hei, perkara ini di sini adalah milik kelas itu sendiri, bukan kepada mana-mana objek khusus kelas itu."

Ini bermakna:

  1. Tidak memerlukan objek: Anda tidak perlu mencipta objek untuk menggunakan pembolehubah statik atau kaedah. Panggil sahaja terus!
  2. Dikongsi merentas semua objek: Jika anda membuat objek, kesemuanya berkongsi bahan statik yang sama. Satu perubahan memberi kesan kepada semua orang. Ia seperti topi parti global?!

Pembolehubah Statik: Topi Parti ?

Pembolehubah statik adalah seperti topi yang dikongsi semua orang. Jika anda menukar topi (cth., lekatkan bulu ke dalamnya), semua orang melihat perubahan itu.

Contoh:

class Party {
    static int numberOfGuests = 0; // static variable

    Party() {
        numberOfGuests++;  // Increment the guest count every time someone joins the party
    }
}

public class Main {
    public static void main(String[] args) {
        Party guest1 = new Party();
        Party guest2 = new Party();
        Party guest3 = new Party();

        System.out.println(Party.numberOfGuests);  // Output: 3 ?
    }
}
Salin selepas log masuk

Dalam contoh, semua tetamu berkongsi pembolehubah numberOfGuests. Setiap tetamu baharu tidak mendapat kiraan tetamu mereka sendiri (bayangkan huru-hara!). Sebaliknya, semua orang mengemas kini kiraan yang sama. Sekarang, tidak kira berapa ramai tetamu yang tiba, hanya terdapat satu numberOfGuests, dan ia tergolong dalam Kelas Parti, bukan milik mana-mana tetamu individu.


Kaedah Statik: Lelaki Penghantar Pizza ?

Kaedah statik adalah seperti lelaki penghantar piza di parti—anda boleh menghubungi mereka dan mereka akan muncul tanpa memerlukan jemputan (objek). Tidak kira berapa banyak pesta yang anda ada, lelaki pizza yang sama menghantar pizza kepada mereka semua ?. Anda hanya memanggil tempat piza (kelas), dan mereka muncul!

Contoh:

class PizzaShop {
    static void deliverPizza() {
        System.out.println("Pizza delivered! ?");
    }
}

public class Main {
    public static void main(String[] args) {
        PizzaShop.deliverPizza();  // No need to create a PizzaShop object
    }
}
Salin selepas log masuk

Dalam contoh di atas, anda tidak perlu mencipta objek PizzaShop untuk mendapatkan piza. Anda memanggil kaedah terus dari kelas. Kerana mengapa anda ingin membuat kedai setiap kali anda lapar?


Blok Statik: Pemeriksaan Bunyi DJ ?

Sebelum parti bermula, DJ buat sound check kan? Itu seperti blok statik. Ia dijalankan sekali, sebelum apa-apa lagi berlaku, untuk memastikan semuanya sudah sedia.

Contoh:

class Party {
    static String music;

    // Static block to set up the DJ's playlist ?
    static {
        music = "Let's Dance by David Bowie";
        System.out.println("Music is set up: " + music);
    }
}

public class Main {
    public static void main(String[] args) {
        System.out.println("Party is starting with: " + Party.music);
    }
}
Salin selepas log masuk

Blok statik dilaksanakan sebelum mana-mana pihak bermula. Muzik telah disediakan lebih awal, jadi apabila tetamu tiba, mereka sudah berarak ?.


Kelas Bersarang Statik: Kawasan VIP ?

Kelas bersarang statik adalah seperti bahagian VIP di parti itu. Mereka berada di dalam acara utama, tetapi mereka bebas—anda tidak perlu membuat parti untuk mengakses bahagian VIP.

Contoh:

class Party {
    static class VIPArea {
        void exclusiveService() {
            System.out.println("Welcome to the VIP area! ?");
        }
    }
}

public class Main {
    public static void main(String[] args) {
        Party.VIPArea vip = new Party.VIPArea();  // No need for a Party object
        vip.exclusiveService();  // Output: Welcome to the VIP area! ?
    }
}
Salin selepas log masuk

Walaupun kawasan VIP adalah sebahagian daripada parti, anda tidak memerlukan parti penuh untuk menggunakannya. Ia berdiri sendiri—seperti ruang istirahat VIP yang sejuk dan tenang di dalam acara yang rancak.


Mengapa Gunakan statik?

Sekarang, anda mungkin berfikir, “Ini bagus dan semuanya, tetapi bilakah saya perlu menggunakan statik?” Nah, inilah helaian tipu:

  1. Untuk pemalar: Perkara yang tidak pernah berubah (seperti Pi). Gunakan akhir statik untuk pemalar, cth., PI berganda akhir statik = 3.14159;
  2. Untuk kaedah utiliti: Fungsi yang tidak bergantung pada mana-mana keadaan objek. Fikirkan Math.pow().
  3. Untuk data kongsi: Apabila semua kejadian kelas harus berkongsi nilai, seperti mengira berapa kali sesuatu telah dibuat.
  4. Untuk kecekapan: Elakkan membuat objek apabila anda tidak memerlukannya. Hanya gunakan kaedah statik atau pembolehubah sebaliknya!

Di Sebalik Tabir: Bagaimanakah statik berfungsi? ?️

Baiklah, masa untuk mengintip di sebalik tirai. Begini cara keajaiban berlaku:

  1. Pengurusan Memori: Pembolehubah statik dan kaedah hidup dalam kawasan kaedah ingatan (bukan dalam timbunan tempat objek hidup). Ini bermakna mereka dimuatkan sekali apabila kelas pertama kali dimuatkan, dan mereka kekal di sana sehingga program tamat.
  2. Permulaan: Pembolehubah statik dan blok dimulakan apabila kelas dimuatkan ke dalam memori (bukan apabila objek dicipta). Jadi, ia sedia untuk digunakan sebelum sebarang objek dibuat.
  3. Akses: Anda tidak memerlukan objek untuk mengakses pembolehubah statik atau kaedah kerana ia tergolong dalam kelas, bukan kepada mana-mana objek tertentu.

Ia seperti menyediakan meja snek sebelum tetamu tiba. Anda tidak perlu meminta setiap tetamu membawa makanan mereka sendiri—mereka hanya membantu diri mereka sendiri untuk mendapatkan makanan ringan yang dikongsi ?.


Awas: Jangan Berlebihan! ?

Seperti kebanyakan perkara, terlalu banyak statik boleh menjadi perkara yang buruk. Berikut adalah beberapa amaran:

  • Tiada Objek, Tiada Akses kepada Bahan Bukan Statik: Kaedah statik tidak boleh mengakses pembolehubah atau kaedah bukan statik (contoh) kerana ia tergolong dalam kelas, bukan objek. Dalam erti kata lain, lelaki piza itu tidak dapat membantu anda memilih senarai main—dia hanya berurusan dengan piza ?.
  • Keselamatan Benang: Jika berbilang benang mengubah suai pembolehubah statik yang sama, keadaan boleh menjadi kucar-kacir (melainkan anda mengendalikan penyegerakan). Bayangkan dua tetamu berebut topi yang sama—kekacauan berlaku! ?

Penggulungan: Statik secara ringkas

Kata kunci statik di Java adalah seperti DJ, lelaki piza dan ruang istirahat VIP di sebuah parti—kata kunci ini menjadikan segala-galanya lebih lancar, lebih cekap dan dikongsi di kalangan semua tetamu. Sama ada anda berurusan dengan kaedah utiliti, data yang dikongsi atau hanya mahu menjimatkan memori, statik adalah rakan anda.

Tetapi ingat, jangan ubah semuanya menjadi percuma untuk semua yang statik! Gunakannya dengan bijak, dan kod anda akan bersih, cekap dan bebas daripada huru-hara ?.


Itu sahaja! Kini anda sudah bersedia untuk menggugurkan pengetahuan statik seperti profesional ?.


Atas ialah kandungan terperinci Keajaiban `statik` di Jawa: Satu untuk Semua, dan Semua untuk Satu!. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

<🎜>: Bubble Gum Simulator Infinity - Cara Mendapatkan dan Menggunakan Kekunci Diraja
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Nordhold: Sistem Fusion, dijelaskan
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Mandragora: Whispers of the Witch Tree - Cara Membuka Kunci Cangkuk Bergelut
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Tutorial Java
1673
14
Tutorial PHP
1278
29
Tutorial C#
1257
24
Adakah perisian keselamatan syarikat menyebabkan aplikasi gagal dijalankan? Bagaimana cara menyelesaikan masalah dan menyelesaikannya? Adakah perisian keselamatan syarikat menyebabkan aplikasi gagal dijalankan? Bagaimana cara menyelesaikan masalah dan menyelesaikannya? Apr 19, 2025 pm 04:51 PM

Penyelesaian masalah dan penyelesaian kepada perisian keselamatan syarikat yang menyebabkan beberapa aplikasi tidak berfungsi dengan baik. Banyak syarikat akan menggunakan perisian keselamatan untuk memastikan keselamatan rangkaian dalaman. …

Bagaimanakah saya menukar nama kepada nombor untuk melaksanakan penyortiran dan mengekalkan konsistensi dalam kumpulan? Bagaimanakah saya menukar nama kepada nombor untuk melaksanakan penyortiran dan mengekalkan konsistensi dalam kumpulan? Apr 19, 2025 pm 11:30 PM

Penyelesaian untuk menukar nama kepada nombor untuk melaksanakan penyortiran dalam banyak senario aplikasi, pengguna mungkin perlu menyusun kumpulan, terutama dalam satu ...

Bagaimana untuk memudahkan isu pemetaan medan dalam dok sistem menggunakan mapstruct? Bagaimana untuk memudahkan isu pemetaan medan dalam dok sistem menggunakan mapstruct? Apr 19, 2025 pm 06:21 PM

Pemprosesan pemetaan medan dalam dok sistem sering menemui masalah yang sukar ketika melaksanakan sistem dok: bagaimana untuk memetakan medan antara muka sistem dengan berkesan ...

Bagaimanakah Idea IntelliJ mengenal pasti nombor port projek boot musim bunga tanpa mengeluarkan log? Bagaimanakah Idea IntelliJ mengenal pasti nombor port projek boot musim bunga tanpa mengeluarkan log? Apr 19, 2025 pm 11:45 PM

Mula musim bunga menggunakan versi IntelliJideaultimate ...

Bagaimana dengan elegan mendapatkan nama pemboleh ubah kelas entiti untuk membina keadaan pertanyaan pangkalan data? Bagaimana dengan elegan mendapatkan nama pemboleh ubah kelas entiti untuk membina keadaan pertanyaan pangkalan data? Apr 19, 2025 pm 11:42 PM

Apabila menggunakan Mybatis-Plus atau Rangka Kerja ORM yang lain untuk operasi pangkalan data, sering diperlukan untuk membina syarat pertanyaan berdasarkan nama atribut kelas entiti. Sekiranya anda secara manual setiap kali ...

Bagaimana cara menukar objek Java dengan selamat ke array? Bagaimana cara menukar objek Java dengan selamat ke array? Apr 19, 2025 pm 11:33 PM

Penukaran objek dan tatasusunan Java: Perbincangan mendalam tentang risiko dan kaedah penukaran jenis cast yang betul Banyak pemula Java akan menemui penukaran objek ke dalam array ...

Platform e-dagang SKU dan Reka Bentuk Pangkalan Data SPU: Bagaimana untuk mengambil kira kedua-dua atribut yang ditakrifkan oleh pengguna dan produk yang tidak berkesudahan? Platform e-dagang SKU dan Reka Bentuk Pangkalan Data SPU: Bagaimana untuk mengambil kira kedua-dua atribut yang ditakrifkan oleh pengguna dan produk yang tidak berkesudahan? Apr 19, 2025 pm 11:27 PM

Penjelasan terperinci mengenai reka bentuk jadual SKU dan SPU di platform e-dagang Artikel ini akan membincangkan isu reka bentuk pangkalan data SKU dan SPU dalam platform e-dagang, terutamanya bagaimana menangani jualan yang ditentukan pengguna ...

Bagaimana menggunakan penyelesaian cache Redis untuk merealisasikan keperluan senarai kedudukan produk dengan cekap? Bagaimana menggunakan penyelesaian cache Redis untuk merealisasikan keperluan senarai kedudukan produk dengan cekap? Apr 19, 2025 pm 11:36 PM

Bagaimanakah penyelesaian caching Redis menyedari keperluan senarai kedudukan produk? Semasa proses pembangunan, kita sering perlu menangani keperluan kedudukan, seperti memaparkan ...

See all articles