Je sais ce type int ne peut pas être traité comme type à double j'ai vu sur http://docs.oracle.com/javase/7/docs/api/java/lang/Math.html, qui prend Math.sqrt en double, j'ai vu que la signature de la méthode pour Math.sqrt estPourquoi math.sqrt fonctionne-t-il avec un type déclaré d'int?
sqrt(double a)
Pourquoi ce morceau de code travail (je l'ai testé) et compiler?
int k = 4;
Math.sqrt(4);
Pour moi, il y a une analogie semblable à
class A{}
class B extends A{}
void methodA(B someB){
}
if I try
B b= new B();
A a = new A();
b.methodA(a); //compile error, not of right type
Je trouve que cela fonctionne pour toute méthode qui prend en double. Quelqu'un peut-il expliquer ce qui se passe et pourquoi le compilateur ne vous donne pas une erreur? L'int est-il implicitement converti en un double?
je ne pouvais pas trouver sur un thread
Java devs ont pensé qu'il serait pratique pour permettre des conversions automatiques entre types de numéros. – wvdz
@popovitsj: c'est incomplet. Cela fonctionne pour les opérations d'élargissement (donc non bidirectionnelles) pour les types de référence et de valeur (donc pas seulement les types 'nombre'). –