Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas

Conceitos e métodos da classe Object e Thread em Java, Notas de estudo de Informática

Este documento aborda conceitos importantes da programação em java, como modificadores de acesso, métodos estáticos, classes wrapper, exceções, coleções e interfaces, além de métodos e estados da classe thread. Também discute a criação de classes internas e anônimas.

Tipologia: Notas de estudo

Antes de 2010

Compartilhado em 07/06/2009

gabriel-cardelli-12
gabriel-cardelli-12 🇧🇷

6 documentos

1 / 23

Toggle sidebar

Esta página não é visível na pré-visualização

Não perca as partes importantes!

bg1
Artigo – GUJ.com.br
Guia para Consulta - Java
Resumo da API Java
Autor
Tatiana Franciely da Silva (tati.franci.silva@gmail.com): é formada como Bacharel em Análise de Sistemas
pela Universidade Estadual do Centro-Oeste (Unicentro), especializada em Desenvolvimento Web pela PUC-PR
e certificada em programação Java pela Sun. Trabalha com análise e programação desde 2002, utilizando a
linguagem Java e Oracle (PL/SQL).
Gravata
Esse artigo tem como intuito passar o conhecimento da API Java, de um modo resumido. O alvo principal é
servir como um guia de consulta para todos aqueles que utilizam o Java.
Espero que esse documento seja tão útil como foi para mim.
Introdução
Quando dei início ao estudo para minha certificação comecei a fazer um resumo com todos os capítulos
necessários que eu precisava conhecer e memorizar. Como não queria ficar toda hora consultando o livro ou o
site, fiz esse documento para facilitar.
Dediquei uma fase dos estudos totalmente aos simulados, onde esse resumo me ajudou a tirar dúvidas
rapidamente.
Meu intuito é dividir esse documento com aqueles que queiram estudar sobre Java (seja certificação ou
apenas aprendizagem).
Ressalto um detalhe a esse resumo reutilizando as palavras do Kuesley Fernandes em seu site (citado quadro
Para Saber Mais):
Algumas referências aqui citadas, poderão também ser encontradas no livro Java 2 Certificação Sun para
Programador & D esenvolvedor da Kathy Sierra e Bert Bates por is so, gostaria de deixar bem claro que esse
conteúdo não foi plagiado, simplesmente quero compartilhar com outras pessoas a experiência que estou
adquirindo, através do estudo dirigido pela obra de Kathy e Bert.”
Como a citação acima, destaco que o documento não tem intuito de copiar ou plagiar nenhum autor, e sim,
compartilhar e ajudar outras pessoas que gostariam de obter conhecimento sobre o Java.
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17

Pré-visualização parcial do texto

Baixe Conceitos e métodos da classe Object e Thread em Java e outras Notas de estudo em PDF para Informática, somente na Docsity!

Artigo – GUJ.com.br

Guia para Consulta - Java

Resumo da API Java

Autor

Tatiana Franciely da Silva (tati.franci.silva@gmail.com): é formada como Bacharel em Análise de Sistemas

pela Universidade Estadual do Centro-Oeste (Unicentro), especializada em Desenvolvimento Web pela PUC-PR

e certificada em programação Java pela Sun. Trabalha com análise e programação desde 2002, utilizando a

linguagem Java e Oracle (PL/SQL).

Gravata

Esse artigo tem como intuito passar o conhecimento da API Java, de um modo resumido. O alvo principal é servir como um guia de consulta para todos aqueles que utilizam o Java. Espero que esse documento seja tão útil como foi para mim. Introdução Quando dei início ao estudo para minha certificação comecei a fazer um resumo com todos os capítulos necessários que eu precisava conhecer e memorizar. Como não queria ficar toda hora consultando o livro ou o site, fiz esse documento para facilitar. Dediquei uma fase dos estudos totalmente aos simulados, onde esse resumo me ajudou a tirar dúvidas rapidamente. Meu intuito é dividir esse documento com aqueles que queiram estudar sobre Java (seja certificação ou apenas aprendizagem). Ressalto um detalhe a esse resumo reutilizando as palavras do Kuesley Fernandes em seu site (citado quadro Para Saber Mais): “ Algumas referências aqui citadas, poderão também ser encontradas no livro Java 2 Certificação Sun para Programador & Desenvolvedor da Kathy Sierra e Bert Bates por isso, gostaria de deixar bem claro que esse conteúdo não foi plagiado, simplesmente quero compartilhar com outras pessoas a experiência que estou adquirindo, através do estudo dirigido pela obra de Kathy e Bert .” Como a citação acima, destaco que o documento não tem intuito de copiar ou plagiar nenhum autor, e sim, compartilhar e ajudar outras pessoas que gostariam de obter conhecimento sobre o Java.

