Buscar

Fundamentos de 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

Você também pode ser Premium ajudando estudantes

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ê também pode ser Premium ajudando estudantes

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ê também pode ser Premium ajudando estudantes
Você viu 3, do total de 65 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

Você também pode ser Premium ajudando estudantes

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ê também pode ser Premium ajudando estudantes

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ê também pode ser Premium ajudando estudantes
Você viu 6, do total de 65 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

Você também pode ser Premium ajudando estudantes

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ê também pode ser Premium ajudando estudantes

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ê também pode ser Premium ajudando estudantes
Você viu 9, do total de 65 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

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Linguagem de Programação I
Professor: Fábio José Rodrigues Pinheiro
Bel em Ciência da Computação
fabio@ifc-videira.edu.br 
Índice
• Java Development Kit (JDK)
• Estrutura de um programa Java
• Palavras reservadas
• Identificadores
• Comentários
• Tipos de dados 
• Operadores e expressões
• Entrada e saída de dados
• Estruturas de controle
• Vetores e Matrizes
• Pacotes
• Enumeração
fabio@ifc-videira.edu.br 
Java Kit
• Estrutura de diretórios do J2SE:
– /bin
• contém todos os programas utilitários necessários 
para compilação e execução de aplicações
– /demo
• contém diversos programas em Java para 
demonstrar alguns recursos da linguagem 
– /include
• contém os headers para interface de programas 
Java e C
fabio@ifc-videira.edu.br 
Java Kit
• Estrutura de diretórios:
– /jre 
• (Java Run-time Environment) - contém os 
programas e bibliotecas necessários para 
executar código Java. 
– /lib
• contém as bibliotecas necessária para a 
execução e compilação de programas Java 
fabio@ifc-videira.edu.br 
Java Kit
• Programas (executáveis: /bin):
– appletviewer: vizualizador de applets
– jar: criador de pacotes
– javadoc: gerador de documentação
– java: interpretador
– javac: compilador
– jdb: debugador (debugger)
– Outros: idj, javah, javap, javaw, rmic, rmid, 
rmiregistry, orbd, kinit, klist, serialver, etc.
fabio@ifc-videira.edu.br 
Primeiro Exemplo
Exemplo “Alô Mundo”
1: class AloMundo{
2: public static void main(String []a){
3: System.out.println(“Alô mundo”);
4: }
5: }
fabio@ifc-videira.edu.br 
Estrutura
• Definição da classe
– Palavra reservada “class” + nome da classe
– Nome da classe = Nome do arquivo.java
• Blocos
– Abre e fecha com “{” “}”: classes, métodos, estruturas 
de controle, decisão,etc.
– Linhas 1 e 5; 2 e 4;
• Método “main”
– Método utilizado pelo interpretador java para a execução 
do programa.
fabio@ifc-videira.edu.br 
Estrutura
• Palavras reservadas: class, public, void, 
static.
• Identificadores: AloMundo, main, System, 
out, println.
fabio@ifc-videira.edu.br 
• As palavras reservadas ou palavras-chave 
(keywords) são palavras especiais que você 
não pode usar como identificadores 
(nomes) para classes, métodos, ou variáveis.
• São utilizadas pelo compilador.
• Total: 49 palavras
Palavras Reservadas
fabio@ifc-videira.edu.br 
Palavras Reservadas
fabio@ifc-videira.edu.br 
Identificadores
• Identificadores são seqüências de caracteres, 
que devem obedecer às seguintes regras:
– Um nome pode ser composto por letras, por 
dígitos e pelos símbolos _ e $.
– Um nome não pode ser iniciado por um dígito (0 
a 9).
– Letras maiúsculas são diferenciadas de letras 
minúsculas.
– Uma palavra-chave da linguagem Java não pode 
ser um identificador.
fabio@ifc-videira.edu.br 
Identificadores
• Tipos de identificadores:
– Classes
– Métodos
– Atributos (variáveis, constantes)
• Java diferencia as letras minúsculas da 
maiúsculas (case sensitive). Exemplo:
int aluno; DIFERENTE DE int aluNo;
fabio@ifc-videira.edu.br 
Exemplo Identificadores
class AloMundo{
public static void main(String[] a){
String mensagem = “Alô mundo”;
System.out.println(mensagem);
}
}
fabio@ifc-videira.edu.br 
Identificadores
• Regras (code conventions):
– Nomes de classes são iniciados por letras 
maiúsculas.
– Nomes de métodos, atributos e variáveis são 
iniciados por letras minúsculas.
– Em nomes compostos, cada palavra do nome é 
iniciada por letra maiúscula - as palavras não 
são separadas por nenhum símbolo.
– Constantes em maiúsculo
fabio@ifc-videira.edu.br 
Comentários
• Os comentários são partes do código 
ignoradas pelo compilador Java.
• Úteis no entendimento do código.
• Tipos:
– Por linha: //
– Por bloco: /* */
fabio@ifc-videira.edu.br 
Exemplo Comentário
//classe que escreve uma mensagem
class AloMundo{
/* Método main.
 É invocado ao executar o programa.
*/
public static void main(String [a]){
System.out.println(“Alô mundo”);
}
}
fabio@ifc-videira.edu.br 
Compilar/Executar
• Compilar um Programa
– Edite o codigo-fonte em um editor de textos qualquer
– Salve o arquivo para NomeDaClasse.java
– Execute: javac NomeDaClasse.java
• Rodar o Programa
– Execute: java NomeDaClasse
– Note que nao inclumos a extensao .class ou .java para 
executar o programa!
– Em ambos os casos, o diretorio que contem o programa 
deve ser o diretorio corrente da janela de comandos
fabio@ifc-videira.edu.br 
Outro Exemplo
1: class AloMundo{
2: String mensagem = “Alo Mundo”;
3: public void escreve(){
4: System.out.println(mensagem);
5: }
6: public static void main(String[] a){
7: AloMundo alo = new AloMundo();
8: alo.escreve();
9: }
10:}
fabio@ifc-videira.edu.br 
Links Interessantes
• Java http://java.sun.com 
• Java Documentation 
http://www.oracle.com/technetwork/java/javase/doc
umentation/index.html
• The Java Tutorial 
http://download.oracle.com/javase/tutorial/ 
• Java Free http://javafree.org
• Grupo de Usuários Java http://www.guj.com.br
• Revistas
– Java Magazine http://www.javamagazine.com.br
– Mundo Java http://www.mundojava.com.br
fabio@ifc-videira.edu.br 
Tipos de Dados
• Numérico: inteiros
• Exemplos:
int x = 345245;
byte y = 13;
Tipo Valor Tamanho
byte -128 a 127 8 bits
short -32.768 a 32.767 16 bits
int -2.147.483.648 a 2.147.483.647 32 bits
long -9.223.372.036.854.775.808 a 
9.223.372.036.854.775.807
64 bits
fabio@ifc-videira.edu.br 
Tipos de Dados
• Numérico: ponto flutuante
• Exemplos:
float x = 345.111f (ou F);
double y = 2.74e12;
Tipo Valor Tamanho
float -3.40292347E+38 a +3.40292347E+38 32 bits
double -1.79769313486231570E+308 a + 
1.79769313486231570E+308
64 bits
fabio@ifc-videira.edu.br 
Tipos de Dados
• Caracter
• Exemplos:
– char a = ‘b’;
– char b = ‘a’;
Tipo Valor Tamanho
char 0 a 65535 16 bits
fabio@ifc-videira.edu.br 
Tipos de Dados
– Escritos entre aspas simples: ’a’ ’*’ ’3’ etc.
– “Caracteres de controle” (ex: fim de arquivo, 
tabulação, mudança de linha etc.) :
’\n’ indica terminação de linha 
’\t’ indica tabulação
’\” indica o caractere ’ 
’\\’ indica o caractere \
fabio@ifc-videira.edu.br 
Tipos de Dados
• Exemplo:
boolean minusc (char x){ 
return (x >= ’a’) && (x <= ’z’); 
}
boolean maiusc (char x){ 
return (x >= ’A’) && (x <= ’Z’); 
}
boolean digito (char x){ 
return (x >= ’0’) && (x <= ’9’);
}
fabio@ifc-videira.edu.br 
Tipos de Dados
• Lógico
• Exemplos:
– boolean a = false;
– boolean b = true;
true ou falseboolean
ValorTipo
fabio@ifc-videira.edu.br 
Tipo String
• String não é um tipo primitivo, e sim uma classe.
– Exemplo: String nome = “João da Silva”;
• Por não ser um tipo primitivo, não pode ser 
comparado com igualdade.
– boolean equals(String): compara o objeto 
com o String passado por parâmetro
– boolean equalsIgnoreCase(String): 
compara o objeto com o String passado por 
parâmetro, ignorando maiúsculos e minúsculos.
fabio@ifc-videira.edu.br 
Tipo String
fabio@ifc-videira.edu.br 
Operações
• Tipos de operadores:
– Aritméticos
– Atribuição
– Relacionais
– Lógicos
fabio@ifc-videira.edu.br 
Operadores Aritméticos
fabio@ifc-videira.edu.br 
Operadores Aritméticos
• Diferença entre “++a” e “a++”
int a = 1; int b = 1; int c = 1;
1º
a = b++ + c;
System.out.println(“a = “ + a);
System.out.println(“b = “ + b);
2º
a = ++b + c;
System.out.println(“a = “ + a);
System.out.println(“b = “ + b);
a = 2
b = 2
c= 1
a = 3
b = 2
c =1
fabio@ifc-videira.edu.br 
Operadores de Atribuição
• Uso compacto de operações aritméticas
fabio@ifc-videira.edu.br 
Operadores Relacionais
fabio@ifc-videira.edu.br 
Operadores Lógicos
fabio@ifc-videira.edu.br 
Entrada e Saída de Dados
• Saída:
– System.out.printf(); //igual ao C
Exemplo:
– System.out.println(String); //ou print, sem quebra 
de linha
Exemplo:
fabio@ifc-videira.edu.br 
• Entrada
– Classe Scanner
Entrada e Saída de Dados
fabio@ifc-videira.edu.br 
Métodos Úteis
Programação Orientada a Objetos
Estruturas de Controle
• Condicional: if e switch
• Repetição: for, while e do-while
Programação Orientada a Objetos
Estruturas de Condição
if ( nota >= 90 )
System.out.println( "A" );
else if ( nota >= 80 )
System.out.println( "B" );
else if ( nota >= 70 )
System.out.println( "C" );
else if ( nota >= 60 )
System.out.println( "D" );
else
System.out.println( "F" );
Programação Orientada a Objetos
Estruturas de Condição
• Switch:
switch (expressão){
case valor1: diretiva1;
break;
case valor2: diretiva2;
break;
...
case valorN: diretivaN;
break;
default: diretiva default;
break;
}
• Exemplo:
 String mes;
