Analise o código da classe Java (ClasseX) a seguir:public cl...

Próximas questões
Com base no mesmo assunto
Ano: 2011 Banca: ISAE Órgão: AL-AM Prova: ISAE - 2011 - AL-AM - Analista de Sistemas |
Q2896269 Arquitetura de Software

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:

Alternativas

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