Escolar Documentos
Profissional Documentos
Cultura Documentos
1 Classes Utilitárias 3
1.1 Wrapper classes de tipos primitivos 3
1.1.1 Características comuns às Wrapper classes 4
1.1.2 Características da classe Boolean 6
1.1.3 Características da classe Character 6
1.1.4 Exemplos 7
1.1.5 Certificação Sun Certified Java Programmer (SCJP) 9
1.2 Manipulação de Datas 10
1.2.1 A classe java.util.Date 10
1.2.2 A classe java.util.Calendar 12
1.2.3 Formatação e Conversão de Datas 17
1.2.4 Laboratório 23
2 Coleções 24
2.1 Collections Framework 25
2.2 java.util.Collection 26
2.3 java.util.List 27
2.3.1 java.util.ArrayList 27
2.3.2 java.util.ArrayList e java.util.Vector 31
2.3.3 Laboratório 32
2.4 java.util.Set 33
2.4.1 java.util.HashSet 34
2.4.2 java.util.TreeSet 36
2.4.3 A interface java.lang.Comparable 37
2.4.4 A interface java.util.Comparator 41
2.4.5 A classe java.util.Collections 44
2.4.6 Laboratório 45
2.5 java.util.Map 46
2.5.1 java.util.HashMap 47
2.5.2 java.util.HashMap e java.util.Hashtable 51
2.5.3 Laboratório 52
2.6 Overview das interfaces 53
2.7 Certificação Sun Certified Java Programmer (SCJP) 54
3 Java Database Connectivity (JDBC) 55
3.1 Introdução 55
3.2 Design Patterns 56
3.2.1 Data Access Object (DAO) 56
3.3 Driver JDBC 58
3.4 O pacote java.sql 60
3.5 Conexões com o banco de dados 62
3.5.1 java.sql.DriverManager 63
3.5.2 java.sql.Connection 64
3.5.3 Obtendo uma conexão 65
3.5.4 Erros Comuns 67
3.5.5 Fechando a conexão 68
3.5.6 Laboratório 70
3.6 java.sql.Statement 71
3.6.1 Laboratório 77
3.7 java.sql.ResultSet 79
3.7.1 Laboratório 85
3.8 java.sql.PreparedStatement 86
3.8.1 Laboratório 89
3.9 Trabalhando com chaves geradas (auto-increment) 90
3.10 MySQL 92
3.10.1 Instalação 92
4 Apêndice 93
4.1 Solução das questões preparatórias para certificação 93
1 Classes Utilitárias
1.1 Wrapper classes de tipos primitivos
As wrapper classes foram projetadas na API Standart do Java para encapsular valores do tipo primitivo dentro de
suas instâncias. Existe uma classe wrapper para cada tipo primitivo. Exemplos:
Um objeto da classe java.lang.Integer encapsula um valor int primitivo.
Um objeto da classe java.lang.Boolean encapsula um valor boolean primitivo.
A principal motivação para recorrer aos objetos wrappers é quando queremos trabalhar com valores primitivos
mas estamos lidando com APIs que suportam somente objetos - seguem alguns exemplos:
A freqüência de utilizaçãos dos wrappers é tão intensa que à partir do Java 1.5 os programadores podem contar
com um poderoso recurso chamado “Auto-Boxing” que realiza conversões implícitas em tempo de compilação
entre primitivos e wrappers.
Anotações
3
1 Classes Utilitárias
Por isto, todas as wrapper classes numéricas Byte, Short, Integer, Long, Float e Double herdam os
seguintes métodos da classe Number.
byte byteValue()
short shortValue()
int intValue()
long longValue()
float floatValue()
double doubleValue()
Construtores
Todas as wrapper classes tem um construtor que recebe como parâmetro um valor do tipo primitivo
correspondente.
Exemplo:
Byte ( byte value )
Integer ( int value )
Todas as wrapper classes, com exceção da classe Character, possuem um construtor que recebe uma
String.
Exemplo:
Boolean ( String value )
Integer ( String value )
Métodos
Todas as wrapper classes sobrescrevem os métodos equals e hashcode herdados da classe Object.
Todas as wrapper classes, com exceção das classes Character e Boolean, possuem o método parseXXX ,
que recebe uma String e retorna o valor primitivo correspondente.
Exemplo:
int parseInt(String value)
double parseDouble(String value)
Modificadores
Todas as wrapper classes de tipos primitivos são final, ou seja, não podem ser estendidas e são imutáveis, tais
como as Strings.
Interfaces
Todas as wrapper classes com exceção de Boolean implementam as interfaces:
java.lang.Comparable (ordenação de objetos – AJ3)
java.io.Serializable (cópia de objetos para fora da JVM – AJ4)
Anotações
5
1 Classes Utilitárias
A classe Boolean através de seu construtor de que aceita objetos String é capaz de armazenar o primitivo true
sempre que a seqüência de caracteres contiver exatamente as letras T, R U, E em qualquer combinação de caixa
alta / caixa baixa.
A classe Boolean possui duas constantes cujos valores são objetos para representar os primitivos true e
false. O método booleanValue() recupera o primitive armazenado no objeto Boolean.
Boolean y1 = Boolean.TRUE;
Boolean y2 = Boolean.FALSE;
boolean b1 = y1.booleanValue();
boolean b2 = y2.booleanValue();
Encontramos nesta classe vários métodos static úteis para tarefas de manipulação de caracteres. Veja alguns
exemplos:
1.1.4 Exemplos
Exemplo: TesteWrapperClasses.java
package br.com.globalcode.wrapper;
public class TesteWrapperClasses {
char c3 = 'a';
boolean isLetterOrDigit = Character.isLetterOrDigit(c3);
System.out.println(c3 + " e digito ou letra? " + isLetterOrDigit);
}
}
Anotações
7
1 Classes Utilitárias
class A {
public static void main (String args[]) {
byte primitiveByte = 1; // 1
Byte b1 = new Byte(primitiveByte); // 2
Byte b2 = new Byte(1); // 3
System.out.print(b1.byteValue() + b2.byteValue());
}
}
a) Prints: 2
b) Prints: 11
c) Compile-time error at 1
d) Compile-time error at 2
e) Compile-time error at 3
f) Run-time error
a) 1
b) 2
c) 3
d) 4
e) 5
f) 6
Anotações
9
1 Classes Utilitárias
Esta classe acompanha a API Standart do Java desde a versão 1.0 e seus objetos são adequados para
representar um instante no tempo.
A partir da versão 1.1 foi introduzida a classe Calendar que oferece suporte à iternacionalização. Desde então a
classe Date teve vários de seus métodos e construtores onsiderados obsoletos (deprecated). Estes métodos e
construtores continuam funcionando para efeito de compatibilidade.
Os objetos Date interpretam os campos ou componentes de tempo das datas através de números inteiros
seguindo a convenção:
Exemplo: TesteDate.java
package br.com.globalcode.testes;
import java.util.Date;
Anotações
11
1 Classes Utilitárias
Calendar é a super-classe abstrata de uma família de sub-classes utilitárias para manipulação de datas. Esta
hierarquia está projetada para que cada sub-classe ofereça recursos especializados para diferentes tipos de
calendários.
Há apenas uma sub-classe que acompanha o Java SE: a classe java.util.GregorianCalendar – que
suporta o calendário gregoriano (e juliano) predominante no ocidente. Para obter uma instância de
GregorianCalendar basta utilizar o método static getInstance( ) na classe Calendar. Sempre a data
atual será atribuída ao objeto Calendar, O exemplo a seguir demonstra instanciações e manipulações básicas.
Exemplo: TesteCalendarInstanciacao.java
package br.com.globalcode.testes;
import java.util.Calendar;
import java.util.Date;
}
}
Anotações
13
1 Classes Utilitárias
A classe Calendar oferece uma série de constantes numéricas que representam as informações parciais de uma
data. Estas constantes são importantes para acionarmos os métodos disponíveis. Vejamos alguns exemplos:
cal.set(Calendar.DAY_OF_MONTH, 27);
set(int campo) Modifica um campo específico cal.set(Calendar.HOUR, 16);
// dia 10 as 21h
Acrescenta determinadas cal.set(Calendar.DAY_OF_MONTH, 10);
quantidades de tempo à data cal.set(Calendar. HOUR_OF_DAY, 21);
contida no objeto Calendar.
roll( int campo,
O campo modificado sofre cal.roll(Calendar. HOUR_OF_DAY, 5);
int valor )
alterações em ciclos // + 5 horas
Não realiza ajustes implícitos // o objeto cal representa
nos demais campos. // as 2 da madrugada do dia 10
Anotações
15