Documente Academic
Documente Profesional
Documente Cultură
Baixe o Java Developer Kit (SDK ) a partir do site http://java.sun.com. Configure a seguinte varivel de ambiente: Classpath=.;C:\jdkX.X.X\lib; Path =.; C:\jdkX.X.X\bin;
- Java orientada a objetos Programas desenvolvidos em termos de dados e mtodos que operam nos dados. - Java independente de plataforma (Portabilidade) Programas Java no so compilados para uma plataforma de hardware especfica, mas, sim, para uma forma intermediria de cdigo (bytecodes) destinada mquina virtual Java, denominada JVM (Java Virtual Machine). A JVM , na verdade, um interpretador de bytecodes para a plataforma na qual eles so executados. Por ser possvel implementar uma JVM para qualquer plataforma, um mesmo programa Java pode ser executado em qualquer arquitetura que disponha de uma JVM.
Performance
A linguagem Java foi projetada para ser compacta, independente de plataforma e para a utilizao em rede, o que levou deciso de ser interpretada por intermdio dos esquemas de bytecodes. Sendo um linguagem interpretada, sua performance razovel, no podendo ser comparada velocidade de execuo de cdigo nativo. Para superar essa limitao, vrias JVM existentes dispem de compiladores just in time (JIT), capazes de compilar bytecodes em cdigo nativo durante a carga do programa, possibilitando uma melhora significativa na performance dos programas Java, equiparando-os ao desempenho obtido com programas nativos.
Programa Java
Byte-code
JVM Windows
JVM Mac
JVM Linux
Programa interpretado
Programa interpretado
Programa interpretado
- Java robusto Se refere a confiabilidade. Executa coleta automtica de lixo, que libera a memria no utilizada, eliminando a necessidade do programa liberar memria no utilizada. Java institui um mtodo de deteco de erros conhecido com tratamento de excees. Quando acontece um erro no programa, Java o sinaliza com uma exceo, o que d ao programa a oportunidade de se recuperar do erro e alertar o usurio de que alguma coisa provocou uma falha em uma operao especfica.
9
O Ambiente Java
Aplicativos e Miniaplicativos (applet) Classes e API Java Java Virtual Machine (JVM) Adaptador Sistema Operacional Hardware (a) Adaptador Browse Sistema Operacional Hardware (b) Sistema Operacional Java
Hardware (c)
Rigorosamente falando, a plataforma Java constituda apenas de suas classes e API especficas, juntamente com a JVM. A plataforma Java pode ser adaptada para hardware especfico de trs formas: (a) por meio de um adaptador especfico para cada sistema operacional/hardware especfico; (b) por meio de um adaptador especfico para cada browse especfico; (c) Sendo integrada a um sitema operacional nativo Java que opere para um certo hardware.
O primeiro passo consiste da edio do programa por meio de um editor de textos capaz de salvar arquivos no formato ASCII (por exemplo, o bloco de notas (Notepad) do Microsoft Windows). Aps a edio de qualquer programa Java, os arquivos devem, obrigatoriamente ser salvos com a extenso .java. Tais arquivos de programa so chamados de arquivos-fonte de programa ou apenas arquivos-fonte.
- Compilao O programador emite o comando javac para compilar o programa. O compilador java traduz o programa java para bytecodes - a linguagem entendida pelo interpretador Java. Para compilar um programa chamado BemVindo.java, digite: javac BemVindo.java na janela de comando de seu sistema (isto , o prompt do MS-DOS no seu Windows). Se o programa compilar corretamente, ser gerado um arquivo chamado BemVindo.class. Esse o arquivo contendo os bytecodes que sero interpretados durante a fase de execuo. - Execuo do arquivo .class pela JVM java BemVindo Primeiro, java faz a chamada da JVM que executar o arquivo com as instrues, os bytecodes. Depois faz uma referncia ao nome do arquivo BemVindo.
15
Compilao e Execuo
1. Supondo um sistema Windows, na opo iniciar->executar, digite: cmd, para abrir uma janela de execuo de linha de comando. 2. Mudar para o diretrio onde foram salvos os arquivos-fontes. 3. Setar o diretrio do SDK (se o diretrio em que o SDK foi instalado outro, use o nome correto): path = c:\j2sdk1.4.1_01\bin;%path% 4. Para compilar: javac AloMundo.java 5. Para executar: java AloMundo
B)) outro exemplo: public class PrimeiroPrograma { public static void main(String[] args) { System.out.println("Ola"); } void primeiroMetodo() { System.out.println("Executando o primeiro metodo"); } void segundoMetodo() { System.out.println("Executando o segundo metodo"); } }
17
Tipos de dados Java Tipo Boolean Char Definio Verdadeiro ou falso Dados de caracteres:16 bits: representando at 32.768 caracteres Inteiro de 8 bits Inteiro de 16 bits Inteiro de 32 bits Inteiro de 64 bits Dados de ponto flutuante: 32 bits Dados de ponto flutuante: 64 bits
18
Tipo int Ex.1: public class TestaInt { public static void main(String[] args) { int um = 10; int dois = 20; int soma = um+dois; System.out.println(A soma e + soma); } }
19
Ex. 2: public class Calculadora { int op1,op2,result; void inicializa(int valor1,int valor2) { op1 = valor1; op2 = valor2; } int soma() { result = op1+op2; return result; } int mult() { result = op1*op2; return result; }
20
Tipo byte
Ex.1: public class TestaByte { public static void main(String[] args) { byte um = 10; byte dois = 20; byte soma = (byte)(um+dois); System.out.println(A soma e + soma); } } OBS: Na linha: byte soma = (byte)(um+dois); estamos fazendo uma coerso de dados (cast), de forma que a varivel soma assuma que do tipo byte. O motivo: os computadores modernos fazem todas as operaes de nmeros inteiros com preciso de 32 ou 64 bits, e no com preciso de 8 bits. Com isso, todas as atribuies de valores a variveis do tipo byte devem ser convertidas para esse tipo.
22
Ex.2: public class Calculadora2 { byte op1,op2,result; void inicializa(byte valor1,byte valor2) { op1 = valor1; op2 = valor2; } byte soma() { result = (byte)(op1+op2); return result; } byte mult() { result = (byte)(op1*op2); return result; }
23
Tipo short Suporta nmeros de 16 bits. As mesmas regras aplicadas ao tipo byte se aplicam ao tipo short. As atribuies de valores a variveis do tipo short sempre devem ser convertidas para esse tipo de dado. Ex.: public class TestaShort { public static void main(String[] args) { short um = 10; short dois = 20; short soma = (short)(um+dois); System.out.println(A soma e + soma); } }
25
Tipo long Suporta nmeros de 64 bits. Deve ser utilizado o literal L para informar ao compilador que se trata de um tipo long, caso contrrio ele tentar atribuir o valor a um tipo int, como um valor do tipo long pode extrapolar os limites do tipo de dado int, um erro de compilao ser assinalado. Ex.: public class TestaLong { public static void main(String[] args) { long um = 44444444444L; long dois= 11111111111L; long soma = (um+dois); System.out.println(A soma e + soma); } }
26
Tipo float O tipo float armazena nmeros de ponto flutuante, em 32 bits. Devemos utilizar um literal float F. Em java, atribuies de valores de ponto flutuante assumem o tipo de dado double como padro. Ex.: public class TestaFloat { public static void main(String[] args) { float um = 6.5F; float dois= 3.5F; float soma = (um+dois); System.out.println(A soma e + soma); } }
27
Tipo double O tipo double armazena nmeros de ponto flutuante em 64 bits. O tipo double o tipo padro em java para atribuies de valores em ponto flutuante, desta forma as linhas: double um = 6.5; double dois= 3.5D; esto corretas. Como double o tipo padro, costuma-se omitir o sufixo D. Ex.: public class TestaDouble { public static void main(String[] args) { double um = 6.5; double dois= 3.5; double soma = (um+dois); System.out.println(A soma e + soma); } }
28
Suponha o cdigo: public class TestaDouble { public static void main(String[] args) { float um = 6.5F; float dois= 3.5F; double soma = (um+dois); System.out.println(A soma e + soma); } } O cdigo seria compilado corretamente? Sempre podemos atribuir uma varivel de menor capacidade a uma varivel de capacidade maior. Ento o cdigo acima seria executado sem nenhum problema.
29
Tipo char Armazena valores sem sinal em 16 bits. Podemos representar dados de caracteres. Os valores do tipo char devem ser expressos em aspas simples. Ex.: public class TestaChar { public static void main(String[] args) { char um = A; char dois= B; System.out.println(O valor de um e + um); } }
30
Tipo String Quando voc trabalha com string de caracteres em Java, voc utiliza as instncias da classe Java.lang.String. Quando Java encontra uma string literal em aspas cria automaticamente um objeto String. As declaraes podem ser implcitas ou explcitas: Ex.: String nome = Maria; // declarao implcita OU String nome = new String(Maria); // Criando explicitamente um objeto // utilizando o operador new.
31
Significa que Java trata uma string de caracteres literal como um objeto String, o que significa que podemos utilizar os mtodos da classe String, como: a) length() : Retorna o tamanho da string. int tam = Joo e Maria.length(); b) concat(Obj String) : Concatenando uma string a outra. String s1, s2; s1 = ABC; s2 = XYZ; s1= s1.concat(s2); // concatena o contedo de s2 a s1 // Pode tambm ser utilizado o operador + // String s3 = s1+ a +s2;
32
33
h) endsWith(Obj String) : Verificando prefixo. String URL = http://www.cefetpi.br/file.html System.out.println(URL.endsWith(html)); // Imprime true i) valueOf(tipo primitivo) : Transforma um tipo primitivo em objeto do tipo String. String s1 = String.valueOf(4); // transforma um int em uma string
35
Integer.parseInt(objString) Converte um objeto String para um tipo primitivo int. Ex.: int num = Integer.parseInt(100); Byte.parseByte(objString) Converte um objeto String para um tipo primitivo byte. Short.parseShort(objString) Converte um objeto String para um tipo primitivo short. Float.parseFloat(objString) Converte um objeto String para um tipo primitivo float. Double.parseDouble(objString) Converte um objeto String para um tipo primitivo double. Fazer:
36
Passo 1: Recebendo dois valores do tipo String passados como parmetro no mtodo main: public class LeiaValor { public static void main(String[] args){ String valor1 = args[0]; String valor2 = args[1]; System.out.println("O primeiro valor e igual a :"+args[0]+" O segundo valor e igual a: "+args[1]); System.out.println("A soma e igual a :"+args[0]+args[1]); } }
37
Passo 2: Transformando os dois valores do tipo String em valores do tipo inteiro: public class LeiaValor2 { public static void main(String[] args){ int valor1 = Integer.parseInt(args[0]); int valor2 = Integer.parseInt(args[1]); int soma = valor1 + valor2; System.out.println("O primeiro valor e igual a :"+args[0]+" O segundo valor e igual a: "+args[1]); System.out.println("A soma e igual a :"+soma); } }
38
OBS): 1) Para executar a classe LeiaValor e LeiaValor2 necessrio que sejam passados os parmetros args[0] e args[1] solicitados pelo mtodo main no momento da chamada da classe. Ex.:
args[0] args[1]
java LeiaValor 4 5
java LeiaValor2 3 4
39
Exercicio 01: 1) Fazer: Crie uma classe Gato e uma classe Cachorro. Inicialize a idade do Gato. Inicialize a idade do Cachorro. Uma ao efetuada pelo Gato imprimir na tela (Sou um gato, minha idade +idadeDoGato) Uma ao efetuada pelo Cachorro imprimir na tela (Sou um cachorro, minha idade +idadeDoCachorro) Crie um objeto Gato, um objeto Cachorro. O gato deve ter 2 anos e o cachorro 4 anos. Imprima na tela do computador a idade do gato e do cachorro.
40
2) Fazer: Transforme o modelo RegistroAluno numa classe. Escreva uma outra classe DemoRegAluno aonde voc crie dois objetos do tipo RegistroAluno: - Aluno01 nome = Marcos matricula = 1234 datadenascimento = 20/03/1985 - Aluno02 nome = Fabio matricula = 2234 datadenascimento = 13/01/1979 sendo que o primeiro aluno bolsista e o segundo no. Imprima os dados do aluno. Imprima o valor da mensalidade de cada aluno. modelo RegistroAcademico inicio dado nomeDoAluno, numerodeMatricula;
41
dado dataDeNascimento,Bolsista, anoDeMatrcula; operao inicializaRegistro(oNome,aMatrcula,aData,temBolsa,qualA no) inicio nomeDoAluno = oNome; nmeroDeMatrcula = aMatrcula; dataDeNascimento = aData; Bolsista = temBolsa; anoDeMatrcula= qualAno; fim operao calculaMensalidade() // calcula e retorna a mensalidade inicio mensalidade = 400; se (Bolsista) mensalidade = mensalidade /2; retorna mensalidade; fim
42
operao mostraRegistro() // mostra os dados do registro acadmico inicio imprime Nome do Aluno; imprime nomeDoAluno; imprime No. Da Matricula; imprime numeroDaMatricula; imprime Data de Nascimento; dataDeNascimento.mostraData(); se (Bolsista == verdadeiro) imprime O aluno bolsista seno imprime o aluno no bolsista; imprime Ano de Matrcula:; imprime anoDeMatrcula; fim fim
43
44
Incremento: i++ : Avalia o valo de i e depois o incrementa em uma unidade. Ex.: public class exemplo01a { public static void main ( String[] args) { int i = 5; int valor = i++; System.out.println(" Agora valor =" + valor); System.out.println("Aumentando o valor de i. Agora i =" + i); } } // valor = 5 e i = 6 ++i : Incrementa o valor de i em uma unidade e depois o avalia.
45
Ex.: public class exemplo01b { public static void main ( String[] args) { int i = 5; int valor = ++i; System.out.println(" Agora valor =" + valor); System.out.println("Aumentando o valor de i. Agora i =" + i); } } // valor = 6 e i = 6
46
Decremento: i-- : Avalia o valor de i e depois o decrementa em uma unidade. --i : Decrementa o valor de i em uma unidade e depois o avalia. Ex: public class exemplo02 { public static void main ( String[] args) { int i = 5; i++; System.out.println("Aumentando o valor de i. Agora i =" + i); i--; System.out.println("Diminuindo o valor de i. Agora i =" + i); }}
47
Operadores binrios Operador + * / % Adio Subtrao Multiplicao Diviso Resto da diviso inteira Descrio
48
49
Operadores relacionais Operador > < >= <= == != Descrio Maior que Menor que Maior que ou igual a Menor que ou igual a Igualdade Diferena
50
Ex.: public class exemplo04 { public static void main ( String[] args) { int a=5; int b=2; System.out.println("a > b = "+(a>b)); System.out.println("a < b = "+(a < b)); System.out.println("a >= b = "+(a >=b)); System.out.println("a <= b = "+(a <= b)); System.out.println("a = = b = "+(a = = b)); System.out.println("a != b = "+(a ! = b)); } }
51
Booleanos Operador && E condicional (AND) Descrio Retorna falso se pelo menos uma das expresses for falsa; Retorna falso se ambas forem falsas Retorna verdadeiro se ambas forem verdadeiras Retorna verdadeiro se pelo menos uma das expresses for verdadeira; Retorna verdadeiro se ambas forem verdadeiras Retorna falso se ambas forem falsas Retorna a negao de um valor booleano 52
|| OU condicional (OR)
! NEGAO
Ex.: public class exemplo05 { public static void main ( String[] args) { boolean a; boolean b; a = 5 > 2; b = 2 < 5; System.out.println("Ambas so verdadeiras"); System.out.println("a && b = "+(a && b)); System.out.println("a || b = "+(a || b)); } }
53
Operadores de atribuio
Operador = += Atribui um valor Atribui um valor, adicionando-o ao valor existente. Ex.: op1 += op2; // op1 = op1+op2; Atribui um valor, subtraindo-o do valor existente. Ex.: op1 -= op2; // op1 = op1-op2; Atribui um valor, multiplicando-o pelo valor existente. Ex.: Ex.: op1 *= op2; 54 // op1 = op1*op2; Descrio
-=
*=
Operador /=
Descrio Atribui um valor, dividindo o existente pelo valor atribudo. Ex.: op1 /= op2; // op1 = op1/op2; Atribui um valor, retornando o resto da diviso do valor existente pelo valor atribudo. Ex.: op1 %= op2; // op1 = op1%op2;
55
%=
Ex.: public class exemplo06 { public static void main ( String[] args) { int a; System.out.println("a = 4 e igual a: "+ (a = 4)); System.out.println("a +=2 e igual a:"+(a +=2)); a = 4; System.out.println("a -= 2 e igual a: "+(a -=2)); } }
56
Operador tercirio
Operador ?:
57
Supondo: a= 5 e b= 2 c = a > b?"a > b = verdadeiro":"a > b = falso" retorno: a>b = verdadeiro Ex.: public class exemplo07 { public static void main ( String[] args) { int a = 5; int b = 2; String c; c = a > b?"a > b = verdadeiro":"a > b = falso"; System.out.println(c); } }
58
59
Ex.: public class exemplo08a{ public static void main(String[] args) { String minhaString = "Teste"; if (minhaString == "TESTE") System.out.println("minhaString tem o valor 'Teste'"); else System.out.println("minhaString no tem o valor 'Teste'"); } // fim da classe main }// fim da classe exemplo08a
60
Ex.: public class exemplo08b{ public static void main(String[] args) { int a = 10; int b = -2; if (a <0) { a = a*-1; if (b<0) b = b*-1; System.out.println(O valor de a/b : +a/b); } else System.out.println(O valor de a/b : +a/b); } // fim da classe main }// fim da classe exemplo08b
61
- Qual o valor retornado no exemplo08b? ELSE/IF if (condio) { diretiva (s); } else if (condio) { diretivas (s); } else { diretiva(s); } Ex.: public class exemplo09a{ public static void main(String[] args) { int valor = 10; if (valor ==1) {
62
System.out.println(Valor e igual a 1!!); else if (valor = = 2) { System.out.prinln(Valor e igual a 2); } else { System.out.println(Valor no e igual a 1 nem igual a 2); } } // fim da classe main }// fim da classe exemplo09
63
SWITCH ... CASE switch (valor) { case 1:diretiva; case 2:diretiva; case 3:diretiva; ...... case n:diretiva; } Ex.: public class exemplo10 { public static void main (String[] args) { int a = -10; switch (a) { case 10:
65
System.out.println(O valor de a e +a); break; case -10: System.out.println(O valor de a e +a); break; case -8: System.out.println(O valor de a e +a); break; default: System.out.println(O valor de a e +a); break; }// fim do switch }}
66
OBS: a) Na estrutura switch, quando a primeira coincidncia encontrada, todas as coincidncias restantes tambm so consideradas vlidas, portanto temos que utilizar a instruo break para forar a sada da estrutura. b) O case padro (com rtulo default) pode aparecer em qualquer posio da estrutura. Entretando normalmente colocado por ltimo. c) A expresso deve ser avaliada somente para valores do tipo byte, short, int ou char.
67
FOR for (valor_de_inicio;condio;incremento/decremen to){ diretiva(s); } Ex.: public class exemplo11 { public static void main (String[] args) { for(int i =0; i<10;i++) { System.out.println(O valor de I +i); } }}
68
WHILE while (condio) { Diretiva(s); } Ex.: public class exemplo12 { public static void main (String[] args) { int i = 0; while (i < 10) { System.out.println(O valor de I e +i); i++; } }}
69
DO WHILE do { diretivas; } while (condio); Ex.: public class exemplo13 { public static void main (String[] args) { int i = 0; do { System.out.println(O valor de I +i); i++; } while (i < 10); }}
70