В следующей программеФорматирование с помощью 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', они могут быть помещены в бокс (на 'Boolean'). Вот почему вы можете передавать неожиданные типы 'printf', но не' if'. –