Programação OO em Java Curso: Técnico em Informática Campus: Ipanguaçu José Maria Monteiro Pontifícia Universidade Católica do Rio de Janeiro – PUC PUC--Rio Departamento de Informática Clayton Maciel Costa [email protected] [email protected] [email protected] “Todo longo caminho começa com um simples passo.” Provérbio Chinês 1 Unidade II: Introdução à Linguagem Java Primitivas da Linguagem Java Comentários Existem três estilos possíveis de comentários em Java: //Comentários de uma linha (in line) /* Comentário de várias linhas */ /** Comentário de documentação */ 2 Primitivas da Linguagem Java Comentários Particularmente, o comentário de documentação ... /** Comentário de documentação */ ... É útil para documentar funcionalidades no código. Essas funcionalidades podem ser extraídas automaticamente do código fonte para gerar documentação em HTML – utilitário JavaDoc. Primitivas da Linguagem Java Blocos e Sentenças Uma sentença (statement) é uma linha de código terminada por um “;” total = a + b + c; Um bloco de código é delimitado por chaves { total = a + b + c; } Identação: 3 ou 4 espaços. PS: Usar a mesma identação em todo o código. 3 Primitivas da Linguagem Java Identificadores Um nome em um programa São usados para denotar classes, métodos e variáveis Composição – Sequência de caracteres: • Letras • Dígitos • Undescores ( _ ) • Símbolos monetários ( $ ) – Não pode começar por dígito – São “case sensitive” Primitivas da Linguagem Java Identificadores Exemplos: number, Number, sum_$, $$_100, mal, saldoTotal... Identificadores Ilegais: 48casa, all/clear, navio-escola,... 4 Primitivas da Linguagem Java Palavras-chave Sinônimos: - Palavras-Reservadas ou Keywords Definição: - São identificadores reservados da linguagem - Não podem ser usadas para denotar outras entidades (classes, métodos ou variáveis) Exemplos: – Palavras-chaves em Java • abstract, while, extends – Palavras-chave que não estão em uso Java possui 51 palavraschave/reservadas. • const, goto – Literais reservados • null, true, false Primitivas da Linguagem Java A linguagem Java possui 51 palavras chave/reservadas: 5 Primitivas da Linguagem Java Literais Literais: São valores representáveis literalmente: – Denotam um valor constante – Podem ser numéricos, caracteres, booleanos ou strings Exemplos: – 2000, 0, -7, 3.14, ‘a’, ‘A’, ‘*’, true, false, ‘”abba”, “3.14”, “for”, null, ... Primitivas da Linguagem Java Literais Exemplos: – Números: 1, 2.14, 1.6e-23, 0L, etc Unidimensionais – Valores booleanos: true e false – Caracteres individuais: ‘a’, ‘u0041’,’\n’, etc – Seqüências de caracteres: “aaa”, “Java” – Vetores de números, booleanos ou strings: {”a”,”b”} Compostos 6 Primitivas da Linguagem Java Tipos Tipos representam um valor, uma coleção de valores ou coleção de outros tipos. Podem ser: – Tipos básicos, ou primitivos: quando representam unidades indivisíveis de informação (de tamanho fixo). – Tipos complexos: quando representam informações que podem ser decompostas em tipos “menores” (primitivos ou outros tipos complexos). Primitivas da Linguagem Java Tipos Primitivos Têm tamanho fixo. Têm sempre um valor default. Armazenados na pilha (acesso rápido). Não são objetos. 7 Primitivas da Linguagem Java Tipos Primitivos boolean true ou false (1 bit) char caracteres ( Unicode ) (16 bits) byte inteiro ( 8 bits ) short inteiro (16 bits) int inteiro ( 32 bits ) long inteiro ( 64 bits) float ponto flutuante ( 32 bits ) double ponto flutuante (64 bits ) Primitivas da Linguagem Java Tipos Primitivos Tipos Inteiros – byte – short – int – long Tipos Ponto-Flutuante (decimais) – float – double Tipo Booleano – boolean Tipo Caractere – char 8 Primitivas da Linguagem Java Tipos Primitivos Tipos de Dados Primitivos Boolean Type Numeric Types Integral Type Character Type boolean Floating-point Type Integer Types char byte short int long float double Tipos de Dados Primitivos em Java Primitivas da Linguagem Java Tipos Primitivos Inteiros – São representados como números com sinal e com complemento de 2. Exemplos: – int i = -215; – int max = 0x7fffffff; //(hexadecimal) – int min = 0450; // (octal) – long fone = 854581947L; 9 Primitivas da Linguagem Java Tipos Primitivos Intervalos de Valores Inteiros: Primitivas da Linguagem Java Tipos Primitivos Caracteres – O tipo de dado char engloba todos os 65.536 caracteres do conjunto de caracteres unicode. – Os primeiros 128 caracteres → os mesmos do padrão ASCII Intervalo de Valores Caracteres: 10 Primitivas da Linguagem Java Tipos Primitivos Números de Ponto-Flutuante – Zero pode ser representado por 0.0 ou –0.0 Intervalo de Valores Caracteres: – A tabela abaixo mostra os valores positivos, mas o mesmo se aplica aos números negativos, bastando colocar o sinal “-” antes do número. Primitivas da Linguagem Java Tipos Primitivos Booleanos – Usado para representar os valores lógicos “verdadeiro” e “falso”. – Valores booleanos podem ser retornados de operadores lógicos, condicionais e relacionais. – Seus valores não podem ser convertidos em valores de outras tipos de dados primitivos. Intervalo de Valores Booleanos: 11 Primitivas da Linguagem Java Strings “String” não é um tipo primitivo e sim uma classe; Literais: “”, “Hello”, “World”; Concatenação: “Hello” + “World” = “HelloWorld”; Conversão Implícita: “Hello2001”; “Hello” + 2001 = Comparação de Strings: a.equals(b); – retorna boolean Tamanho de uma String: a.length() ; – retorna int Primitivas da Linguagem Java Declaração, Inicialização e Atribuição Declarando Variáveis < TIPO> < VARIÁVEL>; Ex: char a, b, c; double area; Declarando e Iniciando Variáveis < TIPO> < VARIAVEL> = <EXPRESSÃO> ; Ex: int i = 10; float z = 3.414f; int i = 10, j=100; char c = ‘S’; long big = 12341234L; boolean b = true; 12 Primitivas da Linguagem Java Declaração, Inicialização e Atribuição Atribuição < IDENTIFICADOR> = < EXPRESSÃO> Ex: idade = 23; sexo = “M”; tem_filhos = false; j = k = 5; Primitivas da Linguagem Java Variáveis Locais Declaradas dentro de um bloco de código { }; Criadas quando o bloco de código inicia, destruídas quando ele acaba; Devem ser inicializadas ou o compilador emitirá um erro! public static void main (String args[]) { int a = 10; } 13 Primitivas da Linguagem Java Incremento e Decremento idade = idade + 1; ou idade + = 1; ou idade ++; idade = idade - 1; ou idade - = 1; ou idade --; Posfixado int a = 4; int b = a++; int c = a--; // b=4; a=5; // c=5; a=4; Prefixado int a = 4; int b = ++a; int c = --a; // a=5; b=5; // a=4; c=4; Primitivas da Linguagem Java Operadores Operadores Relacionais: > >= < <= == != Operadores Lógicos: & ( and) | (or) ! ( not ) ^ (XOR) Operadores a Nível de Bit ~ (Complemento) | (OR) & (AND) ^ (XOR) Operadores Curto Circuito && (AND) || (OR) 14 Primitivas da Linguagem Java Operadores Precedência: Unários, aritméticos, relacionais, lógicos ( primeiro && e depois ||) Primitivas da Linguagem Java Operadores Precedência: de cima para baixa, da direita para a esquerda. Pós-fixados [ ] . (parâmetros) x++ x-- Pré-fixados Unários ++x --x +x -x ~ ! Criação e Type Cast new (type) Multiplicação * / % Adição + - Rotação (shift) << >> >>> Relacionais < <= > >= instanceof Igualdade == != AND binário & XOR binário ^ OR binário | AND lógico && OR lógico || Condicional ?: Atribuição = += -= *= /= %= <<= >>= >>>= &= ^= |= 15 Primitivas da Linguagem Java Operadores • Exemplos 2 + 3 * 4 é equivalente a 2 + ( 3 * 4) 1 + 2 - 3 é equivalente a (1 + 2) - 3 - - 4 é equivalente a -(-4) if ( x > y & a < b ) é equivalente a if ( (x > y) & (a < b) ) Primitivas da Linguagem Java Expressões lógicas Operadores booleanos ! = NOT | = OR & = AND ^ = XOR Operadores a nível de bit ~ = Complemento | = OR & = AND ^ = XOR 16 Primitivas da Linguagem Java Expressões lógicas Operadores curto circuito && = AND || = OR Exemplo: String s = null; if ( ( s != null ) && ( s.length() > 10 ) ) // faça alguma coisa aqui! Primitivas da Linguagem Java Operadores Relacionais <, <=, >, >= Sempre operadores binários Operandos são expressões numéricas Exemplo (a < b) && (b < c) 17 Primitivas da Linguagem Java Igualdade: ==, != Tipos primitivos: – Operandos são expressões numéricas ou booleanas (a == b), (b == false), (c != 10) – Tomar cuidado com expressões com ponto flutuante (1.0 - 2.0 / 3.0 == 1.0 / 3.0) // retorna false Igualdade entre Strings: “ABC”.equals(“abc”) !(“ABC”.equals(“abc”)) // false // true Primitivas da Linguagem Java Operadores Lógicos Booleanos: !, ^, &, | ! - NOT ^ - XOR & - AND | - OR Os 2 operandos são avaliados int c = 10; boolean b = (true | (c++ > 20)); // c = 11; Atribuição extendida b &= a; b ^= a; b |= a; // b = (b & (a)) // b = (b ^ (a)) // b = (b | (a)) boolean b1 = false; b2 = false; b3 = false; b1 |= true; // true b2 ^= b1; // true b3 &= b1 | b2; // false - b3 = (b3 & (b1 | b2)) 18 Primitivas da Linguagem Java Operadores Condicionais: &&, || Iguais aos Operadores Lógicos Booleanos ( & e | ), exceto pelo fato de que a avaliação da expressão não precisa ser completa (short circuit) int c = 10; boolean b = (true | | (c++ > 20)); // c = 10; b = true b = ( c > 20 ) && (--c == 10); // c = 10; b = false String s = “aaa”, s2 = null; if (s.equals(“bbb”) & s2.equals(“aa”)) if (s.equals(“bbb”) && s2.equals(“aa”)) // Erro: s2 é nulo!!! // ok Precedência: &&, || boolean b4 = b1 || !b3 && b2; // ( b1 || ((!b3) && b2)) Primitivas da Linguagem Java Operadores Bitwise: ~, &, |, ^ ~ - NOT (inverte os bits) char v1 = ‘)’; byte v2 = 13; ^ - XOR & - AND | - OR // 41 System.out.println(">"+(~v1)); System.out.println(">"+(v1 & v2)); System.out.println(">"+(v1 | v2)); System.out.println(">"+(v1 ^ v2)); >-42 >9 >45 >36 Atribuição extendida: b &= a b ^= a b |= a b = (b & a) b = (b ^ a) b = (b | a) 19 Primitivas da Linguagem Java Operador Condicional ?: <condição> ? <expressão1> : <expressão2> <expressão1> e <expressão2> devem ser de tipos compatíveis boolean anoBisexto = false; int diasEmFevereiro = anoBisexto ? 29: 28; // 28 o funcionamento é semelhante a um if-else, e a associatividade é da direita para a esquerda (a?b?c?d:e:f:g) é avaliado como: (a?(b?(c?d:e):f):g) Primitivas da Linguagem Java Casting (Conversão Explícita) Se existe perda de precisão em uma atribuição é necessário fazer uma conversão explicitamente: – long longValue = 99L; – int intValue2 = (int)longValue; //OK! – int intValue1 = longValue; //ERRO! Java também pode “promover” o tipo de uma expressão automaticamente para um tipo maior. – long longValue; – int intValue = 10; – LongValue = intValue; 20 Primitivas da Linguagem Java Convenções de Código Java é case sensitive; Só por essa razão temos um bom motivo para padronizar como devemos escrever nossos códigos; Além de tudo é uma boa prática toda a equipe escrever da mesma forma – aumenta o entendimento e organização. Existe um documento determina esse padrão. formal da sun que Primitivas da Linguagem Java Convenções de Código Classes e Interfaces – class MinhaClasse – interface MinhaInterface Métodos e Variáveis – double valorSalarioMensal; – calcularSalario() Constantes – DIAS_EXPEDICAO_SENHA – MAX_SITE 21 Exercícios 1. Escreva um programa que imprima o resultado das expressões abaixo: • • • • 2. 3. 3–2–1+2+1+3 2x3–4x5 2+6–3/7x9 3%4–8 Escreva um programa que concatene as strings “Tópicos”, “de” e “Linguagens” e imprima o resultado final. Escreva um programa que declare, inicialize e imprima as seguintes variáveis: • • • • • • Inteiro i de 32 bits com valor 1 Inteiro j de 64 bits com valor 2 Ponto-flutuante p de 32 bits com valor 20.0 Ponto-flutuante q de 64 bits com valor 30.0 Boolean b com valor verdadeiro Caracter c com valor ‘k’ Cuidados com arrendondamentos int i = 100 * 3 / 5; System.out.println(">"+i); >60 i = 3 / 5 * 100; System.out.println(">"+i); >0 i = (int) 3.0 / 5 * 100; System.out.println(">"+i); >0 i = (int) (3.0 / 5 * 100); System.out.println(">"+i); >60 22 Atribuição Extendida <variável> <op>= <expressão> equivale a < variável > = (<tipo>)<variável> <op> <expressão> int b = 2; b += 10; // b = 12 é equivalente a b = b + 10; 23