Identificadores, Palavras-chave, Tipos Expressões e Controle de Fluxo 1) Palavras-chave da Linguagem Java 2) Identificadores Java São utilizados para dar nomes a atributos (variáveis) e métodos. Os identificadores devem iniciar com uma letra, podendo ser incluído um dos caracteres ( _ ) ou ( $ ), seguidos de letras, dígitos ou ambos. Quaisquer diferenças nos caracteres, como acentuação e maiúsculas e minúsculas em um identificador, tornam o identificador único. Importante: Palavras-chave não podem ser utilizadas como identificadores! 3) Tipos básicos do Java Tipo Natureza Valores permitidos boolean char String byte short int long float double Lógico Texto Texto Inteiro Inteiro Inteiro Inteiro Ponto Flutuante Ponto Flutuante false / true 1 caractere (‘x’) cadeira de caracteres (“Olá”) -27 até 27-1 -215 até 215-1 -231 até 231-1 -263 até 263-1 - Tamanho (bytes) 1 1 É um objeto 1 2 4 8 4 8 a) Valores literais inteiros são, por default, do tipo int. É possível transformar um valor literal para long, neste caso ele deve ser seguido pela letra “L” ou “l”. Exemplo: 2 (um valor literal int por default) 2L (um valor literal long) b) Também é possível representar valores literais na forma decimal, octal ou hexadecimal. Exemplo: 2 (valor decimal) 077 (o “zero” indica que o valor é octal) 0xBAAC (o “0x” indica que o valor é hexadecimal) c) Os valores literais de pontos flutuantes são, por default, do tipo double. É possível transformar um valor literal ponto flutuante para float, neste caso ele deve ser seguido pela letra “F” ou “f”. Exemplo: 3.14 (valor ponto flutuante em double) 3.14F (valor ponto flutuante em float) 3.14D (valor ponto flutuante em double – Redundante!) 4) Declarações e Atribuições (alguns exemplos) int x,y; float a = 3.14F; double b = 3.14; boolean verdade = true; char c; String str; String str1 = “Hello”; c = ’A’; str = ”Bye”; x = 6; y = 6000; 5) Convenções do Código Java a) Classes: O nome da classe deve ter a inicial maiúscula e as demais minúsculas. Quando você utiliza dois nomes, as iniciais devem ser maiúsculas. class MeuPrimeiroPrograma b) Interfaces: A mesma regra aplicada às classes c) Métodos: Devem iniciar com letra minúsculas e as iniciais das próximas palavras devem ser maiúsculas. informeSalario() d) Variáveis: Devem iniciar com letra minúsculas e as iniciais das próximas palavras devem ser maiúsculas. clienteCorrente e) Constantes: Devem ser todas em maiúsculas, com as palavras separadas por sublinhado. IDADE_MAXIMA f) Use identação! g) Comente seu código! 6) Escopo de Variáveis Quando abrimos um novo bloco com as chaves, as variáveis declaradas ali dentro só valem até o fim daquele bloco. Exemplo: //aqui a variável i não existe int i = 5; // a partir daqui ela existe while (condicao) { // o i ainda vale aqui int j = 7; // o j passa a existir } // aqui o j não existe mais, mas o i continua a valer Exemplos de situações não permitidas: if (algumBooleano) { int i = 5; } else { int i = 10; } System.out.println(i); // erro! for (int i = 0; i < 10; i++) { System.out.println("olá!"); } System.out.println(i); // erro! 7) Inicialização de variáveis Nenhuma variável em um programa Java pode ser usada antes de ser inicializada. Quando um objeto é criado, as variáveis são inicializadas automaticamente com os seguintes valores: byte short int long float double char boolean Referências a Objetos 0 0 0 0L 0.0F 0.0D ‘\u0000’ false null Todas as variáveis locais devem ser iniciadas manualmente! Variáveis Locais: variáveis declaradas no escopo de métodos ou em estruturas de controle. 8) Operadores Multiplicativos Aditivos Relacionais Igualdade AND (E) lógico *;/;% +;< ; > ; <= ; >= ; instanceof == ; != && OR (OU) lógico Atribuição Unários || = ; *= ; /= ; %= ; += ; -= ++ ; -- ; ! 9) Concatenação de Strings O operador + executa uma concatenação de objetos de Strings, gerando uma nova String. String tratamento = “Sra. ”; String nomeCompleto = “Marta Rocha”; String saudação = tratamento + nomeCompleto; O resultado é: Sra. Marta Rocha 10) Casting Alguns valores são incompatíveis ao fazer uma atribuição direta. Enquanto um número real costuma ser representado em uma variável do tipo double, tentar atribuir ele a uma variável int não funcionará. double d = 3.1415; int i = d; // erro de compilação O mesmo ocorre no seguinte trecho: int i = 3.14; O mais interessante, é que nem mesmo o seguinte código compila: double d = 5; // ok, o double pode conter um número inteiro int i = d; // erro de compilação Apesar de 5 ser um bom valor para um int, o compilador não tem como saber que valor estará dentro desse double no momento da execução. Esse valor pode ter sido digitado pelo usuário, e ninguém vai garantir que essa conversão ocorra sem perda de valores. Já no caso a seguir é o contrário: int i = 5; double d2 = i; O código acima compila sem problemas, já que um double pode guardar um número com ou sem ponto flutuante. Todos os inteiros representados por uma variável do tipo int podem ser guardados em uma variável double, então não existem problemas no código acima. Ás vezes, é preciso que um número quebrado seja arredondado e armazenado num número inteiro. Para fazer isso sem que haja o erro de compilação, é preciso ordenar que o número quebrado seja moldado (casted) como um número inteiro. Esse processo recebe o nome de casting. double d3 = 3.14; int i = (int) d3; O casting foi feito para moldar a variável d3 como um int. O valor dela agora é 3. O mesmo ocorre entre valores int e long. long x = 10000; int i = x; // nao compila, pois pode estar perdendo informação E, se quisermos realmente fazer isso, fazemos o casting: long x = 10000; int i = (int) x; Outros casos de casting: float x = 0.0; O código acima não compila pois todos os literais com ponto flutuante são considerados double pelo Java. E float não pode receber um double sem perda de informação, para fazer isso funcionar podemos escrever o seguinte: float x = 0.0f; Outro caso, que é mais comum: double d = 5; float f = 3; float x = (float) d + f; É necessário fazer o casting neste caso porque o Java sempre considera o maior tipo que apareceu durante as operações, no caso o double. Importante: O único tipo primitivo que não pode ser atribuído a nenhum outro tipo é o boolean. Castings possíveis Abaixo estão relacionados todos os casts possíveis na linguagem Java. A indicação Impl. quer dizer que aquele cast é implícito e automático, ou seja, não é preciso indicar o cast explicitamente.