switch(mesAgora){
case 1: mes="Janeiro"; break;
case 2: mes="Fevereiro"; break;
case 3: mes="Março"; break;
case 4: mes="Abril"; break;
case 5: mes="Maio"; break;
case 6: mes="Junho"; break;
case 7: mes="Julho"; break;
case 8: mes="Agosto"; break;
case 9: mes="Setembro"; break;
case 10: mes="Outubro"; break;
case 11: mes="Novembro"; break;
case 12: mes="Dezembro"; break;
}
Estruturas de Condição
Programação Orientada a Objetos
Estruturas de Repetição
• while:
while (expressão){
...
}
– Exemplo:
int numero = 2;
while (numero<10000){
numero *= numero;
 System.out.println(“Ainda sou menor que 10000”);
}
Programação Orientada a Objetos
Estruturas de Repetição
• do while:
do{
...
} while (expressão)
• Exemplo:
int num = 2;
do{
 numero *= numero;
 System.out.println(“Ainda sou menor que 10000”);
} while (num < 10000)
Programação Orientada a Objetos
• for:
for (inicialização; condição; incremento){
...
}
– Exemplo:
for (int i = 0; i<=10; i++){
System.out.println(“9X“ + i + “=“ + 9*i);
}
Estruturas de Repetição
fabio@ifc-videira.edu.br 
Vetores
• Forma mais eficiente de manter referências
• Características
– Tamanho fixo: vetores não podem ser redimensionados depois de 
criados.
– Quantidade máxima de elementos obtida através da propriedade 
length (comprimento do vetor).
– Verificados em tempo de execução: erro do tipo 
ArrayIndexOutOfBoundsException.
– Tipo definido: Pode-se restringir o tipo dos elementos que podem 
ser armazenados.
fabio@ifc-videira.edu.br 
• Declaração:
int[] numeros;
String[] meses;
boolean[] valores;
• Criação:
numeros = new int[10];
meses = new String[12];
valores = new boolean[9999];
Vetores
fabio@ifc-videira.edu.br 
• Inicialização:
numeros[0] = 123; numeros[1] = 528; numeros[2] = -111;
String[] meses = {"janeiro", "favereiro", "marco",
 "abril", "maio", "junho",
 "julho", "agosto", "setembro",
 "outubro", "novembro", "dezembro"};
