Buscar

Introdução à Linguagem Java

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 3, do total de 49 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 6, do total de 49 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 9, do total de 49 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Prévia do material em texto

Java
Introdução à LinguagemIntrodução à Linguagem
Fabio Cozman
Escola Politécnica, USP
fgcozman@usp.br
Histórico
• Início com projeto da Sun para criar 
software para utilitários (1990)
• Linguagem Oak, projetada por Gosling • Linguagem Oak, projetada por Gosling 
(1994)
• Linguagem Java é criada para atuar na 
World Wide Web (1995)
• Versões: 1.0.2, 1.1.x, 1.2 (Java2), 1.3, 1.4...
Java é
Simples, orientada a objetos, distribuída, 
interpretada, segura, neutra a arquiteturas, 
portável, de alta performance, dá suporte a 
múltiplas linhas de processamento, múltiplas linhas de processamento, 
dinâmica
(conforme propaganda da Sun, no Java 
Whitepaper, www.javasoft.com)
Explicando as Palavras
Neutra a arquiteturas, portável
Interpretada De alta performance
SeguraSegura
Simples
Orientada a objetos
Robusta
Neutra a Arquiteturas
• Source (.java)
→Compilador (javac)
• Bytecode (.class)• Bytecode (.class)
→Interpretador (java)
Java é interpretada, mas de um jeito especial
Java é interpretada:
• Código fonte é compilado (transformado em 
bytecodes) e então interpretado pela JVM
• Em linhas gerais:• Em linhas gerais:
– Linguagens compiladas: código fonte é 
transformado em código de máquina e 
armazenado para execução
– Linguagens interpretadas: cada instrução é 
transformada em código de máquina e 
executada imediatamente e individualmente
Java é Realmente Portável
• Tipos são padronizados:
byte tem 8 bits, short tem 16 bits, int tem 32 
bits, long tem 64 bitsbits, long tem 64 bits
• Operações matemáticas são padronizadas
float, double tem representação IEEE754
NaN funciona (!)
• Caracteres são padronizados 
char é caracter Unicode com 16 bits
Java é segura
• Nenhum acesso direto à memória 
(ponteiros)
• Controle sobre operações de sistema• Controle sobre operações de sistema
• Verificação de bytecodes (conceito de 
sandbox)
Java é Simples
• Não há controle de memória pelo 
programador
• Não há: pointer, union, enum, typedef• Não há: pointer, union, enum, typedef
• Não há prototypes
• Não há pre-processador
• Não há sobrecarga de operadores, herança 
múltipla, templates (para C++)
Java é Simples e Familiar
public class Echo {
public static void main (String[] args) {
for (int i = 0; i < args.length; i++)for (int i = 0; i < args.length; i++)
System.out.println(args[i]);
}
}
Java é Robusta
• Sistema de tipos é rígido
if (a = 1) { 
• Verificação de tipos em tempo de execução
LinkedList a;
b = (HashTable)a;
Java é Realmente Robusta
• Verificação de vetores em tempo de 
execução
• Verificação de null-pointer em tempo de • Verificação de null-pointer em tempo de 
execução
• Manipulação de exceções é parte da 
linguagem
• Inicialização automática para qualquer 
variável
Em Resumo, Java...
• Simples, Robusta, Orientada a Objetos
• Portável
• Segura• Segura
• e tem uma variedade de libraries:
interfaces gráficas (AWT, Swing)
suporte para linhas de processamento, rede, 
imagens, sons
vetores, stacks, hashtables, etc
Ferramentas para Java
• JSDK (Sun):
– appletviewer, jar, java, javac, javadoc, jdb 
javah, javakey, javap, native2asciijavah, javakey, javap, native2ascii
• Livre: 
– NetBeans (Sun)
– Eclipse
• Comerciais: Jbuilder, VisualAge, etc
Informações
• Documentação e download em 
java.sun.com
• Concentre-se em Java Standard Edition • Concentre-se em Java Standard Edition 
(SE), versão JDK 6 (não use beta!)
• Tutorial (em Learning): 
http://java.sun.com/docs/books/tutorial/index.html
Introdução à Linguagem
/* Classe Echo para teste. */
public class Echo {
// Esse e' o metodo principal.
public static void main (String[] args) {
for (int i = 0; i < args.length; i++)
System.out.println(args[i]);
System.exit(0);
}
}
Fluxo de Controle
• if, else
• while
• do, while• do, while
• switch
• for
• break
• continue
Tipos de Dados Primitivos
• boolean
• char
• byte, short, int, long• byte, short, int, long
• float, double
• Strings (!): operador + para concatenação
Operadores
Arranjos (Arrays)
• Unidimensionais:
int[2], Button[10], Object[122]
• Multidimensionais:
int[3][44][3]
• Multidimensionais:
int[3][44][3]
• Criados com new:
int[] a = new int[2];
• Não precisam ser removidos (“coleta de 
lixo”)
Orientação a Objetos
• Programas são organizados em torno de 
classes e objetos
public class Circle {
public double x,y,r;public double x,y,r;
public double area() {
return( Math.PI * r * r );
}
}
Declaração e Criação de 
Objetos
• Declare: 
Circle c;
• Crie:• Crie:
c = new Circle();
• Declare, crie e inicialize:
Circle c = new Circle(1,2,3);
Métodos e Construtores
• Chamando um método:
c.area(); 
• Construtor simples: • Construtor simples: 
public Circle () {
}
• Outro construtor (sobrecarga) 
public Circle(double x, double y, double r)
Variáveis de Classe
• Variável associada à classe (não a objetos)
public class Circle {
static int num_circles;static int num_circles;
...
a = Circle.num_circles;
...
}
• Exemplo: Math.PI
Métodos de Classe
• Método associado à classe
• Exemplos importantes: Math.sqrt, 
Math.max, Math.min, Math.cos, etcMath.max, Math.min, Math.cos, etc
• Método declarado como static:
public static void main(String args[])
public static double sqrt(double v)
Hierarquias e Heranças
• Classes podem ser estendidas
• Objetos herdam variáveis e métodos
• Superclasse é referida por super• Superclasse é referida por super
• Métodos são superpostos, variáveis não
Coleta de lixo
• Java não tem recursos na linguagem para 
liberar memória
• Memória é liberada automaticamente • Memória é liberada automaticamente 
através de um processo denominado “coleta 
de lixo” (garbage collection)
• Quando coletados, objetos podem ser 
finalizados pelo método finalize()
Além disso,
• Packages: grupos de classes (package)
• Import: inclusão de classes
• Importante: através das regras de uso de • Importante: através das regras de uso de 
packages e imports, Java mantem uma 
estrutura de nomes que impede colisões
Acesso a Objetos
• Possíveis situações:
public
(package)(package)
protected
private
• Dica: construa packages pequenos para 
garantir encapsulamento de dados
Copiando Objetos
• Para copiar referências:
Object a, b;
a = b;
• Um exemplo:
public void swap(Object a, Object b) {public void swap(Object a, Object b) {
Object temp = a;
a = b;
b = temp;
}
Pacotes
• Packages: grupos de classes (package)
• Inclusão de classes e pacotes (import)• Inclusão de classes e pacotes (import)
• Através do uso de pacotes, Java mantém uma 
estrutura de nomes que evita colisões.
Acesso a Objetos
• Possíveis situações:
– public todas as classes
– (package) só no pacote– (package) só no pacote
– protected só no pacote e subclasses
– private só na classe
• Dica: construa pacotes pequenos para 
garantir encapsulamento de dados.
Java e OO: Resumo
• Variáveis: primitivas e de referência; 
Strings; locais; final.
• Objetos: this; super; new; finalize; coleta de 
lixo
• Classes: public; extends; final
• Arrays: new; coleta de lixo
• Métodos: this; super; construtores; 
sobrecarga; superposição; public, private, 
protected; static; final 
Classes Abstratas
• Objetivo: implementar alguma 
funcionalidade, mas deixar funcionalidade 
para sub-classespara sub-classes
• Classes abstratas não geram objetos
Interfaces
• Uma “classe abstrata” que só tem métodos 
abstratos e constantes (static final)
• Define a “interface” entre classes (!)• Define a “interface” entre classes (!)
• Uma das mais poderosas ferramentas para 
especificação de software, e um substituto 
para herança múltipla
Manipulação de Exceções
• Novos termos:
try - uma região de código
catch - uma condição de exceçãocatch - uma condição de exceção
finally - uma região de código 
• Além disso, um método pode throw/throws
exceções
Exceções são Objetos
• Classes de exceções podem ser definidas e 
estendidas
• java.lang Throwable• java.lang Throwable
java.lang.Error 
java.lang.Exception• Em geral, nunca use catch para tratar um 
objeto Error
Exceções devem ser Tratadas
• Tratamento:
- Uso de try e catch
- Uso de throws- Uso de throws
• Java exige tratamento de toda exceção que 
não estenda Error ou 
Exception.RuntimeException
Blocos try-finally
• É possível usar try e finally sem tratar 
exceções
• Objetivo: garantir finalização de • Objetivo: garantir finalização de 
procedimentos (fechar arquivos, conexões, 
etc), mesmo com break, continue ou return
Pacotes Java
• Java 1.0:
– lang (automático!)
– io, applet, awt (image, peer), net, util– io, applet, awt (image, peer), net, util
• Java > 1.0:
– beans, math, security, text, swing, sql, ...........
String
• String s = “exemplo” + “!!!”;
• Métodos:
– s.length(), s.concat(“ab”), – s.length(), s.concat(“ab”), 
s.substring(4) // 4 ao fim,
s.substring(4,6), s.charAt(4), s.toCharArray(),
s.toUpperCase(), s.toLowerCase(), 
s.startsWith(“ab”), s.endsWith(“ab”), 
s.compareTo(“ab”) // <0 se <, =0 se =, >0 se >,
s.compareToIgnoreCase(“ab”), s.indexOf('a')
Ainda sobre Strings
• Método toString() aplicado a todo objeto:
String s = o.toString();
• Classe StringBuffer:• Classe StringBuffer:
– capacity, length, charAt, append, insert, reverse
• Classe StringTokenizer (muito útil!)
• Escapes:
– \b, \t, \n, \”, \xxx...
Classes “Empacotadoras”
• Boolean Byte, Short, Integer, Long, Float, 
Double, Character
• Métodos: X.parseX(String s)• Métodos: X.parseX(String s)
• Character.isLetter, Character.toUpperCase.
• Integer.toBinaryString(int x),
Integer.toOctalString(int x),
Integer.MAX_VALUE,
Integer.MIN_VALUE.
Math, System
• Math.cos/sin/tan/acos/asin/atan/exp/log/pow/
ceil/floor/round/toDegrees.
• Note: java.math contém BigInteger, 
BigDecimal.BigDecimal.
• System: exit, currentTimeMillis, arraycopy
• System: 
– PrintStream out, err
– InputStream in
java.io
• Pacote para Entrada/Saída de dados 
(arquivos, teclado, monitor)
• Classe File: permite manipular arquivos e • Classe File: permite manipular arquivos e 
diretórios (tamanhos, datas, permissões).
• InputStream e OutputStream: ler e escrever 
sequências de bytes.
• Reader e Writer: ler e escrever sequências de 
caracteres.
Ler do teclado
• Variável System.in:
import java.io.*;
BufferedReader br = BufferedReader br = 
new BufferedReader(new 
InputStreamReader(System.in));
String n;
try {
n = br.readLine();
} catch(IOException e) { }
Ler de arquivo
• Classe BufferedReader:
import java.io.*;
try {
BufferedReader br = 
new BufferedReader(new FileReader(“hey.txt”));new BufferedReader(new FileReader(“hey.txt”));
String line = br.readLine();
while (line != null) {
System.out.println(line);
line = br.readLine();
}
br.close();
} catch (IOException e) { }
Escrever em arquivo
• Classe PrintWriter:
import java.io.*;
try {try {
File f = new File(“dir”, “hey.txt”);
PrintWriter pw = 
new PrintWriter(new FileWriter(f));
pw.println(“HEY! File with ” + f.length());
pw.close();
} catch (IOException e) { }
java.net
• import java.net.*;
import java.io.*;
public class Download {
public static void main(String args[]) {
String linha;
if (args.length>0) {
try {
URL u = new URL(args[0]);URL u = new URL(args[0]);
DataInputStream html = 
new DataInputStream(u.openStream());
while ((linha = html.readLine()) != null) 
System.out.println(linha);
html.close();
} catch (Exception e) { System.err.println(e); }
}
}