resolução exercicios java básico

5 respostas
Shponja

Peguei num teste de Java do ano passado e resolvi os primeiros 4 exercicios de escolha multipla, no entanto não estou muito seguro das minhas respostas e gostaria de saber se alguém me pode ajudar e corrigir-mr caso estejam erradas, agradecia tamb´em uma explicação do porquê a minha resposta estar errada e do porquê da outra ser a certa.

Os exercicios são:

1) A palavra reservada this
A refere o objecto implícito na chamada a um método de instância.
B refere o objecto implícito na chamada a um método estático.
C refere o objecto implícito na chamada a um qualquer método e é usado para
aceder às variáveis de instância.

  1. A execução da sequência de instruções:

byte[] d ={1,0,1,0}; int s=0; for(int j=0, i=1; j<4; j++, i*=2) s+=i*d[d.length‐j‐1];
guarda em s o valor …
A … 4 .
B … 8.
C … 10 .

  1. Para verificar se o conteúdo de dois objectos (do tipo X) é igual deve-se?
    A … usar o operador ==
    B … implementar um método de instância, por exemplo designado boolean compareMe(X o), que compara o
    conteúdo dos dois objectos.
    C … implementar um método estático, por exemplo designado boolean compareMe(X o), que compara o
    conteúdo dos dois objectos.

  2. Considere o troço de código seguinte:

int[] a = new int[9]; int i; for (i = 0; i < 9; i++) a[i] = 8‐i; for (i = 0; i < 9; i++) a[i] = a[a[i]];
O conteúdo do array a depois da execução do código é?
A [0, 1, 2, 3, 4, 3, 2, 1, 0]
B [8, 7, 6, 5, 4, 3, 2, 1, 0]
C [0, 1, 2, 3, 4, 5, 6, 7, 8]

A mina resposta foi:

A
C
B
A

5 Respostas

J

Olá XD

A primeira pergunta mais parece um teste de lingua portuguesa do que de programação … mas … relembrando o q eu aprendi na escola tentei entender a pergunta e:

Sua resposta na primeira está incorreta …

você disse que this “refere o objecto implícito na chamada a um método de instância.”

mas ele não se refere só a métodos de instancia, o this pode se referir a metodos e variaveis estaticos e tambem de instancia…

portanto a opção correta seria a C

para provar isso

public class Comparacao {
	
	public static void main(String[] args) {
		new Comparacao().realiza();
	}
	static String a = "minha string estatica";
	String b = "minha string de instancia";
	
	void realiza(){
		
	this.getBook2(); // estou chamando um metodo de instancia
		
	this.getBook(); // estou chamando um metodo statico usando this
	
	this.a = "mudei a minha string statica usando this";
	
	this.b ="mudei a minha string de instancia usando this";
	
	System.out.println("valor de a "+a);
	System.out.println("valor de b"+b);
	
	}
	
	void getBook2(){
		
		System.out.println("chamei o metodo de instancia");
	}
	
	static void getBook(){		
		
		System.out.println("chamei o metodo estatico");
	}
	
	
}

o código acima imprime

chamei o metodo de instancia
chamei o metodo estatico
valor de a mudei a minha string statica usando this
valor de bmudei a minha string de instancia usando this

as outras questões estão corretas …

lembrando que … eu respondi de acordo com o que eu conheço … não sou Deus, pode estar errado

FALOWS

tinorberto
  1. Acho que e a letra B

a) Errada pois não podemos usar o operador == para comparar se os objetos atributos tem valores iguais , usando == o que você está comparando é o endereço de memória dos objetos, não seus conteúdos

b) Certo , pois agora estamos comparando o conteudo dos objetos , o que foi instanciado e o que foi passado pelo parametro.

c) Errado pois a ideia de se usar um metodo estatico e não precisar do conteudo do objeto , e neste caso vamos precisar comparar os campos dos objetos

Acho que e isso …

  1. O primeiro for faz o seguinte coloca no array a 8 7 6 5 4 3 2 1 0
    o segundo for para i =0 a[0] = a[a[0]] => a[8] => 0
    i=1 a[1] = a[a[1]] => a[7] => 1 (vou pular mas a logica e a mesma) 2 3
    i=4 a[4] = a[a[4]] => a[4] => 4
    para o i >= 5 tem um detalhe a[5] = a[a[5]] => a[3] => 3 //acessos o array q foi modificado
    assim por diante

resposta letra a

acho q e isso …flw

Lavieri

1 e 3 estão corretas…

1 = A
3 = B

as outras duas, é so vc compilar ^^ e verificar

victorwss

Na verdade na 1 nenhuma das alternativas é correta. Mais a mais correta é a letra A.
this em escopo estático causa erro de compilação, portanto B é falsa.
this é usado para variáveis (atributos) de instância e métodos de instância. E não pode ser usado em métodos estáticos, portanto C é falsa.

O problema da letra A é que this não é usado só em métodos de instância. Também pode ser usado em construtores, blocos de inicialização de instância e na inicialização de atributos de instância também.

Na 3, o correto seria sobrescrever o método equals e utilizá-lo para comparar (ou seja, todas as alternativas estão erradas). No entanto, a B é a menos errada (use compareMe ao invés de equals). A letra A está errada porque == não compara o conteúdo, apenas se é o mesmo objeto ou não, e não se são dois objetos iguais ou não.
A letra C está errada porque não há this em método estático e só é passado como parâmetro um objeto, logo não tem de onde se retirar o outro objeto para comparar.

Não estou com saco para ver a resposta da 2 e da 4, porque são muito trabalhosas para analisar, já são 2 da manhã e estou cansado. Além disso, o compilador sabe responder para você estas duas questões sem deixar dúvidas.

EDIT:
javando, o que você fez não mostra nada. Olhe este exemplo:

public class X { private int a; public static void x() { this.a = 5; // Erro de compilação. } }

J

ixi … falei q pra mim o problema era o idioma rsrs

pelo o q eu entendi, na alternativa A da 1 esta dizendo que a palavra this só pode chamar metodos de instancia … q é um erro

eu achei a C certa … pq tah dizendo q serve pra metodos estaticos e de instancia e variaveis de instancia tambem …
eu não achei q na alternativa eles estivessem perguntando se o this pode ser colocado dentro de um método estatico … achei q esta perguntando se pode chamar um metodo estatico

Criado 4 de janeiro de 2009
Ultima resposta 5 de jan. de 2009
Respostas 5
Participantes 5