Menu
Coddy logo textTech

Sabitler (static final)

Coddy'nin Java Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası — ders 18 / 87.

static ve final anahtar kelimelerinin birleştirilmesi bir sabit oluşturur; bu, sınıfa ait olan ve asla değişemeyen bir değerdir. Bu, Java'da sabitleri tanımlamanın standart yoludur.

public class GameSettings {
    public static final int MAX_PLAYERS = 4;
    public static final double GRAVITY = 9.81;
    public static final String GAME_TITLE = "Space Adventure";
}

Geleneksel olarak, sabit isimleri onları normal değişkenlerden ayırt etmek için UPPER_SNAKE_CASE kullanır. Hem static hem de final oldukları için, onlara sınıf adı üzerinden erişirsiniz ve değerlerinin asla değişmeyeceği garanti edilir:

System.out.println(GameSettings.MAX_PLAYERS);  // 4
// GameSettings.MAX_PLAYERS = 8;  // Hata! Değiştirilemez

Sabitler genellikle public olarak bildirilir çünkü uygulamanız genelinde paylaşılmaları amaçlanır. Math.PI gibi değerleri düşünün - bu, herhangi bir kodun kullanabileceği bir public static final sabitidir.

Neden doğrudan yazılmış değerler yerine sabitler kullanmalısınız? Kodunuzun her yerinde 4 yazarsanız ve daha sonra bunu 6 olarak değiştirmeniz gerekirse, her bir örneği bulup güncellemeniz gerekir. MAX_PLAYERS gibi bir sabitle, değişikliği tek bir yerde yaparsınız.

Sabitler ayrıca kodun daha okunabilir olmasını sağlar - MAX_PLAYERS, gizemli bir 4 değerinden daha nettir.

challenge icon

Görev

Kolay

Önemli matematiksel değerleri sabitler olarak saklayan bir MathConstants yardımcı sınıfı ve bu sabitleri hesaplamalar yapmak için kullanan bir CircleCalculator oluşturalım.

Kodunuzu düzenlemek için iki dosya oluşturacaksınız:

  • MathConstants.java: public static final alanlarını kullanarak matematiksel sabitleri tutan bir sınıf oluşturun:
    • 3.14159 değerine sahip PI
    • 2.71828 değerine sahip E (Euler sayısı)
    • 1.61803 değerine sahip GOLDEN_RATIO
    Sabit isimleri için UPPER_SNAKE_CASE kullanmayı unutmayın!
  • Main.java: Daire hesaplamaları yapmak için sabitlerinizi kullanın. Girdi olarak bir yarıçap alacaksınız ve üç satır yazdıracaksınız:
    • Dairenin alanı: Area: [value]
    • Dairenin çevresi: Circumference: [value]
    • Altın oranla ölçeklendirilmiş çap: Golden Diameter: [value]

Hesaplamalar için:

  • Area = PI * radius * radius
  • Circumference = 2 * PI * radius
  • Golden Diameter = 2 * radius * GOLDEN_RATIO

Bir girdi alacaksınız: yarıçap (double).

Tüm çıktı değerlerini String.format("%.2f", value) kullanarak 2 ondalık basamağa formatlayın. Sabitlerinize MathConstants.PI gibi sınıf adı üzerinden erişin.

Kopya kağıdı

static ve final anahtar kelimelerini birleştirmek bir sabit oluşturur - sınıfa ait olan ve asla değişemeyen bir değer:

public class GameSettings {
    public static final int MAX_PLAYERS = 4;
    public static final double GRAVITY = 9.81;
    public static final String GAME_TITLE = "Space Adventure";
}

Geleneksel olarak, sabit isimleri UPPER_SNAKE_CASE kullanır. Sabitlere sınıf adı üzerinden erişin:

System.out.println(GameSettings.MAX_PLAYERS);  // 4
// GameSettings.MAX_PLAYERS = 8;  // Hata! Değiştirilemez

Sabitler genellikle uygulamanız genelinde paylaşılmak üzere public olarak bildirilir. Sabit kodlanmış değerleri anlamlı isimlerle değiştirerek kodun bakımını kolaylaştırır ve okunabilirliğini artırırlar.

Kendin dene

import java.util.Scanner;

class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        double radius = scanner.nextDouble();
        
        // TODO: MathConstants.PI kullanarak alanı hesaplayın
        // Formül: PI * radius * radius
        
        // TODO: MathConstants.PI kullanarak çevreyi hesaplayın
        // Formül: 2 * PI * radius
        
        // TODO: MathConstants.GOLDEN_RATIO kullanarak altın çapı hesaplayın
        // Formül: 2 * radius * GOLDEN_RATIO
        
        // TODO: Sonuçları virgülden sonra 2 basamak olacak şekilde yazdırın
        // Biçimlendirme için String.format("%.2f", value) kullanın
        // Çıktı formatı:
        // Area: [value]
        // Circumference: [value]
        // Golden Diameter: [value]
        
    }
}
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Nesne Yönelimli Programlama bölümündeki tüm dersler