web-dev-qa-db-ja.com

printfとformatを使用したフォーマット

次のプログラムで

class ZiggyTest2 {

    public static void main(String[] args){     

        double x = 123.456;
        char c = 65;
        int i = 65;

        System.out.printf("%s",x);
        System.out.printf("%b",x);
        System.out.printf("%c",c);
        System.out.printf("%5.0f",x);
        System.out.printf("%d",i);
    }       
}

出力は

123.456trueA  12365

誰かがdouble値(つまり123.456)がブール値(つまりtrue)に変換される方法を説明してください

私が尋ねる理由は、Javaではブール値に数字を使用できないことを知っているからです。たとえば、Javaでは以下は許可されません

if (5) {
 //do something
}

ありがとう

33
ziggy

for "%b":引数argがnullの場合、結果は "false"です。 argがブール値またはブール値の場合、結果はString.valueOf()によって返される文字列です。それ以外の場合、結果は「true」です。

参照

98
dku.rajkumar

APIドキュメント は、理由を明確に述べているようです。

引数argがヌルの場合、結果は「false」です。 argがブール値またはブール値の場合、結果はString.valueOf()によって返される文字列です。それ以外の場合、結果は「true」です。

10
Kal

値はdouble型であり、これが%bコンバーターは、このタイプの値で機能します。

0
Jagger