• Tamanho do array:
nome-do-array.lenght
Vetores
fabio@ifc-videira.edu.br 
• Array de array: matriz
• Declaração:
int[][] matriz;
• Criação:
matriz = new int [3][4]; //matriz com 
3 linhas, e 4 colunas. Ou 3 arrays de 
tamanho 4 elementos.
ou
matriz = new int[3][]; //3 arrays com 
tamanho indefinido
Matriz
fabio@ifc-videira.edu.br 
For each
• O Java 5.0 introduziu uma construção poderosa 
de loops que permite fazer um loop por cada 
elemento em um array sem precisar mexer com 
índices.
for (variável : coleção) instrução
– Onde a variável representa cada elemento da 
coleção (um array, por exemplo)
fabio@ifc-videira.edu.br 
For each
• Exemplo
– Loop padrão com for:
int[] a = {3, 6, 9};
for (int i = 0; i < a.length; i++){
System.out.println(a[i]);
}
– Com o “for each”:
for (int x : a) {
System.out.println(x);
}
Programação Orientada a Objetos
Pacotes
• Na medida em que as aplicações tornam-se mais 
complexas, faz-se necessária uma organização das 
classes.
• Desta forma sabe-se a qual aplicação ou projeto 
uma determinada classe pertence.
• A necessidade é ainda maior quando se deseja 
compartilhar as classes.
• Java provê o mecanismo de agrupamento de 
classes em Pacotes (packages), onde o grupo de 
classes mantêm uma relação entre si.
Programação Orientada a Objetos
Pacotes
• Para a criação desses pacotes, basta uma 
declaração de pertinência em cada classe e 
uma organização das classes em diretórios.
• Classes sem declaração de pertinência em 
pacotes pertencem ao chamado pacote default.
• Pacotes requerem que as classes que comporão 
o pacote sejam armazenadas em um diretório 
específico.
• A declaração do pacote é feita através da 
palavra-chave package.
Programação Orientada a Objetos
Pacotes
• A estrutura comumente usada é de diretórios 
e subdiretórios com vários níveis de 
hierarquia.
• O padrão mais utilizado para essa estrutura é: 
nome do domínio da instituição/empresa que 
desenvolve o pacote em ordem reversa.
– Exemplo
pacote: br.edu.ifc.sistema
diretório: c:/../../br/edu/ifc/sistema
Programação Orientada a Objetos
Pacotes
package br.edu.ifc.sistema.geometria;
public class Circulo{
private double raio;
public Circulo(double raio){
this.raio = raio;
  }
public double calculaArea(){
return Math.PI*raio*raio;
  }
}
Programação Orientada a Objetos
Pacotes
import br.edu.ifc.sistema.geometria.Circulo;
class EditorGrafico{
Circulo c;
  Math m;
public EditorGrafico(){
c = new Circulo();
m = new Math();
  }
}
Programação Orientada a Objetos
Pacotes
• Numa estrutura de pacotes, classes devem ser declarados 
explicitamente como public.
• Métodos e atributos sem modificadores, são considerados 
default, podendo ser acessados livremente dentro do 
mesmo pacote.
• Java possui um pacote padrão – java.lang – que precisa 
ser importado.
• Os demais pacotes deve ser importados: java.io, java.net, 
javax.swing, java.util, etc.
– Acessar a documentação da API do Java
Programação Orientada a Objetos
String e
 StringBuilder
