在下面的程序格式化用printf和格式
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
是否有人可以解釋的雙精度值(即123.456
)如何轉換爲一個布爾(即true
)
我問的原因是因爲我知道java不允許將數字用於布爾值。例如,下面是Java不允許
if (5) {
//do something
}
感謝
我覺得這是很好的指出,還有就是使用布爾值之間的重要區別在'if'陳述與在'printf'。也就是說,一個'if'語句需要一個原始的'boolean'(或一個'Boolean'對象,它將被拆箱)。所以任何非布爾值都是不允許的。然而,'printf'要求它的參數是'Object'類型,即任何類型。因此,編譯器不會對'printf'的參數進行任何限制:即使它們是像'boolean'這樣的基本類型,它們也可以被裝箱(布爾型)。這就是爲什麼你可以傳遞意想不到的類型到'printf'而不是'if'。 – 2016-06-04 02:41:03