Java kodunun çıktısı nedir?

Neyin değerini iki kere atamak istiyorsunuz? Hangi değişkeni neyle karşılaştıracaksınız?
Konuya gelince normalde c'ye değer atamış olsanız ilk koşul doğru olduğu için çıktının ilk koşula bağlı olan olması gerekir. İlk koşul doğruysa belki şu daha doğrudur diye ikinci koşula bakmaz.
 
Son düzenleme:
Ben küçük bir ilave yapayım, primitif (int) ve wrapper (Integer) sınıfların çalışma mantıkları aynı değildir. JVM bazı bir dereceye kadar int, string vb. değerleri cacheler. Küçük değere sahip integerları kıyaslarken == operatörünü kullanabilirsiniz, düzgün çalışır. Değer büyüdüğü zaman yani cache sınırının üzerine çıktığı zaman bunları değerine göre (==) kıyaslarsa yanlış yanıt döner, bu tür öbjeler .equals methodu ile karşılaştırılmalıdır.

Şu kod örneğini breakpointler koyarak incelerseniz, bir gün yerelde test ederken 3, 5 vs. gibi değerlerle test edip de düzgün çalıştığını sandığınız bir kodun production ortama deploy edildiğinde neden düzgün çalışmadığını bulmak için zaman harcamazsınız. (benim gibi 😀)

Kod:
Integer a = 9, b = 9;
        Integer c = 999999, d = 999999;
        int e = 999999, f = 999999;

        if (a == b){
            System.out.println("small integer == working");
        }

        if (a.equals(b)){
            System.out.println("small integer equals working");
        }

        if (c == d){
            System.out.println("integer == working");
        }

        if (c.equals(d)){
            System.out.println("integer equals working");
        }

        if (e == f){
            System.out.println("int == working");
        }

Çıktısı:
small integer == working
small integer equals working
integer equals working
int == working

Yani "integer == working" yazdıracak olan if'in içine girmedi, 999999==999999 false döner, .equals ise true döner.
 

Geri
Yukarı