2015-10-04 24 views
-1

我已經開始學習java了。我正在學習java中的Boolean。布爾有兩種類型,true & false。在C中沒有這樣的東西。我們有01。所以,我想知道truefalse是如何工作的?它如何存儲在內存中?它需要1位空間還是更多?它是某種類型的字符串嗎?例如,瞭解Java中的布爾值

class Test { 
public static void main(String[] args) { 
    System.out.println(5 > 6); 
} 

}

我得到:

false 

那麼,什麼是false大小?它看起來像一個java中的字符串。

+5

http://stackoverflow.com/questions/383551/what-is-the-size-of-a-布爾變量在java中 – cool

+0

好吧,那麼假和真? – learner

+0

你是什麼意思? true和false是原始布爾類型。 – cool

回答

2

爲什麼在調用System.out.println()時看到true和false的答案是因爲println方法被重載。其中一種方法利用了布爾

public void println(boolean x) { 
    synchronized (this) { 
     print(x); 
     newLine(); 
    } 
} 

一個參數,並將它調用打印的()方法之一(也重載),其被定義爲。

public void print(boolean b) { 
    write(b ? "true" : "false"); 
} 

這意味着,當你調用的println用布爾JVM將調用顯示方法和將打印「真」或「假」

如果您設置IDE正確,你可以探索源Java庫的代碼,所以你可以看到我上面發佈的方法。

至於大小,因爲其他人發佈,答案是依賴於機器如下所示What is the size of a boolean variable in Java?

+0

@learner好的答案,但如果這回答你的問題,你根本不想知道內部大小或表示。 – EJP

+0

還要確保你瞭解布爾和布爾之間的區別。布爾是一個對象,但布爾是原始的。在你的例子中,你實際上正在處理一個布爾值,它將是5> 6的輸出。 – triadiktyo

+0

@EJP是的,我想知道爲什麼打印出錯誤以及大小和內部表示。你的回答給出了我的答案的一部分,也是細分的。這就是我接受這個答案的原因。 – learner

1

布爾型有兩種類型,true & false。

號布爾一個類型,它有兩個值,真假。

真假工作如何?它如何存儲在內存中?它需要1位空間還是更多?

它沒有被定義,但JVM規範中的措辭主要支持存儲爲0值或1值字節。

它是某種類型的字符串嗎?

那麼,什麼是假的大小?

它沒有定義,也沒有辦法找到它。

它看起來像一個java中的字符串。

不是您迄今爲止提供的證據。

+0

謝謝你的答案。關於「錯誤」輸出。它看起來不像一個字符串嗎?如何在內部處理布爾值? – learner

+1

@learner輸出文本'false'出自'System.out.println(boolean)'的行爲。我建議你看看它。它沒有證明任何有關內部表示的內容。 – EJP

+1

@learner當您打印它時,它會打印爲文本「true」或「false」。這並不意味着它是某種字符串,或者它被存儲爲一個字符串。唯一需要知道的是它只有兩個可能的值。它如何存儲在內存中取決於Java虛擬機,它在JVM的不同實現中可能會有所不同。 – Jesper