O Java é uma linguagem de programação orientada a objetos qu...
O Java é uma linguagem de programação orientada a objetos que tem por característica compilar o código do desenvolvedor para um bytecode que é interpretado por uma máquina Java virtual (JVM). A respeito da utilização de métodos estáticos e operadores matemáticos na linguagem Java, analise o código abaixo e marque a alternativa que indica, corretamente, o valor que será apresentado em tela ao final da sua execução.
-
import java. lang.Math;
public class Teste {
-
public static double inc(double a) {
return ++a + 1.1;
};
public static double inc(int a) {
return Math.pow(a, 2);
};
public static float inc(float a) {
return a++ + 2;
};
public static String inc(String a) {
return a+ 1;
};
public static void main(String args[]) {
float a, b = 1000;
a= inc(b);
System.out.println(a);
}
}
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
Alternativa correta: C - 1002.0
Vamos analisar o código e entender por que a alternativa correta é a letra C.
Primeiramente, é necessário compreender o conceito de sobrecarga de métodos em Java. A sobrecarga permite que uma classe tenha mais de um método com o mesmo nome, desde que suas assinaturas (parâmetros) sejam diferentes.
No código fornecido, há quatro métodos sobrecarregados chamados inc:
public static double inc(double a)public static double inc(int a)public static float inc(float a)public static String inc(String a)
Durante a execução do main, temos:
float a, b = 1000;
a = inc(b);
A variável b é um float e está sendo passada como argumento para o método inc. Logo, o compilador Java seleciona o método inc(float a), pois ele corresponde ao tipo de dado de b.
Dentro do método inc(float a), temos:
return a++ + 2;
O operador a++ primeiro retorna o valor atual de a (que é 1000) e, em seguida, incrementa a. Portanto, a expressão a++ + 2 resulta em 1000 + 2 = 1002.0.
Assim, o valor retornado é atribuído à variável a no método main e, em seguida, impresso no console.
Agora, vamos justificar as alternativas incorretas:
A - 1000000.0: Esta alternativa estaria correta se o método chamado fosse inc(int a), que eleva o valor ao quadrado. No entanto, o tipo do parâmetro b é float, então este método não é chamado.
B - 1002.1: Esta alternativa estaria correta se o método chamado fosse inc(double a), mas o tipo de b é float.
D - 1003: Esta alternativa estaria correta se o operador de incremento fosse pré-incremento e não pós-incremento. ++a resultaria em 1001 + 2 = 1003, mas o código usa a++.
E - 1001: Esta alternativa estaria correta se o incremento não somasse 2. a++ retornaria 1000 e, após o incremento, seria 1001, mas não somaria 2.
Gostou do comentário? Deixe sua avaliação aqui embaixo!
Clique para visualizar este gabarito
Visualize o gabarito desta questão clicando no botão abaixo