Linguagem JAVA Ariane Machado Lima Noções gerais Histórico (Oak) Características: – – – – – – – – – simples e familiar (C, C++) orientada a objetos (tipos primitivos e objetos) distribuída (redes dinâmicas e objetos remotos) interpretada (bytecode, JVM, compile-run) robusta (sem pointers, GC, fortemente tipada) segura (GC, sem pointers, bytecode protegido) portabilidade (diferentes plataformas e browsers) alta performance (desenvolvimento e bom bytecode) multitarefa e dinâmica (threads, sincronização, redes) Java não tem... typedef, define, preprocessor struct, union enum goto pointers sobrecarga de operadores templates herança múltipla Sintaxe básica Tipos básicos: – – – – – – – – long : inteiro de 64 bits (+ ou - 18 dígitos) int: inteiro de 32 bits [-2.147.483.648; + 2.147.483.647] short: inteiro de 16 bits [-32.768; + 32.767] byte: inteiro de 8 bits [-128; +127] double: real de precisão dupla, 64 bits [1,7E-308; 1,7E+308] float: real de 32 bits [3,4E-38; 3,4E+38] char: caracter de 16 bits (sem sinal) boolean: tipo lógico true ou false (1 bit) Sintaxe básica (cont.) Comentários: // até o fim da linha /* até encontrar uma barra / Operadores relacionais: == != > >= < <= igual diferente maior maior ou igual menor menor ou igual Sintaxe básica (cont.) Operadores aritméticos x = 4*(2+5) / (3-1) y=x%3 x++ y-y += x -= *= // x == 14 // y == 2 // x == 15 // y == 1 // y == 16 /= Alguns operadores lógicos && e || ou %= Comando condicional if (expressão booleana) bloco1; else bloco2; if (x >= 0) x = 1; else x = -1; Comando de seleção switch (expressão) { case valor1: bloco1; break; case valor2: bloco2; break; ... case valorN: blocoN; break; default: bloco N+1; } Comandos de Repetição while (x>=0) { System.out.println(“Valor de x: ” + x); x--; } do { x--; System.out.println(“Valor de x: ” + x); } while (x>0) Comandos de Repetição (cont.) for (x= -20; x<= 0; x++) { msg = “Valor de x” + x; System.out.println(msg); } Equivalências super this ~ self static: método ou variável de classe Envio de mensagens: (classe/objeto).mensagem([param*]) Exemplo: Final Classe: – não pode ser mais extendida Método: – não pode mais ser sobrecarregado Variável: – não pode mais mudar de valor (constante) Classes e métodos abstratos Classes abstratas: – reúne características comuns das subclasses – não podem ser instanciadas (não possuem construtor) Métodos abstratos: – – – – não possui código devem ser implementados nas subclasses não pode ser static ou final devem pertencer a uma classe abstrata Interface Define tipo (~classe abstrata) Apenas métodos públicos Não possui código Não possui atributos de instância – atributos final e static são permitidos Não possui construtor Podem herdar de outras interfaces Classes abstratas X interfaces Fatoração de implementação: – funcionalidades iguais de um conjunto de classes podem ser implementadas apenas uma vez na classe abstrata Generalidade de uso: – uma interface pode ser implementada por classes não relacionadas Classes abstratas X interfaces (cont.) Expansibilidade: – inserção de novos métodos em uma interface implica modificação de todas as classes que a implementam Herança múltipla: – cada classe pode herdar de apenas uma classe (abstrata ou não), mas pode implementar várias interfaces Pacotes Coleções de classes java, javax, org.omg subpacotes nome completo de classes inclui pacote: – String ~ java.lang.String Definindo pacotes: package meu_pacote; Usando pacotes: import java.util.*; Alguns pacotes java.lang java.util java.io java.awt java.math java.net java.beans Estrutura de um arquivo .java [package] [import] public class NomeArquivo Arrays Declaração: Point [] listaDePontos; Point listaDePontos[]; listaDePontos.length Arrays (cont) Criação e inicialização: listaDeInteiros = new int[10]; //valores default listaDeInteiros = new int {1,2,3,4,5}; //tipo implícito (uso de array anônimo) listaDeInteiros = {1,2,3,4,5}; //tipo e tamanho implícitos Point[] pontos {circulo1.getCenterPoint(), circulo2. getCenterPoint()} //inicialização em tempo de execução