web-dev-qa-db-fra.com

Formatage à l'aide de printf et du format

Dans le programme suivant

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 sortie est

123.456trueA  12365

Quelqu'un peut-il expliquer comment une double valeur (c'est-à-dire 123.456) est converti en booléen (c'est-à-dire. true)

La raison pour laquelle je pose la question est parce que je sais Java ne permet pas d'utiliser des nombres pour les valeurs booléennes. Par exemple, ce qui suit n'est pas autorisé en Java

if (5) {
 //do something
}

Merci

33
ziggy

pour "% b": Si l'argument arg est nul, alors le résultat est "faux". Si arg est un booléen ou un booléen, le résultat est la chaîne renvoyée par String.valueOf (). Sinon, le résultat est "vrai".

référence

98
dku.rajkumar

Documentation API semble indiquer clairement pourquoi.

Si l'argument arg est nul, le résultat est "faux". Si arg est un booléen ou un booléen, le résultat est la chaîne renvoyée par String.valueOf (). Sinon, le résultat est "vrai".

10
Kal

Parce que la valeur est de type double et c'est ainsi que le %b Le convertisseur fonctionne avec des valeurs de ce type.

0
Jagger