En el siguiente programaFormateo usando printf y el formato
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);
}
}
La salida es
123.456trueA 12365
Por favor alguien puede explicar cómo un doble valor (es decir 123.456
) se convierte en un valor lógico (es decir. true
)
La razón por la que pregunto es porque sé que java no permite el uso de números para valores booleanos. Por ejemplo, no se permite lo siguiente en Java
if (5) {
//do something
}
Gracias
creo que es bueno señalar que existe una diferencia importante entre el uso de booleanos en 'if' declaraciones frente en' printf'. Es decir, una instrucción 'if' requiere un' boolean' primitivo (o un objeto 'Boolean', que será unboxed). Por lo tanto, no se permite ningún valor no booleano. Sin embargo, 'printf' requiere que sus argumentos sean de tipo' Object', es decir, de cualquier tipo. Por lo tanto, el compilador no pone ninguna restricción sobre los argumentos a 'printf': incluso si son tipos primitivos como' boolean', pueden estar enmarcados (a 'Boolean'). Esta es la razón por la que puede pasar tipos inesperados a 'printf' pero no a' if'. –