1. Fundamentos da Linguagem tipo bits fórmula faixa b yte 8 - (2)^7 à 2^7 - 1 - 128 ~ + s hort 16 - (2)^15 à 2^15 - 1 - 32768 a + i nt 32 - (2)^31 à 2^31- 1 - 2147483648 a + l ong 64 - (2)^63 à 2^63- 1 - 9223372036854775808 a + char 16 2^16- 1 65535

  • char - caracter Unicode de 16 bits (sem sinal). Palavras Chaves byte short static long char boolean double float public private protected int abstract final strictfp transient synchronized native void class interface implements extends const else do default switch case break continue assert if goto throws Não esquecer: null , false e true são valores literais! Valores de constantes para o Integer :  Integer.MIN_VALUE == 0x80000000;  Integer.MAX_VALUE == 0x7FFFFFFF;

Métodos

  • Nunca poderá ser definido como ( transient , volative )
  • Um método nunca poderá ser abstract e final
  • Um método nunca poderá ser abstract e strictfp
  • Um método nunca poderá ser abstract e native
  • Um método nunca poderá ser abstract e synchronized
  • Um método nunca poderá ser abstract e private
  • Um método final nunca poderá ser sobreposto
  • Um método abstrato nunca poderá ser implementado
  • Se um método for abstrato a classe também será Variável de Instância
  • Pode ter qualquer um dos quatro modificadores de acesso
  • Podem ser ( volative , transient , final , static )
  • Não pode ser ( abstract , native , synchronized , strictfp ) Interfaces
  • Uma interface nunca herda uma classe
  • Uma classe nunca herda uma interface
  • Uma interface nunca implementa outra interface
  • Uma classe nunca implementa outra classe
  • Uma interface pode herdar várias interfaces
  • Uma variável de uma interface sempre será implicitamente: ( public , final , static )
  • Um método de uma interface sempre será ( public , abstract ) Lembre-se da Interface: java.lang.Runnable. Ela só tem um método: public void run();

3. Operadores e atribuições Unary operators are: ++ -- + -! ~ () Arithmetic operators are: * / % + - Shift operators are: << >> >>> Comparison operators are: < <= > >= instanceof == != Bitwise operators are: & ^ | Short-circuit operators are: && || Conditional operators are: ?: Assignment operators are: = "op=" Operador Condicional variable = boolean expression? value to assign if boolean expression is true : value to assign if boolean expression is false. Deslocamento de Bits >> deslocamento de bits à direita com sinal Fórmula: valor desejado dividido por 2 elevados a x (onde x é a quantidade de bits a deslocar) << deslocamento de bits à esquerda com sinal Fórmula: valor desejado multiplicado por 2 elevado a x (onde x é a quantidade de bits a deslocar) >>> deslocamento de bits à direita sem sinal sinal não é mantido, todo numero deslocado com esse sinal (mesmo que seja um número negativo) fica positivo Exceto em um caso particular: Deslocar uma quantidade superior à capacidade do tamanho. Por exemplo, deslocar 35 bits em uma variável do tipo int que comporta 32. O compilador fará divisão entre a 35 quantidade de bits a deslocar e 32 que é a capacidade do tipo em questão e o resto dessa divisão será a quantidade deslocada, nesse caso: 3 byte y = (byte) 8 >> 12; 12 % 8 = 4 (quatro bits a deslocar) Se for um múltiplo de 8 (no caso do tipo byte), por exemplo, 16 ou 32 em um tipo byte, não será deslocado nenhum pois o resto da divisão será 0 Portanto nem sempre o deslocamento de bits com o operador ( >>> ) será positivo. Deslocar 32 bits ou 64 bits em um tipo int que armazena o valor - 300 e terá o mesmo valor - 300.

