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