fernandofagunde 0 Denunciar post Postado Novembro 25, 2016 Gostaria de saber por que o código abaixo imprime 8.0 e não 6.0 . Quando eu chamo t.multi(2.5,2) estou passando um float ou um double e um inteiro, pensava que ele iria executar o primeiro método, mas ele executa o terceiro. Ainda não entendi o porque. public class Teste { public float multi(float f, int n){ return f + n *1; } public int multi(int dbl, double n){ return dbl * (int) n +2; } public double multi(double i, double n){ return i*n +3 ; } public static void main(String[] args){ Teste t =new Teste(); System.out.println(t.multi(2.5, 2)); } } Compartilhar este post Link para o post Compartilhar em outros sites
andreneeto 7 Denunciar post Postado Novembro 25, 2016 Opa, 2.5 só será float caso você o fizer explicitamente (Ex: (float) 2.5 ou new Float(2.5)) caso contrário ele manterá o padrão double. Double é mais preciso que float, logo, ocupa mais memória, vai da sua necessidade utilizar um ou outro. Compartilhar este post Link para o post Compartilhar em outros sites
fernandofagunde 0 Denunciar post Postado Novembro 25, 2016 André, então ele decide pelo primeiro parâmetro qual método deve usar? Pois o segundo parâmetro é um inteiro, mas no método é um double e funciona mesmo assim. obs.: agora entendi a questão do float e do double. Compartilhar este post Link para o post Compartilhar em outros sites
andreneeto 7 Denunciar post Postado Novembro 28, 2016 Não, ele se baseia em todos os parâmetros para decidir qual método usar, no seu caso os valores só se encaixam nesse método. Compartilhar este post Link para o post Compartilhar em outros sites
brunoroh 0 Denunciar post Postado Dezembro 2, 2016 Tudo bem fernando?Oque acontece nesse caso é que sempre que você digita um valor diretamente no codigo, ele considera isso como double.se voce armazenar esse valor 2 em variavel inteira, e depois passar para o método, ai sim ele ira interpretar como um inteiro, más se você digita o valor diretamente, ele considera que esse é double, assim como o valor 2.5. Compartilhar este post Link para o post Compartilhar em outros sites