Programação com OO Acesso em Java a BD Curso: Técnico em Informática Campus: Ipanguaçu José Maria Monteiro Pontifícia Universidade Católica do Rio de Janeiro PUC-Rio Departamento Clayton Maciel de Informática Costa clayton.maciel@ifrn.edu.br monteiro@inf.puc-rio.brrio.br Programação com Acesso a BD Todo longo caminho começa com um simples passo. Provérbio Chinês 1
Programação com Acesso a BD Unidade II: Introdução à 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
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. 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
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 Identificadores Exemplos: number, Number, sum_$, $$_100, mal, saldototal... Identificadores Ilegais: 48casa, all/clear, navio-escola,... 4
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 const, goto Literais reservados null, true, false Java possui 51 palavraschave/reservadas. A linguagem Java possui 51 palavras chave/reservadas: 5
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,... Literais Exemplos: Números: 1, 2.14, 1.6e-23, 0L, etc Valores booleanos: true e false Unidimensionais Caracteres individuais: a, u0041, \n, etc Seqüências de caracteres: aaa, Java Vetores de números, booleanos ou strings: { a, b } Compostos 6
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). Tipos Primitivos Têm tamanho fixo. Têm sempre um valor default. Armazenados na pilha (acesso rápido). Não são objetos. 7
Tipos Primitivos boolean char byte short int long float double true ou false (1 bit) caracteres ( Unicode ) (16 bits) inteiro ( 8 bits ) inteiro (16 bits) inteiro ( 32 bits ) inteiro ( 64 bits) ponto flutuante ( 32 bits ) ponto flutuante (64 bits ) Tipos Primitivos Tipos Inteiros byte short int long Tipos Ponto-Flutuante (decimais) float double Tipo Booleano boolean Tipo Caractere char 8
Tipos Primitivos Tipos de Dados Primitivos Boolean Type Numeric Types Integral Type Floating-point Type Character Type Integer Types boolean char byte short int long float double Tipos de Dados Primitivos em 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
Tipos Primitivos Intervalos de Valores Inteiros: 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
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. 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
Strings String não é um tipo primitivo e sim uma classe; Literais:, Hello, World ; Concatenação: Hello + World = HelloWorld ; Conversão Implícita: Hello + 2001 = Hello2001 ; Comparação de Strings: a.equals(b); retorna boolean Tamanho de uma String: a.length() ; retorna int 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
Declaração, Inicialização e Atribuição Atribuição < IDENTIFICADOR> = < EXPRESSÃO> Ex: idade = 23; sexo = M ; tem_filhos = false; j = k = 5; 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
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--; Prefixado int a = 4; int b = ++a; int c = --a; // b=4; a=5; // c=5; a=4; // a=5; b=5; // a=4; c=4; 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
Operadores Precedência: Unários, aritméticos, relacionais, lógicos ( primeiro && e depois ) Operadores Precedência: de cima para baixa, da direita para a esquerda. Pós-fixados Pré-fixados Unários Criação e Type Cast Multiplicação Adição Rotação (shift) Relacionais Igualdade AND binário XOR binário OR binário AND lógico OR lógico Condicional Atribuição [ ]. (parâmetros) x++ x-- ++x --x +x -x ~! new (type) * / % + - << >> >>> < <= > >= instanceof ==!= & ^ &&?: = += -= *= /= %= <<= >>= >>>= &= ^= = 15
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) ) Expressões lógicas Operadores booleanos! = NOT & = AND = OR ^ = XOR Operadores a nível de bit ~ = Complemento & = AND = OR ^ = XOR 16
Expressões lógicas Operadores curto circuito && = AND = OR Exemplo: String s = null; if ( ( s!= null ) && ( s.length() > 10 ) ) // faça alguma coisa aqui! Operadores Relacionais <, <=, >, >= Sempre operadores binários Operandos são expressões numéricas Exemplo (a < b) && (b < c) 17
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 ) // false!( ABC.equals( abc )) // true 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 = (b & (a)) b ^= a; // b = (b ^ (a)) 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
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)) Operadores Bitwise: ~, &,, ^ ~ - NOT (inverte os bits) ^ - XOR & - AND - OR char v1 = ) ; // 41 byte v2 = 13; 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 = (b & a) b ^= a b = (b ^ a) b = a b = (b a) 19
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) 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
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 formal da sun que determina esse padrão. 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: 3 2 1 + 2 + 1 + 3 2 x 3 4 x 5 2 + 6 3 / 7 x 9 3 % 4 8 2. Escreva um programa que concatene as strings Tópicos, de e Linguagens e imprima o resultado final. 3. 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); i = 3 / 5 * 100; System.out.println(">"+i); >60 >0 i = (int) 3.0 / 5 * 100; System.out.println(">"+i); i = (int) (3.0 / 5 * 100); System.out.println(">"+i); >0 >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