MC600 - Segundo semestre de 2003 - LISTA 11 ------------------------------------------- 1. Considere as duas classes definidas abaixo: public class Ponto{ public int x; public int y; public Ponto(int x, int y){ this.x = x; this.y = y; } } public class Retangulo { public int largura = 0; public int altura = 0; public Point origem; public Retangulo(Ponto p, int l, int a) { origem = p; largura = l; altura = a; } // Um metodo para mover o retangulo public void move(int x, int y) { origem.x = x; origem.y = y; } // um metodo para calcular a area do retangulo public int area() { return largura * altura; } } O código a seguir cria um Ponto e um Retângulo. Ponto ponto = new Ponto(3,5); Retangulo retangulo = new Retangulo(ponto, 20, 40); ponto = null a. Quantas referências há para cada um destes objetos depois que este trecho de código é executado? b. Qual destes objetos pode ser eliminado se a máquina virtual resolver executar um procedimento de "garbage collection"? c. A reposta para o item b mudaria se o método retangulo.move( new Ponto(3,5) ) fosse chamado logo depois de ponto = null? Por que? 2. Considere a String abaixo: String Oops = "Houston, we have a problem!"; a. Qual o valor retornado pela chamada do método Oops.charAt(12)? b. Defina uma expressão* que retorna o caracter '!'. c. Defina uma expressão* que retorna a String "Houston". * Esta expressão tem, obviamente, que usar a string referenciada por Oops! 3. Qual o valor retornado pela expressão Integer(1).equals(new Long(1))? Por que? 4. Que expressão usa-se para obter o tamanho de um vetor vet ? E de uma string str ? 5. Se s1 e s2 são instâncias da classe StringBuffer, qual é a diferença entre a comparação s1 == s2 e a comparação s1.equals(s2)?