Programação Orientada a Objetos
String
• É uma seqüência de caracteres imutável
– Representa uma cadeia de caracteres Unicode
– Otimizada para ser lida, mas não alterada
– Nenhum método de String modifica o objeto armazenado
• Há duas formas de criar Strings
– Através de construtores, métodos, etc:
String s1 = new String("Texto");
String s2 = objeto.getText(); 
String s3 = coisa.toString();
– Através de atribuição de um literal
String s3 = "Texto";
Programação Orientada a Objetos
String
• Strings criados através de literais são automaticamente 
armazenadas em um pool para possível reuso.
– Mesmo objeto é reutilizado: comparação de Strings iguais 
criados através de literais revelam que se tratam do mesmo 
objeto.
• Como Strings são objetos imutáveis, podem ser reusados.
• Strings iguais criados através de literais são o mesmo objeto
String um = "Um";
String dois = "Um";
if (um == dois) System.out.println("um e dois são 
um!");
Programação Orientada a Objetos
String
• Strings criados de outras formas não são.
String um = "Um";
String tres = new String("Um");
if (um != tres)
System.out.println("um não é três!");
• Literais são automaticamente guardados no pool. Outros 
Strings podem ser acrescentados no pool usando intern().
quatro = tres.intern();if (um == quatro)
System.out.println("quatro é um!");
Programação Orientada a Objetos
String
• Métodos que criam novos Strings:
– String concat(String s): retorna a concatenação do String 
atual com outro passado como parâmetro
– String replace(char old, char new): troca todas as 
ocorrências de um caractere por outro
– String substring(int start, int end): retorna parte do String 
incluindo a posição inicial e excluindo a final
– String toUpperCase() e String toLowerCase(): retorna o 
String em caixaalta e caixa baixa respectivamente
Programação Orientada a Objetos
String
• Métodos para pesquisa
– boolean endsWith(String) e startsWith(String)
– int indexOf(String), int indexOf(String, int offset): retorna 
posição do sub string.
– char charAt(int posição): retorna caractere em posição
• Comparação
– boolean equals(String): compara o objeto com o String 
passado por parâmetro
– boolean equalsIgnoreCase(String): compara o objeto com o 
String passado por parâmetro, ignorando maiúsculos e 
minúsculos.
Programação Orientada a Objetos
String
• Conversão
– Static String valueOf(tipo-primitivo): converte tipo 
primitivo em um String
• Outros métodos
– char[] toCharArray(): retorna o vetor de char 
correspondente ao String
– int length(): retorna o comprimento do String
Programação Orientada a Objetos
StringBuilder
• É uma seqüência de caracteres mutável
– Representa uma cadeia de caracteres Unicode
– Otimizada para ser alterada, mas não lida
• StringBuilders podem ser criados através de seus 
construtores
StringBuilder b1 = new StringBuilder();
StringBuilder b2 = new StringBuilder("Texto 
inicial");
Programação Orientada a Objetos
StringBuilder
• Métodos de StringBuilder operam sobre o próprio objeto
– StringBuilder append(String s): adiciona texto no final
– StringBuilder insert(int posição, String s): insere na posição
– void setCharAt(int posição, char c): substitui na posição
– String toString(): transforma o buffer em String para que possa 
ser lido
• Exemplo
StringBuilder buffer = new StringBuilder("H");
buffer.append("e").append("l").append("l").append(o");
System.out.println(buffer.toString());
Programação Orientada a Objetos
StringBuilder
• Usar String para manipular com valores constantes
– Textos carregados de fora da aplicação
– Valores literais
– Textos em geral que não serão modificados intensivamente
• Usar StringBuilder para alterar textos
– Acrescentar, concatenar, inserir, etc.
• Prefirir usar StringBuilder para construir Strings
– Concatenação de strings usando "+" é extremamente cara: 
um novo objeto é criado em cada fase da compilação apenas 
para ser descartado em seguida
– Usar StringBuilder.append() e, no final, transforme o 
resultado em String
	Slide 1
	Slide 2
	Slide 3
	Slide 4
	Slide 5
	Slide 6
	Slide 7
	Slide 8
	Slide 9
	Slide 10
	Slide 11
	Slide 12
	Slide 13
	Slide 14
	Slide 15
	Slide 16
	Slide 17
	Slide 18
	Slide 19
	Slide 20
	Slide 21
	Slide 22
	Slide 23
	Slide 24
	Slide 25
	Slide 26
	Slide 27
	Slide 28
	Slide 29
	Slide 30
	Slide 31
	Slide 32
	Slide 33
	Slide 34
	Slide 35
	Slide 36
	Slide 37
	Slide 38
	Slide 39
	Slide 40
	Slide 41
	Slide 42
	Slide 43
	Slide 44
	Slide 45
	Slide 46
	Slide 47
	Slide 48
	Slide 49
	Slide 50
	Slide 51
	Slide 52
	Slide 53
	Slide 54
	Slide 55
	Slide 56
	Slide 57
	Slide 58
	Slide 59
	Slide 60
	Slide 61
	Slide 62
	Slide 63
	Slide 64
	Slide 65

Continue navegando