Exercício 1: Criação de objetos usando o operador new. Introdução: Neste exercício você exercitará o conceito da criação de instâncias de objetos usando o operador new. Mais tarde você aprenderá a criar instâncias de suas próprias classes. (1.1) Criar instâncias da classe String usando o operador new Passos a seguir: 1. Crie um projeto no JCreator. Adicione a esse projeto a classe ClasseEObjeto.java cujo código é mostrado na figura a seguir. Leia com atenção os comentários. 2. Compile e rode o código anterior. Certifique-se de que o resultado seja: Trabalho adicional: 3. Modifique o arquivo ClasseEObjeto.java de modo que ele atenda às seguintes especificações: Crie outra instância da classe String usando o operador new. Inicialize o novo objeto com o valor: o “Sou outra instancia da classe String” 4. Compile e rode o código (1.2) Criar instâncias da classe Integer usando o operador new Passos a seguir: 1. Modifique a classe ClasseEObjeto.java como mostrado a seguir: 2. Compile e rode o código anterior. Certifique-se de que o resultado seja: Trabalho adicional: 3. Modifique o arquivo ClasseEObjeto.java de modo que ele atenda às seguintes especificações: Crie outra instância da classe Long usando o operador new. Mostre o valor do objeto criado usando o método System.out.println(...) 4. Compile e rode o código Exercício 2: Métodos estáticos e métodos de instância. Introdução: Neste exercício você aprenderá como invocar tanto métodos estáticos quanto métodos de instância de uma classe. Observe que um método estático é invocado na forma: NomeDaClasse.nomeDoMetodoEstatico Exemplo: Integer.parseInt("25"); // parseInt() é um método estático da classe Integer Um método não-estático (de instância) só pode ser invocado através de uma instância da classe: nomeDoObjeto.nomeDoMetodoNaoEstatico Exemplo: String str1 = new String(“Hello”); char x = str1.charAt(0); // cria uma instancia da classe String // invoca um método de instância da classe // String através do objeto str1 (2.1) Uso de métodos estáticos (de classe) e não estáticos (de instância) 1. Crie um projeto no JCreator. Adicione a esse projeto a classe MetodosEstaticos_Instancia.java a seguir: 2. Compile e rode o código 3. Verifique que o resultado é: Trabalho adicional: 4. Escreva a classe MetodosEstaticos_Instancia2.java a seguir. Compile e observe os erros de compilação que você obteve. Corrija esses erros de modo que o programa compile e rode. Trabalho adicional: 5. Identifique no código abaixo os métodos estáticos e não estáticos. Exercício 3: Passagem por valor e passagem por referência Introdução: Neste exercício você exercitará os conceitos de passagem por valor. Observe que as variáveis de tipos primitivos são passadas por valor enquanto que objetos são passados por referência. Um array é considerado como sendo um objeto e é portanto passado por referência, ainda que os elementos que ele contém sejam tipos primitivos. (3.1) Passagem de parâmetros por valor 1. Crie um novo projeto no JCreator e insira nele a classe PassagemPorValor.java cujo código é mostrado a seguir: 2. Compile e rode o código 3. Verifique que o resultado é: Trabalho adicional: 3. Modifique o arquivo PassagemPorValor.java de modo que ele atenda às seguintes especificações: Passe um outro tipo primitivo como parâmetro para o método teste(). Você pode escolher qualquer tipo primitivo (tal como long ou boolean) Atribua um valor ao segundo parâmetro antes de chamar o método teste(). Altere o valor do parâmetro passado dentro do método teste(), assim como você fez com o primeiro parâmetro no código acima. Modifique as chamadas ao método System.out.println(...) acima de modo a mostrar os valores do primeiro e do segundo parâmetros. (3.2) Passagem de parâmetros por referência 1. Crie um novo projeto no JCreator e insira nele a classe PassagemPorReferencia.java cujo código é mostrado a seguir: 2. Compile e rode o código 3. Verifique que o resultado é: Exercício 4: Escopo de Variáveis Introdução: Neste exercício você exercitará o conceito de escopo de variáveis. Você também aprenderá a declarar três tipos de variáveis: variáveis estáticas, variáveis de instância e variáveis locais. (4.1) Compile e rode um programa Java que exercita o escopo de variáveis 1. Crie um novo projeto no JCreator e insira nele a classe EscopoDeVariaveis.java cujo código é mostrado a seguir. 2. Compile o código 3. Você deve encontrar um erro de compilação. O problema é que o escopo da variável var2 é somente dentro do bloco onde ela é definida e ela não pode ser usada fora deste bloco: 4. Modifique o código como mostrado na figura a seguir: 5. Compile e rode o código 6. Verifique que a saída seja o seguinte resultado: (4.2) Escreva um programa Java que declare três tipos de variáveis 1. Crie um novo projeto no JCreator e insira nele a classe TresTiposDeVariaveis.java cujo código é mostrado a seguir. 2. Compile o código 3. Você deve encontrar um erro de compilação. Uma variável de instância não pode ser referenciada a partir de um contexto estático: o método main() é um método estático. 4. Comente a linha com problema. Compile e rode o código. Exercício 5: Conversão de tipos primitivos e Classes Envoltório (Wrappers) Introdução: Neste exercício você exercitará a conversão de tipos primitivos e como converter tipos primitivos para o Envoltório (Wrapper) correspondente e vice-versa. A conversão de objetos será vista mais tarde. (5.1) Convertendo tipos primitivos 1. Crie um novo projeto no JCreator e insira nele a classe ConvertendoPrimitivos.java cujo código é mostrado a seguir. 2. Compile e rode o código 3. Verifique que o resultado é: Trabalho adicional: 4. Remova a conversão explícita quando você converte de double para int e observe o erro de compilação. (5.2) Convertendo tipos primitivos para classes Envoltório e vice-versa 1. Crie um novo projeto no JCreator e insira nele a classe ConvertendoPrimitivosParaEnvoltorios.java cujo código é mostrado a seguir. 2. Compile e rode o código 3. Verifique que o resultado é: Trabalho adicional: 4. Modifique o arquivo ConvertendoPrimitivosParaEnvoltorios.java de modo que ele atenda às seguintes especificações: Crie uma variável do tipo Long, converta-a para o tipo primitivo long e imprima o valor do tipo primitivo. Exercício 6: Comparando Objetos Introdução: Neste exercício você exercitará o conceito de comparação de objetos usando a classe String como exemplo. (6.1) Compile e rode um programa Java que compare objetos: 1. Crie um novo projeto no JCreator e insira nele a classe TesteIgualdadeStrings.java cujo código é mostrado a seguir. Não deixe de ler os comentários no texto 2. Compile e rode o código 3. Verifique que o resultado é: Trabalho adicional: 4. Escreva a classe TesteIgualdadeInteiros.java como se segue. Compare instâncias da classe Integer usando o mesmo código de teste da classe TesteIgualdadeStrings.java acima Compile e rode o programa Exercício 7: O método getClass() e o operador instanceof Introdução: Neste exercício você utilizará o método getClass() da classe Object para descobrir a que classe pertence um objeto. Você também aprenderá como usar o operador instanceof para descobrir se um objeto é uma instância de uma Classe específica. (7.1) Compile e rode um programa Java que use o método getClass(): 1. Crie um novo projeto no JCreator e insira nele a classe MetodoGetClass.java cujo código é mostrado a seguir. Não deixe de ler os comentários no texto 2. Compile e rode o código 3. Verifique que o resultado é: Trabalho adicional: 4. Modifique a classe MetodoGetClass.java como se segue. Crie uma instância de java.util.Date e use o método getClass() para descobrir as informações da Classe a que pertence o objeto criado. Compile e rode o programa (7.2) Uso do operador instanceof 1. Crie um novo projeto no JCreator e insira nele a classe OperadorInstanceOf.java cujo código é mostrado a seguir. Não deixe de ler os comentários no texto Observe que a classe Integer é uma subclasse da classe Number 2. Compile e rode o código 3. Verifique que o resultado é: Trabalho adicional: 4. Modifique a classe MetodoGetClass.java como se segue. Crie uma instância da classe Long e use o operador instanceof para descobrir se ela pertence aos tipos Number, Object e Long. Compile e rode o programa Exercício 8: Para você fazer sozinho 1. Crie um novo projeto no JCreator que atenda as seguintes especificações: Receba os nomes (somente o primeiro nome) de 3 a 6 pessoas da sua família como argumentos em linha de comando Escreva um método estático chamado geraNovoNome() como se segue: o Ele recebe o array de String como parâmetro o Ele cria um novo nome suprimindo a segunda letra de cada nome Imprima os nomes originais e os nomes modificados