4. Controle de fluxo, exceções e assertivas Assertions Assertivas - uso incorreto/inapropriado

  1. Nunca manipula um AssertionError Não use um catch e manipula um erro de assertiva
  2. Não use assertiva para validar argumentos em métodos públicos Você não pode garantir nada em métodos público, portanto usar assertiva nesse caso, não é uma boa prática
  3. Não use assertiva para validar argumento da linha de comando Isso é uma particularidade de um método público, mas segue a mesma regra
  4. Não use assertivas que possam causar efeitos colaterais Você não pode garantia que as assertivas sempre serão executadas, portanto o seu programa deve executar independentemente das assertivas, e nunca de forma diferente simplesmente porque as assertivas foram ativadas. Uso Apropriado/Correto
  5. Use assertiva para validar argumentos em métodos privados Como a visibilidade é privada, você consegue detectar se alguém está fazendo algo errado.
  6. Use assertiva sem condição em um bloco que presuma que nunca seja alcançado. Se você tem um bloco que nunca seria alcançado, você pode usar uma assert false, pois assim saberia se em algum momento esse bloco está sendo alcançado.
  7. Lançar um AssertionError explicitamente
  8. Se um bloco switch não tiver uma instrução default, adicionar uma assertiva é considerada uma boa prática Habilitar assertion: o java - ea o java - enableassertion Desabilitar assertion: o java - da o java - disableassertion Habilitar assertion para um determinado pacote: o java - ea:nome_pacote Habilita assertion em âmbito geral e desabilita nas classes do sistema: o java - ea - das

Habilitar assertion nas classes do sistema: o java - esa o java - enablesystemassertions Como os assertions não estão sempre ligados no sistema, eles não devem ser usados para validar parâmetros de métodos públicos. Uma apropriada exceção de runtime deverá aparecer como:

  • IllegalArgumentException,
  • IndexOutOfBoundsException, ou
  • NullPointerException. No entanto, um assertion pode ser usado para validar parâmetros de métodos não públicos. Uma expressão de assertion pode ser usada para checar:
  • Uma constante interna: algo que o programador assume que deverá ser verdadeira em um particular ponto do programa.
  • Uma constante de classe: algo que deve ser verdadeiro sobre cada instância de classe.
  • Um constante fluxo de controle: verifica se um fluxo nunca irá alcançar um ponto do programa.

