O Java é uma linguagem de programação orientada a objetos qu...

Próximas questões
Com base no mesmo assunto
Q2674713 Arquitetura de Software

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);

}

}

Alternativas

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