Nel seguente programmaformattazione utilizzando printf e il 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);
}
}
L'uscita è
123.456trueA 12365
Qualcuno può spiegare come un valore doppio (cioè 123.456
) viene convertito in un valore booleano (es. true
)
Il motivo che mi chiedo è perché so Java non consente numeri da utilizzare per i valori booleani. Ad esempio, il seguente non è consentito in Java
if (5) {
//do something
}
Grazie
penso che sia bello far notare che v'è una differenza importante tra l'uso di booleani in 'if' dichiarazioni contro in' printf'. Cioè, una dichiarazione 'if' richiede un boolean' primitiva' (o un oggetto 'boolean', che sarà unboxed). Quindi qualsiasi valore non booleano non è permesso. Tuttavia, 'printf' richiede che i suoi argomenti siano di tipo' Object', cioè qualsiasi tipo. Così, il compilatore non pone alcuna restrizione le argomentazioni a 'printf': anche se sono tipi primitivi come' boolean', possono essere inscatolati (a 'boolean'). Questo è il motivo per cui puoi passare tipi inaspettati a 'printf' ma non a' if'. –