6. Java.Lang - a classe Math, String e Wrappers Long

  • hashcode: retorna endereço hash
  • equals Double → doubleValue, floatValue, intValue, longValue, parseDouble String Objetos String são inalteráveis, porém as variáveis de referências não. Se uma nova String for criada e não for atribuída a nenhuma variável de referência, ela ficará perdida. Se você redirecionar a referência de uma String para outra String, o objeto String anterior poderá ser perdido. A classe String é final Métodos da String
  • concat - Adiciona uma string à outra, porém não altera a string em que o método está sendo executado.
  • equalsIgnoreCase - Testa se uma string é igual a outra ignorando a diferença entre letras maiúsculas e minúsculas:
  • length - Obtém o tamanho da string.
  • replace - Substitui os caracteres de uma string.
  • substring - Extrai uma string de outra.
  • toLowerCase - Muda todas as letras que estiverem maiúsculas para letra minúscula.
  • toUpperCase - Processo inverso do toLowerCase, ou seja, transforma em maiúscula todas as letras que estiverem minúsculas.
  • trim - Retira espaços das extremidades de uma string.
  • toString - retorna o valor da string. Como a classe String é derivada de Object esse método é substituído na classe String retornando o valor da String propriamente dita.
  • equals - compara o valor de uma string com outra informada em argumento. StringBuffer Diferente da classe String, a classe StringBuffer pode sofrer alteração. Métodos importantes
  • append - esse método adiciona uma string ao StringBuffer
  • insert - insere uma string em um StringBuffer, começando em 0 (zero)
  • reverse - inverte todos os caracteres da StringBuffer.
  • toString - retorna o valor do objeto StringBuffer, esse método é herdado de Object.
  • equals - O método equals da classe StringBuffer não é substituído, isso significa que ele não compara valores. Compara end memória.
  • hashcode – baseado no endereço interno. Java.lang.Math
  • abs: Retorna o valor absoluto de um argumento, veja suas assinaturas:
  • public static int abs( int value )
  • public static long abs( long value )
  • public static float abs(float value )
  • public static double abs(double value ) O resultado sempre será um número positivo a exceção de dois casos: Interger.MIN_VALUE ou Long.MIN_VALUE Integer.MIN_VALUE - > - 2147483648 Long.MIN_VALUE - > - 9223372036854775808 Operações com tipos byte, short ou char, serão promovidos para int.
  • ceil: Retorna o número "ponto flutuante inteiro" superior mais próximo.
  • public static float ceil(float value)
  • public static double ceil(double value)
  • floor: Retorna o número ponto flutuante inteiro inferior mais próximo.
  • public static float floor(float value)
  • public static double floor(double value)
  • max: Esse método retorna o maior número entre dois informados, sua assinatura de métodos é:
  • public static int max(int a, int b )
  • public static long max(long a, long b )
  • public static float max(float a, float b )
  • public static double max(double a, double b )
  • min: Esse método retorna o menor número entre dois informados, suas assinaturas são:
  • public static int min(int a, int b )
  • public static long min(long a, long b )
  • public static float min(float a, float b )
  • public static double min(double a, double b )

System.out.println( 32 / 0 ); // Resultado: java.lang.ArithmeticException System.out.println( 32.0 / 0.0 ); // Resultado: Infinity System.out.println( - 32.0 / 0.0 ); // Resultado: - Infinity System.out.println( 32.0 / - 0.0 ); // Resultado: - Infinity System.out.println( - 32.0 / - 0 ); // Resultado: - Infinity System.out.println( 32.0 / - 0 ); // Resultado: Infinity System.out.println( - 32.0 / - 0.0 ); // Resultado: Infinity Quando o divisor e o dividendo forem números inteiros: Se o divisor for 0, será lançada uma exceção. Quando o divisor é 0.0: SEMPRE HAVERÁ A TROCA DE SINAIS Quando o divisor for 0: NUNCA HAVERÁ A TROCA DE SINAIS, SEMPRE SERÁ MANTIDO O SINAL DO DIVIDENDO. Quando o divisor for diferente de 0 e 0. SEMPRE HAVERÁ JOGO DE SINAL Toda operação envolvendo números inteiro SEMPRE retornará um tipo int. Duas constantes são definidas na classe java.lang.Math:

  • java.lang.Math.PI - public static final double E 2.718281828459045d
  • java.lang.Math.E - public static final double PI 3.141592653589793d Wrappers Todo tipo primitivo tem uma classe wrapper correspondente. Métodos importantes
  • valueOf(): método estático. Integer pode converter números em bases diferentes. Exceção java.lang.NumberFormatException.
  • xxxValue(): não são métodos estáticos.
  • parseXxx(): método estático. Exceção java.lang.NumberFormatException.
  • toString(). Métodos estáticos nomeados Classe Integer: public static String toHexString(int i) public static String toBinaryString(int i) public static String toOctalString(int i) Classe Long: public static String toHexString(long i) public static String toBinaryString(long i) public static String toOctalString(long i) Métodos que lançam a exceção NumberFormatException
  • Todos os construtores das classes wrapper numéricas
  • os métodos estáticos valueOf
  • os métodos estáticos toString de Integer e Long
  • os métodos parseXxx Métodos estáticos: valueOf e parseXXX
  • valueOf: retorna instância da classe.
  • parseXxx e xxValue: retorna valor primitivo

