2014-07-23 22 views
6

Bu konuyla ilgili daha önce sorduğum birkaç soru ve cevabı okudum [veya oldukça benzer], ancak bunların hiçbiri bu noktayı gerçekten çözmedi. Yeni bir boole değişkeni bildirirken, bu gereksizdir [ör. gereksiz] yanlış başlatmak için? SadeceYanlış bir gereksiz dosyaya bir boole mi ayarlanıyor?

boolean selectedZone; 

ilan karşı

boolean selectedZone = false; 

ben baktım diğer mesajlar Why is Java's default value for Boolean set to true? ve Default value of Boolean in java

+0

Yani soru, varsayılan olarak "false" başlatıldı mantıksal ifadenin bulunmaktadır. Bilmiyorum ve merak ediyorum, C'den geldikten sonra, hiçbir şey almadım, bu yüzden merak ediyorum :) – EpicPandaForce

+0

Peki, booleanların * varsayılan olarak yanlış olduğunu söylerken doğru olur ama Sadece bunu ilan etmenin ve onu bırakmanın herhangi bir sebebi, daha sonra deklarasyon sırasında sahte olarak başlatmak için daha az haktır. – triforceofcourage

+0

Sadece emin olmak uğruna, ilk seçenek için giderdim ve ayrıca o kadar açıkça ** yanlış ** algoritma –

cevap

6

Çoğu durumda gereksizdir. Bunun istisnası, eğer yerel bir değişken ise, bu durumda kullanılmadan önce başlatılması gerekir.Örnekler: Bu konuda

class Example{ 
    boolean value1;//valid, initialized to false 
    public void doStuff(){ 
     boolean value2;//valid, but uninitialized 
     System.out.println(value1);//prints "false" (assuming value1 hasn't been changed) 
     System.out.println(value2);//invalid, because value2 isn't initialized. This line won't compile. 

Bazı belgeler: değişkenlerin başlatıldığı halde https://web.archive.org/web/20140814175549/https://docs.oracle.com/javase/specs/jls/se5.0/html/typesValues.html#96595

, yine de doğrudan ilk değerlerini bildirmek isteyebilirsiniz. Kodu daha okunaklı hale getirebilir ve kodunuzu okuyan kişilerin bu değeri ayarlamanın bilinçli bir karar olduğunu bilmelerini sağlar.

Related

3

Bu gereksiz olduğunu, ama daha net bulabilirsiniz.

Aynı şey:

int var = 0; 

vs.

int var; 

Bunu yapmak değildi:

Standart Değerler

O her zaman gerekli değil Bir alan bildirildiğinde bir değer atayın. Bildirilen ancak başlatılmayan alanlar derleyici tarafından makul varsayılan değerine ayarlanacaktır. Genel anlamda, bu varsayılan , veri türüne bağlı olarak sıfır veya boş olacaktır. Bununla birlikte, bu varsayılan değerlerine güvenmek, genellikle kötü programlama stili olarak kabul edilir.

Aşağıdaki tablo, yukarıdaki veriler için türlerinin varsayılan değerlerini özetler. (Alanlar için)
Veri tipi Varsayılan değer
bayt 0
kısa 0
int 0
uzun 0L
şamandıra
çift 0.0d
Char '\ u0000'
Dize (veya herhangi nesne) boş
boolean 0.0f yanlış

(Source)

Ancak Yorumlar, yerel bir değişkense, başlatılması gerektiğini önerir.

+0

% 100 başlangıçlı sıfırlanır? Eh, sadece gidip kontrol edeyim ... – EpicPandaForce

+0

@Zhuinden, evet int's in Java varsayılan olarak 0'a başlatıldı. –

+1

'int var;' System.out.println ("" + var) ";" var başlatılamamış olabilir "derleme hatasını yerel değişken olarak verir, ancak örnek veya sınıf (statik) değişkeni bu durumda değil Belirtilen değişken bir sınıfın bir alandır eğer '0' – EpicPandaForce

2

Evet, false bunu başlatılıyor açıkça atlayabilirsiniz - ancak sadece sen gerektiği anlamına gelmez çünkü. Açıkça yanlış ayarını

daha net (ve bu davranış varsayılan olmayan diğer dillere gelen geliştiriciler için daha kolay) kodu yapar.

+1

Sizin için bir nokta. Bunu yapmanın nedeni çok basit: herhangi bir şüphe götürüyor. Eğer başlatılmamış bir değişkeni görürsem sadece merak edebilirim: "Bu bilinçsizce başlatılmamıştı, çünkü yanlış olmalı, yoksa belki bir hata mı buldum?" Özellikle çok küçük olmayan ortalama uygulamada, hataların var olan fark edilmeden korunabilmesi için bolca fırsat vardır ve bu nedenle şüpheye yer bırakmak için her türlü çabayı göstermelidir. – Gimby