Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

fernandofagunde

Dúvida Java Básico

Recommended Posts

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

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.