Short signed numerical Double signed numerical Float signed numerical BigInteger signed numerical BigDecimal signed numerical File system-dependent lexicographic on pathname. String lexicographic Date chronological Map Faz um mapeamento de chave X valor, você tem um objeto chave para um objeto valor. O elemento de um Map é par de chave/valor. HashMap - conjunto Map não-ordenado e não classificado. Permite a existência de chave e valores nulos. Hashtable equivalente à HashMap com a diferença que métodos são sincronizados, e não permitem valores/chaves nulos LinkedHashMap - é uma versão ordenada (ordem de inserção/acesso) da interface Map, registra seu sucessor e predecessor, classe duplamente encadeada. LinkedHashMap extends HashMap e implements Map, Cloneable e Serializable. TreeMap - classe da Framework Collection Java que é classificada e conseqüentemente ordenada Classe Map Conjunto Lista Ordenada Classificada HashMap X não não Hashtable X não não TreeMap X sim sim LinkedHashMap X sim não HashSet X não não TreeSet X sim sim LinkedHashSet X sim não ArrayList X sim não Vector X sim não LinkedList X sim não

Observações:  TreeSet implements SortedSet e TreeMap implements SortedMap.  TreeSet e TreeMap armazenam elementos na ordem determinada pela interface Comparator ou Comparable.  Todas as Tree implementam Cloneable.  ListIterator extends Iterator.  A interface Enumeration introduzida com o Java 1.0 prove uma maneira simples de se mover através dos elementos de um Vector ou de chaves/valores de uma Hashtable. Existem dois métodos: hasMoreElements e nextElement.  A interface Iterator foi introduzida com o framework de coleções no Java 1.2. Existem 3 métodos: hasNext, next e remove.  Interface ListIterator introduzida com o Java 1.2 na interface Iterator. A interface ListIterator extends a interface Iterator e declara métodos adicionais que provem capacidade de iterações para frente e para trás.  A interface RandomAccess é uma interface de sinalização que não declara nenhum método. Vector e Array List implementam a interface RandomAccess. Figura 1. Hierarquia de interfaces/classes de coleção de dados em Java. Observação: Os nomes identificados na figura acima em itálico são interfaces, os demais são classes.

public class Outer {

public static void main(String[] args) {

Outer o = new Outer();

Inner i = o.new Inner();

class Inner {

Classes internas e membros externos Instanciando um objeto interno fora da classe externa Referenciando a classe externa de dentro da classe interna Modificadores aplicados as classes internas comuns:  finalabstractpublicprivateprotectedstatic - com uma exceção citada adiante.  Strictfp Classe interna local de método

public class Outer {

public void see() {

class Inner { }

Uma classe de método tem o modificador private por padrão, visto que não pode ser instanciada de nenhum outro local senão o método que encapsula a classe. Não tente instanciar a classe interna antes de criar externa! Os únicos modificadores aplicados a essa classe são:  abstractfinal Nunca os dois ao mesmo tempo!!! Variáveis: Uma classe interna de método não pode referenciar as variáveis locais de método.

Porém, se a variável for final poderá ser referenciada. Classes internas anônimas Compilador só irá conhecer os métodos definidos na classe pai - qualquer tentativa de execução ou chamada de um método não existente, causará um erro de compilação: cannot resolve symbol.

class Empregado {

public void trabalhar() {

System.out.println("trabalhar");

class QuadroFuncionario {

Empregado mgr = new Empregado() {

public void trabalhar() {

System.out.println("mandar");

public void demite() {

System.out.println("demite");

public void work() {

mgr.trabalhar();

mgr.demite();

Só variáveis final podem ser referenciada. Se precisar referenciar uma variável local dentro de uma classe anônima use array. Array é final seus elementos não. Classes finais não podem ser anônimas: Nunca podemos ter uma classe anônima a partir de uma classe final, pois uma classe anônima nada mais é do que uma herança de uma outra classe onde a subclasse