Analise o código da classe Java (ClasseX) a seguir:public cl...
Analise o código da classe Java (ClasseX) a seguir:
public class ClasseX {
public int var1 = 4;
public static int var2 = 7;
public static void main(String[] args) {
ClasseX c1 = new ClasseX();
System.out.print(mudaValor(5,9)+ ", " + c1.var1 + ", " + c1.var2
+ ", ");
mudaValor(var2,c1.var1);
System.out.print(c1.var1 + ", " + var2);
}
public static int mudaValor(int par1, int par2){
ClasseX c2 = new ClasseX();
c2.var1 = var2 + par1;
var2 = par2 + par1;
return c2.var1 + par1;
}
}
Após a execução do método main(), o resultado obtido na saída padrão foi:
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
Gabarito: Alternativa A
Vamos entender o código Java detalhadamente e como ele leva ao resultado da alternativa correta.
O código Java apresentado no enunciado envolve o uso de variáveis de instância e variáveis estáticas, além da chamada de um método estático que modifica essas variáveis. Para resolver a questão, precisamos analisar cada passo da execução do código.
1. Inicialização das variáveis:
Na classe ClasseX, temos:
public int var1 = 4; (variável de instância)
public static int var2 = 7; (variável estática)
2. Execução do método main:
ClasseX c1 = new ClasseX(); – Cria um objeto c1 de ClasseX.
System.out.print(mudaValor(5, 9) + ", " + c1.var1 + ", " + c1.var2 + ", "); – Vamos quebrar essa linha:
a. Chamada do método mudaValor(5, 9):
- ClasseX c2 = new ClasseX(); – Cria um novo objeto c2.
- c2.var1 = var2 + par1; – c2.var1 = 7 + 5 = 12.
- var2 = par2 + par1; – var2 = 9 + 5 = 14.
- O retorno do método é c2.var1 + par1: 12 + 5 = 17.
Portanto, System.out.print(17 + ", " + c1.var1 + ", " + c1.var2 + ", "); – imprime "17, 4, 14, ".
3. Segunda chamada do método mudaValor:
mudaValor(var2, c1.var1); – com var2 = 14 e c1.var1 = 4.
- ClasseX c2 = new ClasseX(); – Cria um novo objeto c2.
- c2.var1 = var2 + par1; – c2.var1 = 14 + 14 = 28.
- var2 = par2 + par1; – var2 = 4 + 14 = 18.
- O retorno do método é c2.var1 + par1: 28 + 14 = 42, mas esse valor não é utilizado aqui.
System.out.print(c1.var1 + ", " + var2); – imprime c1.var1 (que é 4) e var2 (que é 18).
Portanto, System.out.print(4 + ", " + 18); – imprime "4, 18".
Conclusão:
A saída completa é "17, 4, 14, 4, 18".
Justificativa das alternativas:
Alternativa A: Correta. A saída é "17, 4, 14, 4, 18".
Alternativas B, C, D e E: Incorretas. Essas alternativas não correspondem ao resultado obtido pela execução do código, conforme explicado acima.
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