2009-06-04 32 views
26

Trong khi tôi biết rằng theo định nghĩa, boolean chỉ bao gồm hai trạng thái, true hoặc false. Tôi đã tự hỏi những gì giá trị hiện một boolean có trước khi nó được khởi tạo với một trong những tiểu bang.Trạng thái boolean thứ ba trong java là gì?

+48

Trạng thái boolean thứ ba thường là FileNotFound. – Brian

+6

@Brian, điều đó không phụ thuộc vào việc bạn có thực hiện Paula Bean không? –

+11

@Paul: Khi bạn không quan sát, nó không tồn tại. Hàm lượng tử sụp đổ chỉ khi bạn mở cửa: D – talonx

Trả lời

69

It defaults to false.

Edit: Nhu cầu phổ biến:

trừ khi bạn đang sử dụng gói Boolean, mặc định là null. - sudhir.j

+3

Nói chung, các biến Java mặc định cho những gì các lập trình viên C có thể gọi là các giá trị "falsey" — ví dụ: 0, null, false, v.v. – hbw

+11

trừ khi bạn đang sử dụng gói Boolean, mặc định là null. –

+0

@ sudhir.j hoàn toàn đúng. Tôi hy vọng rằng câu trả lời sẽ được chỉnh sửa để bao gồm điều đó. –

16

Nếu đó là biến cục bộ, đó là lỗi trình biên dịch để tham chiếu trước khi được khởi tạo. Nếu nó là một trường, nó được khởi tạo thành false.

+0

tương tự với nội dung mảng –

1

Trong các loại boolean JAVA mặc định là Sai.

2

Không có trạng thái thứ ba. Như @Yishai đã nói, nếu bạn không gán giá trị, các trường boolean mặc định là false. biến cục bộ phải được chỉ định trước khi sử dụng:

Tiếp cận một uninitialized địa phương biến sẽ cho kết quả trong một thời gian biên dịch lỗi

Xem the doc.

0

Nếu bạn có một cái gì đó giống như

boolean isTrue; 

System.out.println(isTrue); 

Bạn sẽ nhận được một lỗi thời gian biên dịch vì boolean không được khởi tạo. Theo mặc định khi bạn cố gắng khởi tạo, nó sẽ được đặt thành false;

+2

Có, nhưng nếu boolean là một biến cá thể, nó mặc định là false, không có cảnh báo. –

9
public class NewMain { 

    boolean foo; 
    Boolean bar; 

    public static void main(String[] args) { 
     NewMain obj = new NewMain(); 

     obj.whatBoolean(); 
    } 

    public void whatBoolean() { 
     System.out.println(foo); 
     System.out.println(bar); 
    } 
} 

đầu ra

false 
null 

Tôi biết điều này là triết học nhiều hơn một câu hỏi, nhưng nhờ autoboxing bạn có thể sử dụng Java như một ngôn ngữ OO gần như thực sự (Tôi ghét phải loại nguyên thủy ... bây giờ chỉ nếu nó cũng hoạt động ngược lại). Nó, tuy nhiên, thay đổi hành vi khi bạn sử dụng một đối tượng (cho IMO tốt hơn).

1

FYI, boolean mặc định là false, số nguyên mặc định là 0, 0L, 0f hoặc 0d khi thích hợp, mặc định là '\ 0', tham chiếu đối tượng (chẳng hạn như Boolean) mặc định là null.

Điều này cũng áp dụng cho nội dung của mảng. (Một dấu hiệu phổ biến là một mảng các đối tượng ban đầu đầy các giá trị null)

Các vấn đề liên quan