AS BIBLIOTECAS DE JAVA
Cleyton Caetano de Souza IFPB-Campus Monteiro
Roteiro
• O que é uma “biblioteca”?
• Javadoc
• Math
• String
• Datas
• Envelopadores
• Coleções
Introdução
• JAVA é uma linguagem OO, isso significa que ao programarmos pensamos nos problemas como uma sequência de interações entre objetos de diferentes Classes
– Eu vou imaginar as entidades que serão necessárias
• Num sistema acadêmico
• Num sistema de compras online
• Muitos projetos tem funcionalidades em comum!
• Não precisamos sempre programar tudo! – Já existe muita coisa pronta!
Introdução
• O Java tem uma ampla gama de recursos
padrão
– Desde de tocar um som até enviar um e-mail.
• Esses recursos fazem parte da API (Application
Programming Interface) – em português:
APIs
• API é um conjunto de rotinas disponibilizados
por um software para a utilização das suas
funcionalidades por aplicativos que não
pretendem envolver-se nos seus detalhes
implementação, mas apenas usar seus
APIs
• A API é um grupo de programas de suporte
destinados a cumprir funções específicas
– Essas funções estão divididas em diferentes partes (pacotes) relacionadas as suas funcionalidades (o que nós denominamos bibliotecas).
• Para usá-las não precisamos saber como elas
realizam tal tarefa, mas apenas como usar.
– As vezes, descobrir como usar uma classe é
JavaDoc
• De maneira geral o JavaDoc fornece uma linguagem especifica para enriquecer os comentários que
introduzem classes, atributos e métodos.
• Seu funcionamento baseia-se na inserção de textos
explicativos em forma de um comentário especial, que antecedem um escopo de uma classe ou método,
tendo assim, a responsabilidade de apresentar o mesmo.
• Esses “comentários especiais” são utilizados para gerar
Documentação
• Todas as classes e métodos que vamos estudar
possuem sua documentação online e que pode ser acessada pelo link abaixo
Pacotes mais usados da API Java
Pacote API Recurso
java.awt Recursos Gráficos
java.io Entrada e Saída de Dados
java.lang Recursos Fundamentais da
Linguagem Java
java.math Operações Matemáticas
java.util Miscelânea de Recursos
Classes que vamos conhecer nessa aula:
• Math
• String
• Date e Calendar
• Integer, Float, Boolean, Char...
Math
• A classe Math do pacote java.lang contém
uma série de métodos matemáticos bastante úteis
– Ex. Gerar Número Aleatório, Arredondar um número, Calcular a Raiz Quadrada, etc.
• Possui definida duas constantes
– public final static double PI
– public final static double E
Math
Método O que faz Exemplo de utilização Resultado
Math.max Retorna o maior valor entre os valores fornecidos
Math.max(145, 159) 159
Math.min Retorna o menor valor entre os valores fornecidos
Math
Método O que faz Exemplo de utilização Resultado
Math.abs Retorna o módulo do valor passado como parâmetro
Math.abs(-154) 154
Math.ceil Arredonda o
parâmetro para cima
Math.ceil(8.02) 9.0
Math.floor Arredonda para baixo Math.floor(8.8) 8.0 Math.round Arredonda para o
valor mais próximo
Math.round(1.5) e Math.round(1.4)
Math
Método O que faz Exemplo de utilização
Resultado
Math.random Retorna um número aleatório no intervalo [0, 1[
Math.random() 0.88
Math.sqrt Retorna a raiz quadrada do número passado como parâmetro
Math.sqrt(4) 2
Math.pow Retorna a potência do primeiro parâmetro elevado ao segundo parâmetro
Exercício
• Escreva um programa que leia dois números, calcule a potência do primeiro elevado ao
segundo, e imprima a raiz quadrada desse número arredondando para cima.
• Escreva um programa que gere dois números
aleatórios, o primeiro entre 0 e 100 e o segundo entre 1 e 100, em seguida, imprima o maior
desses dois números elevado ao cubo.
Math
• Para mais detalhes consultem a
documentação da classe Math
String
• String é uma cadeia de caracteres
• Em Java
– Não há um tipo primitivo para String
String
• O estudo de como as Strings funcionam em
baixo nível em Java é algo relativamente
avançado que exigiria bastante tempo e que é uma particularidade de Java.
• Nesse momento, o que nos interessa é
String
• public boolean equals(String other)
– Compara se duas String são iguais
• public boolean equalsIgnoreCase(String other)
String
• public int length()
– Retorna o comprimento da String
• public char charAt(int i)
String
• public String toLowerCase()
– Retorna a String em caixa baixa
• public String toUpperCase()
– Retorna a String em caixa alta
• public String replace(char old, char new)
Exercício
• Escreva um programa que leia uma String e
substitua suas vogais por números (4 por a, 3 por é, 0 por o, i por 1).
• Escreva um programa leia uma String e a
imprima uma String invertida.
• Escreva um programa que leia uma String e
String
• Para mais detalhes consultem a
documentação da classe String
Datas em Java
• Em Java, as Datas também são representadas
por objetos Date do pacote java.util
• Como criar uma data que representa o
Datas em Java
• Em Java, as Datas também são representadas
por objetos Date do pacote java.util
• Como criar uma data que representa o
instante atual?
Datas em Java
• Em Java, as Datas também são representadas por objetos Date do pacote java.util
• Como criar uma data que representa o instante atual?
• Qual será a saída? – O construtor default
cria uma data que representa o
Imprimindo Date
Dia da Semana: Sunday
Mês: November
Dia do Mês: 23
Hora: 15h24m20s
Sistema de Tempo: Brazilian Summer Time
Date
• A classe Date é muito limitada, ela serve para representar uma data como um objeto
• Ela possui poucos métodos que são verdadeiramente úteis, por exemplo:
– after
– before
– compareTo
• Se eu quiser manipular a data ou exibir ela
Date
• public boolean after(Date outraData)
– Retorna true se a data que chamou o método é posterior a data passada como parâmetro
• public boolean before(Date outraData)
– Retorna true se a data que chamou o método é anterior a data passada como parâmetro
• public int compareTo(Date outraData)
Date
• Para mais detalhes consultem a
documentação da classe Date
SimpleDateFormat
• Se eu quero exibir a data com uma certa
formatação eu preciso usar a classe SimpleDateFormat
• Principais métodos que vocês usarão
– public String format(Date data)
Exibindo a data formatada: format
Entendendo a Máscara
• Existem símbolos que representam os elementos da data
• Você combina esses símbolos para exibir a data no formato que você quiser
– Exemplos
• d-M-yy
– 1-2-14, 21-1-99, 22-10-11, 1-11-11
• dd/MM/yyyy
– 01/02/2014, 21/01/1999, 22/10/2011, 01/11/2011
• d*MM*yyyy
Significado dos Símbolos da Máscara
Símbolo Significado Símbolo Siginificado
d Dia do mês D Dia do ano E Dia da semana a Marcador de
am/pm
W Semana do ano W Semana do mês m Minuto M Mês
y Ano G Designador de era (AC/DC)
H Hora em am/pm (1 a 12)
H Hora do dia (0 a 23)
k Hora do dia (1 a 24) K Hora em am/pm (0 a 11)
s Segundos S Milissegundos z Sistema de Tempo
(general time zone)
Exercício
• Qual a máscara que deve ser utilizada para exibir a data nesse formato?
– 1/1/99 17:00
– 03-7-2014 - 8:8 pm
– 31/Dez/77, 19:40
– 0:59:00
– Terça-feira, 22 de janeiro de 14
• Teste cada uma das máscaras para uma data
Transformando String em Date: parse
try... catch... exceções
O método parse pode resultar em um erro! Quando?
try... catch... exceções
• O código tem que estar preparado para tratar
esse erro, por isso precisamos do “try catch”
• Algumas das classes que vocês vão utilizar lançam exceções que devem ser tratadas de forma semelhante!
• O estudo de exceções faz parte do módulo V
try... catch... (Genérico)
try {
//fazer isso
} catch (Exception e) {
//se der errado venha para cá
Exercício
• Utilizando método parse da classe
SimpleDateFormat, crie uma data que representa o dia do seu nascimento.
• Utilize o SimpleDateFormat para representar a
data do seu nascimento utilizando a seguinte máscara
SimpleDateFormat
• Para mais detalhes consultem a
documentação da classe SimpleDateFormat
Criando Datas Específicas
• A classe Date possui um construtor para criar datas específicas:
• Esse construtor é deprecated, isso significa que ele
está obsoleto e a comunidade não recomenda que você o utilize
• Um método deprecated ainda está disponível, mas não é recomendado utilizá-lo por diversas razões:
Criando Datas Específicas
Métodos deprecated aparecerãocom esse traço no código
Criando Datas Específicas
• Aqui, você encontrará uma discussão
interessante do porquê não utilizar esse construtor da classe Date
– http://stackoverflow.com/questions/460423/why-
was-new-dateint-year-int-month-int-day-deprecated
Calendar
• A classe Calendar foi criada para substituir e/ou complementar a classe Date
– A classe Date permite representar um instante no tempo como um objeto
– A classe Calendar permite, além disso, fazer diversas operações com datas
• Adicionar uma unidade de tempo a uma data
Calendar
• Como utilizar a classe Calendar?
– A classe Calendar não pode ser instanciada utilizando o operador new e seu construtor
• Isso não é possível Calendar c = new Calendar();
– Nem todos os seus métodos são estáticos, logo não posso chamá-los com o nome da classe
• Isso não é possível Calendar.set(1989, 0, 30)
Calendar
• Como obter um objeto do tipo Calendar?
Calendar
• Calendar utiliza um padrão de projeto para criar objetos do tipo de Calendar
• Para obter uma instância de Calendar, utiliza-se o método estático Calendar.getInstance()
• Calendar.getInstance() retorna um objeto do
tipo Calendar
• Esse método retornará um objeto calendar
Criando Datas Específicas com
Calendar
Obtendo uma instância de Calendar
Alterando a data
padrão para uma data específica
Exercício
• Utilizando Calendar crie uma data que
representa o dia do seu nascimento e imprima ela no console utilizando essa máscara.
– dd/MM/yyyy EEEE
• Adicione ao campo anos do seu nascimento a
diferença entre o ano atual e o ano do seu
Calendar
• Para mais detalhes consultem a
documentação da classe Calendar
Coleções
• As vezes, na maioria das vezes na verdade, precisamos manipular mais que um objeto
– Precisamos manipular diversos objetos
• Java fornece uma rica API para manipulação
de coleções de objetos
– Uma coleção é uma estrutura que permite armazenar diversos objetos
Coleções
• Não precisamos nos ater aos detalhes de
implementação sobre como essas estruturas para armazenar coleções de objetos
funcionam
• O programador deve se preocupar apenas sobre como utilizar essas coleções
Coleções
• Cada Classe dessa API tem suas próprias características
• Nos próximos slides, vamos analisar algumas
Coleções
• A forma como a Classe vai representar a coleção de objetos vai determinar como os objetos serão guardados e recuperados
• Cada classe representa de uma forma diferente uma coleção de objetos
– Ex. Vetor, Lista, Conjunto, Tabela Indexada
– Cada classe tem seu contrato de uso, que você precisa compreender para poder usá-la
Vetor
• Características do Vetor – Tamanho fixo
– Acesso direto aos elementos por meio do índice
Classe: Arrays
• Contém um conjunto de métodos estáticos
Exercício
• Usando a classe Arrays, escreva um programa,
em Java, para ler 10 números inteiros, ordenar e imprimi-los
• Usando a classe Arrays, escreva um programa,
em Java, para gerar 10 números inteiros aleatórios (1 até 100). O programa deverá
obter um número do usuário, verifique se esse número está contido no vetor e informe ao
Exercício
• Usando a classe Arrays, escreva um programa, em Java, para gerar dois vetores de tamanho 5, com números aleatórios entre 1 e 3. Compare e informe se esses vetores são iguais. Imprima os vetores gerados.
• Usando a classe Arrays, escreva um programa, em Java,
para preencher um vetor de 30 números “int” da seguinte forma
– Até o índice 9: com um número aleatório entre 0 e 9
– Do índice 10 ao 19: com um número aleatório entre 10 e 19
Arrays
• Para mais detalhes consultem a
documentação da classe Arrays
Listas
• Uma lista é uma coleção de elementos
arrumados numa ordem linear
– Isto é, onde cada elemento tem um antecessor (exceto, o primeiro) e um sucesso (exceto o
último)
• Estruturas conceitualmente dinâmicas
Listas
• Operações
– Adição de elementos
• Adicionar um objeto em qualquer lugar da lista, fornecendo o índice desejado
– Remoção de elementos
• Remover um objeto presente em qualquer lugar da lista, fornecendo o índice desejado
– Acesso aos elementos
• Obter o elemento de qualquer posição da lista, fornecendo o índice desejado
– Pesquisa de elementos
• Descobrir se um elemento está na lista
• Descobrir o índice de um elemento na lista
– Indagar sobre os atributos
• Obter o número de elementos da lista
ArrayList
• ArrayList é um dos diversos tipos de lista que existe na API de coleções
• Como declarar e usar ArrayList em Java – Importe:
import java.util.ArrayList;
– Por ser um tipo diferente, sua sintaxe é um pouco diferente do que você já viu até então:
ArrayList< Classe> nomeDoArrayList = new ArrayList< Classe>();
– No exemplo a seguir, vamos usar um ArrayList de String
ArrayList
Método O que faz? Exemplo de Utilização
add(Element e) Adiciona um elemento no fim da lista
nomes.add(“José”) add(int index, Element e) Adiciona um elemento em uma
posição específica
nomes.add(1, “Maria”) remove(Element e) Remove a primeira ocorrência do
elemento na lista, se ele existir.
nomes.remove(“Maria”) remove(int index) Remove o elemento da posição
especificada, deslocando para a esquerda os elementos a direita dessa posição.
nomes.remove(0)
get(int index) Retorna o elemento da posição especificada.
nomes.get(2) set(int index, Element e) Substitui o elemento na posição
especificada pelo passada como parâmetro.
ArrayList
Método O que faz? Exemplo de Utilização
isEmpty Retorna true se a lista está vazia. nomes.isEmpty() size Retorna o total de elementos
presente na lista.
nomes.size()
toArray Retorna um Array contendo os mesmos elementos da lista.
nomes.toArray()
contains(Element e) Retorna true se o elemento existir na lista.
nomes.contains(“Ana” )
indexOf(Element e) Retorna a posição na lista do elemento passado como parâmetro, se ele existir.
nomes.indexOf(“Mari
a”)
clear Apaga todos os elementos da lista.
Exercício
1. Crie um ArrayList de Strings
2. Adicione ao ArrayList alguns nomes de parentes da sua família e seu nome
3. Imprima a posição do seu nome 4. Remova o primeiro nome
ArrayList
• Para mais detalhes consultem a
documentação da classe ArrayList
Conjuntos
• Um conjunto consiste em um tipo de coleção
de objetos em que não pode haver elementos repetidos e que os elementos podem ou não estar organizados
– Como conjuntos em matemática
A B
HashSet e TreeSet
• No HashSet, os objetos do conjunto encontram-se desordenados
– Como usar
• Importe
java.util.HashSet
• Instancie
HashSet<String> nomes = new HashSet<String>();
• No TreeSet, os objetos do conjunto encontram-se ordenados
– Como usar
• Importe
java.util.TreeSet
• Instancie
HashSet e TreeSet
Método O que faz? Como usar?
add(Element e) Adiciona um elemento no conjunto.
nomes.add(“João”).
contains(Element e) Retorna true se o elemento passado como parâmetro existe no conjunto.
nomes.contains(“José”);
isEmpty() Retorna true se o conjunto está vazio.
nomes.isEmpty();
remove(Element e) Remove o elemento do conjunto.
nomes.remove(“João”);
size() Retorna a quantidade de elementos do conjunto.
nomes.size();
toArray() Retorna um array com os mesmos elementos do conjunto.
HashSet e TreeSet
• Mais detalhes sobre essas coleções podem ser
encontrados em suas documentações
– https://docs.oracle.com/javase/7/docs/api/java/u til/HashSet.html
Mapas
• Funcionam como um dicionário
– Cada elemento está associado a uma chave, utilizando a chave, acessa-se o elemento
diretamente.
– CADA ELEMENTO É MAPEADO POR UMA CHAVA
HashMap
• A classe HashMap é uma das principais
implementações de Mapa da API de Java.
– Não é sincronizada
HashMap
• O uso principal da classe HashMap é quando
queremos associar chaves e valores e,
posteriormente, recuperar valores baseados em suas chaves.
• Como utilizar
– Importe
import java.util.HashMap;
– Instancie
HashMap
Método O que faz? Como usar?
put(Key k, Element e) Insere no mapa o
elemento e o associa a sua chave.
Pessoa p = new Pessoa(“Cleyton”); mapa.put(“cleyton”, p)
get(Key k) Retorna o elemento passando sua chave.
mapa.get(“cleyton”)
remove(Key k) Remove o elemento passando sua chave.
mapa.remove(“cleyton”)
isEmpty() Retorna true se o mapa está vazio.
mapa.isEmpty()
size() Retorna o número de chaves que existem no mapa.
HashMap
Método O que faz? Como usar?
keySet() Retorna um
conjunto contendo as chaves do mapa.
Set set = mapa.keySet();
values() Retorna uma lista contendo os
elementos do mapa.
List list = mapa.values()
containsKey(Key k) Retorna true se a chave existe no mapa.
mapa.containsKey(“cleyton”)
containsValue(Element e) Retorna true se o elemento existe no mapa.
HashMap
• Para mais detalhes consultem a
documentação da classe HashMap
Envelopadores
• Coleções só podem conter objetos!
– Como criar um ArrayList de inteiro?
Envelopadores
• Os envelopadores (wrappers, em inglês) são
classes em Java que servem para representar os tipos primitivos
Envelopadores
Tipo Primitivo Classe
boolean Boolean
char Char
byte Byte
short Short
int Integer
long Long
float Float
Envelopadores
Exemplos
• A classe Integer possui o método longValue que converte um inteiro para double
– Integer i = new Integer(1);
– double d = i.doubleValue();
• A classe Integer possui o método estático
parseInt, o qual converte uma String em um número inteiro.
Exercício
Exercício
• Utilize método estático parseInt e o método nextLine de Scanner para ler uma String e convertê-la em um número
• Solução
– Scanner s = new Scanner(System.in);