In the following program
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);
}
}
The output is
123.456trueA 12365
Can someone please explain how a double value (i.e. 123.456
) is converted to a boolean (ie. true
)
The reason I ask is because I know java does not allow numbers to be used for boolean values. For example, the following is not allowed in Java
if (5) {
//do something
}
Thanks
for "%b" : If the argument arg is null, then the result is "false". If arg is a boolean or Boolean, then the result is the string returned by String.valueOf(). Otherwise, the result is "true".
The API documentation seems to clearly state why.
If the argument arg is null, then the result is "false". If arg is a boolean or Boolean, then the result is the string returned by String.valueOf(). Otherwise, the result is "true".
Because the value is of type double
and this is how the %b
converter works with values of this type.
来源:https://stackoverflow.com/questions/8629995/formatting-using-printf-and-format