RESUMO DOS TÓPICOS + IMPORTANTES De instância (non-static) - estão no contexto da classe sem o modificador static De Classe (static) - estão no contexto da classe com o modificador static Local – estão no contexto do corpo de métodos Parâmetro – estão no contexto da definição do método byte, short, int, long, float, double, boolean, char byte 0, short 0, int 0, long 0L, float 0.0f, double 0.0d, char '\u0000', boolean false, String (ou qualquer objeto) null Um array é um objeto capaz de armazenar um número fixo de valores de um tipo único. int i[ ] = { 1, 2, 3}; int[ ] i = new int[3]; String[ ] str = {“um”, “dois”, “três”} atribuição aritméticos unários igualdade relacionais condicionais orientados a bit e deslocamento (operações de baixo nível) tomada de decisão (if, else, else if, switch (byte, short, char, int)) repetição (for, while, do-while) desvio (break, continue, return) Declarando Classes class MinhaClasse { //atributos, construtores, declaração de métodos } Herança class Filha extends MinhaClasse { //herdará todos os atributos, construtores e métodos públicos ou protegidos de MinhaClasse } Sobrescrita ou sobreposição (override) dos métodos herdados da super classe. Regras: Métodos final e private não podem ser sobrescritos. Métodos protegidos podem sobrescrever métodos sem modificador de acesso (package ou default). Métodos sobrescritos não podem ter um modificador de acesso mais restritivo que o método original. Métodos incluindo o construtor podem ser sobrecarregados, ou seja, isto significa que dois os mais métodos podem ter o mesmo nome, mas assinaturas diferentes na mesma classe. public void meuMetodo(int i) {...} // ex: 1 - primeiro método com este nome na classe protected void meuMetodo(int b) {...} // ex: 2 - inválido - pois foi alterado o nome do parâmetro e não o tipo private void meuMetodo(int i, int j) {...} // ex: 3 - válido - quantidade de parâmetros diferentes do ex.1 private void meuMetodo(int j, int i) {...} // ex: 4 - inválido - invertida a ordem, mas a quantidade de parâmetros e os tipos (int) são iguais ao ex.3 Possuem o mesmo nome da classe sem tipo de retorno, podem ser sobrecarregados. class MinhaClasse { public MinhaClasse() { } public MinhaClasse(int i) { } } Os parâmetros de métodos são recebidos apenas por valor, ou seja, ocorre uma cópia do tipo de dado recebido. Para os tipos primitivos não existe o alteração na variável fora do escopo do método. Já com os tipos referência, haverá apenas a cópia do endereço para o objeto. E como duas referências podem apontar para o mesmo objeto, logo existirá alteração no objeto referenciado. this - utilizada pela própria classe quando faz referência a sua instância corrente. super - utilizada pela própria classe quando faz referência a sua super classe. Classe Internas (Inner Class) Membros – estão no contexto da classe Locais (podem ser anônimas ou não) – estão no contexto de métodos (corpo ou parâmetro) Enum Tipo de classe que armazena uma seqüência de constantes públicas. São estereótipos de classes, ou seja, o mesmo que classes totalmente abstratas. São por default totalmente públicas. Seus métodos não possuem implementação, apenas a definição. Pode conter atributos como constantes estáticas. Uma classe que utiliza uma interface deve implementar todos os seus métodos, ou torná-los abstratos, sendo assim a classe também deve ser abstrata. Não podem ser instanciadas diretamente. É geralmente uma representação genérica para tipos específicos Podem conter atributos, construtores e métodos (abstratos ou concretos). Não podem ser instanciadas diretamente. String - São imutáveis Métodos relevantes desta classe: equals, substring, indexOf, lastIndexOf, replace, toLowerCase, toUpperCase, split, getChars, toCharArray, concat, intern, length StringBuilder - Classe especializada na manipulação de strings Mutável Métodos relevantes desta classe: append, delete, insert, reverse Math Métodos relevantes desta classe: abs, ceil, floor, pow, sqrt Um pacote é uma agrupamento de tipos relacionados (classes, interfaces, enums) que provê uma proteção de acesso e um gerenciamento do espaço de nomes. São constituídos de um ou mais diretórios aninhados. Ex: A pasta "br" contém a pasta "com" que contém a pasta "eugenio" Na sintaxe java: // informa que esta classe faz parte deste pacote package br.com.eugenio; //Observação: uma classe não precisa importar o seu próprio pacote. // informa ao compilador que todas as classes ou interfaces deste pacote podem ser utilizadas. import br.com.eugenio.*; // Com utilização do import MinhaClasse mc = new MinhaClasse(); // Sem utilização do import br.com.eugenio.MinhaClasse mc = new br.com.eugenio.MinhaClasse(); private - restrito a própria classe default, package-private ou sem modificador - o método ou atributo que não possuir um dos três modificadores anteriores (private, protected ou public), terá o seguinte comportamento: público - para todas classes ou interfaces do seu pacote; e privado - para todas as classes que não fizerem parte do seu pacote, por isso package-private (privativo do pacote). protected - restrito a própria classe e suas derivadas ou descendentes public - irrestrito, ou seja, visivél por todos Threads também conhecidos como Processos Leves ou Linhas de execução. Um processo pode conter uma ou mais threads. Estratégias de implementação extends Thread implements Runnable Nas duas estratégias o método run() deve ser sobrescrito ou implementado, ele é o corpo da thread. O método start() de uma thread a coloca no estado "novo" ou "pronta para executar". Ciclo de Vida novo - inicio do ciclo executável - executando sua tarefa Espera) - wait()- aguarda notificação de outra thread para continuar - notify() Espera sincronizada - sleep(tempo) Bloqueada (sincronização ou interrupção E/S) terminado - fim do ciclo Prioridades de threads MAX_PRIORITY: 10 NORM_PRIORITY: 5 MIN_PRIORITY: 1 Obs: Apesar da prioridade o agendamento preemptivo não é garantido em todos os sistemas operacionais. Métodos ou blocos sincronizados modificador synchronized - Utilizado quando threads precisam compartilhar o mesmo objeto sem conflito. Os métodos wait(), notify(), notifyAll() oriundos da classe Object auxiliam na sincronização. Obs: A partir da versão 5 do Java foi incluída a API de concorrência de alto nível cujo o pacote é "java.util.concurrent" Programas Java que podem ser incorporados a um documento HTML. O navegador que executa o applet é conhecido como contêiner applets Ciclo de Vida init, start, paint, stop, destroy Tag applet <applet> </applet> Parâmetros <applet> <param name=“nome” value=“valor”/> </applet> Array Classe java.util.Arrays Métodos sort binarySearch fill ArrayList Classe java.util.ArrayList Característica API de Coleções, Genérica e Redimensionável Capacidade inicial 10 elementos Métodos add, clear, contains, get, indexOf, remove, remove, size, trimToSize Arquivos e Fluxos Classe System Objetos de fluxo padrão: System.in, System.out e System.err Métodos para redirecionar: setIn, setOut, setErr Fluxos Baseados em: Bytes (arquivos binários) Caracteres (arquivos de textos) Arquivos e Fluxos Entrada ou leitura Binário java.io.InputStream java.io.FileInputStream java.io.FilterInputStream java.io.BufferedInputStream java.io.DataInputStream Caracter java.io.FileReader java.util.Scanner Arquivos e Fluxos Saída ou escrita Binário java.io.OuputStream java.io.FileOutpuStream java.io.FilterOutputStream java.io.BufferedOutputStream java.io.DataOutputStream Caracter java.io.FileWriter java.util.Formatter Arquivos e Fluxos (Classes adicionais) Classe Filter Data Piped Buffered ByteArray CharArray LineNumber String SequenceInputStream RandomAccessFile Binários Caracteres Obs. X X Agrega bytes de dados a unidades de tipos primitivos significativas X Leitura ou escrita de tipos primitivos X X Comunicação sincronizada entre threads X X Desempenho – flush X Memória X Memória X X Somente leitura – contagem de linhas X Leitura e escrita de Strings X Concatena inputstreams X Leitura e escrita de tipos primitivos em arquivos Arquivos Classe File Utilizada para obter informações de arquivos e diretórios Métodos canRead, canWrite, exists, isFile, isDirectory, isAbsolute, getAbsolutePath, getName, getPath, getParent, length, lastModified, list File.separator Serialização de objetos Interfaces ObjectInput, ObjectOutput, Serializable Classes ObjectInputStream, ObjectOuputStream Métodos readObject, writeObject Modificador – transient JFileChooser Classe utilizada para selecionar arquivos ou diretórios por meio de uma GUI. Strings Classe java.lang.String Imutáveis Métodos length, charAt, equals, pool, equalsIgnoreCase, compareTo, regionsMatches, startsWith, indexOf, substring, concat, replace, toUpperCase, trim, toCharArray, valueOf Strings Classe StringBuilder Mutáveis Capacidade inicial 16 caracteres Métodos capacity, ensureCapacity, setLength, setCharAt, getChars, append, insert, reverse Tokenização de Strings com split Caracteres Classe Character Métodos isDefined, isDigit, isJavaIdentifierStart, isJavaIdentifierPart, isLetter, isLetterOrDigit, isLowerCase, isUpperCase, digit, forDigit, charValue, toString Expressões regulares Classes de caracteres predefinidas Quantificadores [ganancioso, ? (relutante ou preguiçoso)] Expressões regulares Classes do pacote java.util.regex Pattern Métodos compile, matcher, matches, pattern, split Matcher Métodos find, group, lookinAt, matches, pattern, replaceFirst, replaceAll FIM