Variable Scope di Java

1. Ikhtisar

Di Java, seperti dalam bahasa pemrograman lainnya, setiap variabel memiliki ruang lingkup. Ini adalah segmen program di mana variabel dapat digunakan dan valid.

Dalam tutorial ini, kami akan memperkenalkan cakupan yang tersedia di Java dan membahas perbedaan di antaranya.

2. Ruang Lingkup Kelas

Setiap variabel yang dideklarasikan di dalam kurung kelas ( {} ) dengan pengubah akses privat tetapi di luar metode apa pun, memiliki cakupan kelas. Hasilnya, variabel ini dapat digunakan di mana saja 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 bahwa ClassScopeExample memiliki jumlah variabel kelas yang dapat diakses di dalam metode kelas.

Jika kami tidak menggunakan pribadi , itu akan dapat diakses dari seluruh paket. Lihat artikel pengubah akses untuk informasi tambahan.

3. Lingkup Metode

Ketika sebuah variabel dideklarasikan di dalam sebuah metode, ia memiliki cakupan metode dan hanya akan valid di dalam metode 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; } }

Di methodA , kami membuat variabel metode yang disebut area . Untuk alasan itu, kita bisa menggunakan area di dalam methodA , tapi kita tidak bisa menggunakannya di tempat lain.

4. Lingkup Lingkaran

Jika kita mendeklarasikan variabel di dalam loop, itu akan memiliki cakupan loop dan hanya akan tersedia di dalam loop:

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 bahwa metode iterationOfNames memiliki variabel metode yang disebut nama . Variabel ini hanya dapat digunakan di dalam loop dan tidak valid di luar loop.

5. Lingkup Braket

Kita bisa mendefinisikan cakupan tambahan di mana saja 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++; } }

Variabel jumlah hanya berlaku dalam tanda kurung.

6. Cakupan dan Variabel Shadowing

Bayangkan kita memiliki variabel kelas, dan kita ingin mendeklarasikan variabel metode 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); } }

Pertama kali kami mencetak judul , akan dicetak “Baeldung”. Setelah itu, deklarasikan variabel metode dengan nama yang sama dan tetapkan nilai "John Doe " padanya .

Variabel metode judul menimpa kemungkinan untuk mengakses lagi judul variabel kelas . Karena itulah untuk kedua kalinya, akan muncul tulisan "John Doe " .

Membingungkan, bukan? Ini disebut variabel shadowing dan bukan praktik yang baik. Lebih baik menggunakan awalan ini untuk mengakses variabel kelas judul , seperti this.title .

7. Kesimpulan

Kami mempelajari berbagai cakupan yang ada di Jawa.

Seperti biasa, kode tersedia di GitHub.