Skop Pembolehubah di Jawa

1. Gambaran keseluruhan

Di Jawa, seperti dalam bahasa pengaturcaraan, setiap variabel memiliki ruang lingkup. Ini adalah segmen program di mana pemboleh ubah boleh digunakan dan berlaku.

Dalam tutorial ini, kami akan memperkenalkan ruang lingkup yang tersedia di Java dan membincangkan perbezaan di antara mereka.

2. Skop Kelas

Setiap pemboleh ubah yang dinyatakan di dalam kurungan kelas ( {} ) dengan pengubah akses peribadi tetapi di luar kaedah apa pun, mempunyai ruang lingkup kelas. Hasilnya, pemboleh ubah ini boleh digunakan di mana sahaja di kelas, tetapi tidak di luarnya :

public class ClassScopeExample { private Integer amount = 0; public void exampleMethod() { amount++; } public void anotherExampleMethod() { Integer anotherAmount = amount + 4; } }

Kita dapat melihat bahawa ClassScopeExample mempunyai jumlah pemboleh ubah kelas yang dapat diakses dalam kaedah kelas.

Sekiranya kita tidak menggunakan peribadi , ia akan dapat diakses dari keseluruhan pakej. Lihat artikel pengubah akses untuk maklumat tambahan.

3. Skop Kaedah

Apabila pemboleh ubah dinyatakan dalam kaedah, ia mempunyai ruang lingkup kaedah dan hanya akan berlaku dalam kaedah yang sama:

public class MethodScopeExample { public void methodA() { Integer area = 2; } public void methodB() { // compiler error, area cannot be resolved to a variable area = area + 2; } }

Dalam kaedahA , kami membuat pemboleh ubah kaedah yang disebut kawasan . Untuk itu, kita boleh menggunakan area di dalam kaedahA , tetapi kita tidak dapat menggunakannya di tempat lain.

4. Skop Gelung

Sekiranya kita menyatakan pemboleh ubah di dalam gelung, ia akan mempunyai skop gelung dan hanya akan tersedia di dalam gelung:

public class LoopScopeExample { List listOfNames = Arrays.asList("Joe", "Susan", "Pattrick"); public void iterationOfNames() { String allNames = ""; for (String name : listOfNames) { allNames = allNames + " " + name; } // compiler error, name cannot be resolved to a variable String lastNameUsed = name; } }

Kita dapat melihat bahawa kaedah iterasiOfNames mempunyai pemboleh ubah kaedah yang disebut nama . Pemboleh ubah ini hanya boleh digunakan di dalam gelung dan tidak sah di luarnya.

5. Skop Kurungan

Kami dapat menentukan ruang lingkup tambahan di mana sahaja menggunakan tanda kurung ( {} ):

public class BracketScopeExample { public void mathOperationExample() { Integer sum = 0; { Integer number = 2; sum = sum + number; } // compiler error, number cannot be solved as a variable number++; } }

Nombor pemboleh ubah hanya berlaku dalam tanda kurung.

6. Skop dan Pembayang Pembolehubah

Bayangkan bahawa kita mempunyai pemboleh ubah kelas, dan kita ingin menyatakan pemboleh ubah kaedah dengan nama yang sama:

public class NestedScopesExample { String title = "Baeldung"; public void printTitle() { System.out.println(title); String title = "John Doe"; System.out.println(title); } }

Kali pertama kami mencetak judul , ia akan mencetak "Baeldung". Setelah itu, nyatakan pemboleh ubah kaedah dengan nama yang sama dan berikan nilai "John Doe ".

Pemboleh ubah kaedah tajuk mengatasi kemungkinan untuk mengakses tajuk pemboleh ubah kelas sekali lagi. Itulah sebabnya kali kedua, ia akan mencetak "John Doe " .

Keliru, bukan? Ini disebut pembayang bayangan dan bukan amalan yang baik. Lebih baik menggunakan awalan ini untuk mengakses pemboleh ubah kelas tajuk , seperti ini . Tajuk .

7. Kesimpulannya

Kami mempelajari pelbagai bidang yang ada di Jawa.

Seperti biasa, kodnya terdapat di GitHub.