Kapsam
- Java kursu
- Başlangıç
- Ders 75/116
- 4 dk
Metot içi değişken kapsamını öğrenirsin.
Kapsam: değişken nerede yaşar?
Bir değişken, tanımlandığı blok içinde geçerlidir. Buna kapsam (scope) denir. Blok kapandığında değişken yok olur.
static void f() {
int x = 5;
System.out.println(x); // x burada geçerli
}
// x burada geçerli DEĞİLMetot parametreleri de o metoda özeldir; başka metottan erişilemez. İç içe bloklarda dış bloğun değişkenleri iç blokta görülür, fakat tersi geçerli değildir.
İsim çakışması ve gölgeleme
İç blokta, dış blokla aynı isimde değişken tanımlamak yasaktır; derleme hatası alırsın. Fakat metot parametresiyle aynı isimde bir sınıf değişkeni varsa, parametre gölgeleme (shadowing) yapar.
static int x = 10; // sınıf değişkeni
static void f(int x) {
System.out.println(x); // parametre x
}Karışıklığı önlemek için isimleri farklı tutmak iyi bir uygulamadır. Sınıf değişkenine erişmek için this.x kullanılır (ileride göreceksin).
Uygulama Yerel ve sınıf değişkeni
Sınıf düzeyinde static int counter = 0; tanımla. increment metodu her çağrıldığında counter'ı 1 artırıp yeni değeri yazdırsın. main içinden increment'i üç kez çağır.
Başlangıç kodu
public class Main {
// Sayaç için sınıf düzeyinde bir değişken tanımla (başlangıç 0)
public static void main(String[] args) {
// increment metodunu üç kez çağır
}
// static void increment metodunu tanımla
}Örnek çözüm
static int counter = 0;
static void increment() {
counter++;
System.out.println(counter);
}
// main içinde:
increment();
increment();
increment();Beklenen çıktı
1 2 3
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Bildirim yeri ve kapsamı eşleştir
| Kavram | Anlamı |
|---|---|
Metot içinde |
Metot boyunca geçerli |
Metot parametresi |
Sadece metot gövdesinde |
for döngüsü içinde |
Döngü bloğunda |
Sınıfın en üstü |
Tüm metotlarda |
2 Bir metot içinde tanımlanan değişkene başka metottan erişilebilir mi?
- Hayır, değişken o metoda özeldir
- Sadece public olarak tanımlanırsa
- Evet, ama sadece static metotlardan
- Evet, sınıf geneline yayılır Doğru cevap
Açıklama: Yerel değişkenler sadece kendi metotlarında yaşar.
3 Boşluğu doldur: blok kapsamı
static void f() {
for (int i = 0; i < 3; i++) {
int t = i * 2;
}
// t burada ____ geçerli DEĞİL
}
static void f() {
for (int i = 0; i < 3; i++) {
int t = i * 2;
}
// t burada geçerli geçerli DEĞİL
}
Açıklama: t döngü bloğunun dışında geçerli değildir.