Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Objetivos
Para isso:
Pr-requisitos:
Agenda
Histria do Java
O Java uma linguagem baseada no C++ Teve incio em 1991 com a Sun Microsystem em um projeto de
codinome Green
Linguagem originalmente desenvolvida para eletrodomsticos, portanto, simples e portvel Projetada para ser uma linguagem com caractersticas modernas de programao Nasceu considerando a Internet como ambiente operacional (1995) Propsito geral Orientada a objetos e fortemente tipada Robusta: sem ponteiros e alocao direta de memria, tratamento de excees Concorrente
Principais caractersticas
o o o o
Plataforma Java
Funcionamento
Compilao do Fonte (.java) para bytecode da Java Virtual Machine
(JVM) Interpretao e execuo do bytecode (.class) Escreva uma vez, execute em qualquer lugar
Java podem funcionar em qualquer plataforma de hardware e software que possua uma verso da JVM
Programas:
javac: compila programas fonte e gera arquivos de classe no formato de bytecode java: interpreta aplicaes escritas em Java jdb: faz depurao da execuo de aplicaes e applets Java javap: desassemblador de bytecodes javadoc: gerador de documentao HTML a partir de programas fonte Java appletviewer : carregador de applets sem usar web browsers
http://openjdk.java.net/
http://www.oracle.com/technetwork/java/javase/downloads/index.html
Hello World
public class HelloWorldApp { public static void main(String[] args) { System.out.println("Ola Mundo"); //Exibe na tela } }
Configurao Windows
Configurao Linux
Compilao e Execuo
Compilando
o
javac Exemplo.java
Executando
o
java Exemplo
Comentrios
De nica linha // // Exibe na tela De uma ou mais linhas /* */ /* comentrio que vai se estendendo at fechar com */
De documentao
/** */ /** Indicam que o comentrio deve ser inserido em qualquer documentao gerada automaticamente, por exemplo pelo javadoc . */
Detalhes da linguagem
Em Java as instrues terminam com ponto-e-vrgula (;) Um bloco est sempre entre chaves - { e } e constitui uma instruo
composta. Dois blocos aninhados so mostrados no exemplo: o Instrues compostas para a declarao de classe { } o Instrues que abrangem a declarao main method { } fonte, sem qualquer restrio. Os espaos em branco incluem espaos, tabulaes e novas linhas. Usados para melhorar a aparncia visual e a legibilidade do cdigo-fonte minsculas. Exemplo: TRUE != true
Convenes Java
disponvel em: http://java.sun.com/docs/codeconv/ Alguns padres importantes: o Primeira letra do Nome de Classe em MAISCULO o Nome de mtodo e pacotes inicia com MINUSCULO o Variveis e atributos com nomes Inteiros o Cada troca de palavra com letra MAISCULA o ex.: clienteJuridico o Procurar no utilizar tipos primitivos de varireis
Variveis
Declarao Nome
tipo nome [ = expresso] exemplos: int a; char c = a; int d=3, e, f=5; pode ser feita em qualquer lugar do programa Identificador vlido em Java, diferente de palavras reservadas Vlido = qualquer seqncia descritiva de caracteres de letras, nmeros, caracteres de sublinhado e smbolo de cifro No pode comear com nmero Por conveno, variveis iniciam com letra minscula
Escopo
short: 16 bits, -32768 a 32767 int: 32 bits, -2147483648 a 2147483647 long: 64 bits, ... (200L - literal 200 long) Reais float: 32 bits (1f - literal 1 float; 1e+9f ) double: 64 bits (1d - literal 1 double; 47e-341d ) Caracter char (Unicode caracter): 16 bits (a - literal) Lgicos boolean (1 bit). Valores literais: { true, false }
Literais
Literais inteiros (int)
Decimais: 1 , 2, 45 Octais: 07, 010 Hexadecimais: 0xff (255) Literais de ponto flutuante decimais com frao ( double) 2.0 , 3.14159 , 314159e-05 , 314159E-05 Literais booleanos (boolean) true e false Literais de caracteres (char) Valores de 16 bits que podem ser manipulados como inteiros Par de apstrofos ( ) a Seqncia de escape ( \ ) \141 octal = \u0061 hex = a
Operador de Atribuio
A atribuio a operao que permite definir o valor de uma
varivel varivel = expressao; Exemplos de operaes de atribuio: boolean ehPrimo = true; i = 0; volume = base * (altura / 2); Em Java, vlido o encadeamento de atribuies: byte i, j, k; i = j = k = 0; equivale a: i = 0; j = 0; k = 0;
Operadores Aritmticos
Operador + * / % ++ -Significado adio subtrao multiplicao diviso resto da diviso inteira incremento unitrio decremento unitrio Exemplo x+y x-y x*y x/y x%y ++x ou y++ --x ou y--
Operadores Aritmticos
int x = 0, y; y = ++x; varivel x passar a valer 1, enquanto a varivel y receber o valor 1
int x = 0, y; y = x++; varivel x passar a valer 1, da mesma forma; mas a varivel y receber o valor 0
Operadores Relacionais
Operador == != > >= < <= Significado igual diferente maior que maior ou igual a menor que menor ou igual a Exemplo x == y x != y x>y x >= y x<y x <= y
Operadores Lgicos
Operador ! && || Significado negao (not) e lgico (and) ou lgico (or) Exemplo !a a && b a || b
Operadores Compactos
Exemplo
class ExemploOperadores { public static void main(String[] args) { String texto; texto = "ANDRE"; System.out.println("Valor: " + texto); int i = 0; i++; System.out.println("Valor System.out.println("Valor System.out.println("Valor System.out.println("Valor i: i: i: i: " " " " + + + + i); ++i); i++); i);
Expresses
exemplos:
Palavras Chave
Escopo de Variveis
public class ExemploEscopo { public static void main(String args[]) { // incio do Bloco 1 int i = 0; { // incio do Bloco 2 int j = 0; System.out.println(i); // dentro do escopo de i System.out.println(j); // dentro do escopo de j { // incio do Bloco 3 System.out.println(k); // ERRO, a varivel k ainda no foi declarada int k = 0; System.out.println(i); // dentro do escopo de i System.out.println(j); // dentro do escopo de j System.out.println(k); // dentro do escopo de k } // fim do Bloco 3 System.out.println(i); // dentro do escopo de i System.out.println(j); // dentro do escopo de j System.out.println(k); // ERRO, fora do escopo de k } // fim do Bloco 2 System.out.println(i); // dentro do escopo de i System.out.println(j); // ERRO, fora do escopo de j } // fim do Bloco 1 }
Escopo de Variveis
public class ExemploEscopo {
Escopo de Variveis
public class ExemploEscopo { public static void main(String args[]) { // incio do Bloco 1 int i = 0;
Escopo de Variveis
public class ExemploEscopo { public static void main(String args[]) { // incio do Bloco 1 int i = 0; { // incio do Bloco 2 int j = 0; System.out.println(i); // dentro do escopo de i
// dentro do escopo de i // dentro do escopo de j // ERRO, fora do escopo de k dentro do escopo de i ERRO, fora do escopo de j
Escopo de Variveis
public class ExemploEscopo { public static void main(String args[]) { // incio do Bloco 1 int i = 0; { // incio do Bloco 2 int j = 0; System.out.println(i); // dentro do escopo de i System.out.println(j); // dentro do escopo de j { // incio do Bloco 3 System.out.println(k);// ERRO varivel k no declarada int k = 0; System.out.println(i); // dentro do escopo de i System.out.println(j); // dentro do escopo de j System.out.println(k); // dentro do escopo de k } // fim do Bloco 3 System.out.println(i); // dentro do escopo de i System.out.println(j); // dentro do escopo de j System.out.println(k); // ERRO, fora do escopo de k } // fim do Bloco 2 System.out.println(i); // dentro do escopo de i System.out.println(j); // ERRO, fora do escopo de j } // fim do Bloco 1 }
Classes Wrapper
O package java.lang contm wrapper classes que correspondem a cada tipo primitivo Classes Wrapper encapsulam funes de manipulao para os
tipos primitivos
Classes Integer
A classe String
Representa qualquer seqncia de caracteres Operador:
Valores: exemplo de valor literal string String nome = Joo da Silva; nome.toUpperCase(); // mensagem para objeto nome. + (concatenao) nome = nome + sauro;
Observaes
No necessrio importar a classe String, pois a mesma faz parte do pacote java.lang
Exemplo Concatenao
class ExemploConcatenacao { public static void main(String[] args) { String s1 = "Ol "; String s2 = "Mundo!"; System.out.println( s1.concat( s2 ) ); System.out.println( s1 + s2 ); }
Converso de tipos
Tipos primitivos (cast) char a; int i = (int)a; int x = (int)10L; String em nmero String piStr = "3.14159"; Float pi1 = Float.valueOf(piStr); float pi2 = Float.parseFloat(piStr); String exemplo = 35; int quantidade1 = Integer.parseInt(exemplo); Integer quantidade2 = Integer.valueOf(exemplo); Integer quantidade3 = new Integer(exemplo);
Exemplo Converso
class ExemploConversao { public static void main(String[] args) { double a = 3.1415927; int i = 123; System.out.println("a = " + String.valueOf(a)); System.out.println("i = " + String.valueOf(i)); System.out.println("a = " + a); System.out.println("i = " + i); String atxt = "3.1415927"; String itxt = "123"; a = Double.valueOf(atxt).doubleValue(); i = Integer.valueOf(itxt).intValue(); System.out.println("a = " + a); System.out.println("i = " + i); i = Integer.parseInt(itxt); System.out.println("i = " + i); } }
A classe Math
classe com diversos mtodos especializados em realizar clculos matemticos para realizar esses clculos, so utilizados os mtodos da classe Math
que devem apresentar a seguinte sintaxe: Math.<nome do mtodo>(argumentos ou lista de argumentos) No necessrio importar a classe Math, pois a mesma faz parte do pacote java.lang
Mtodo ceil()
Tem como funo realizar o arredondamento de um nmero do tipo
double para o seu prximo inteiro (arredonda para cima) o Math.ceil(<valor do tipo double>)
class ExemploCeil { public static void main(String[] args) { double A=5.2,B=5.6,C=-5.8; System.out.println("Arredondando 5.2 = " + Math.ceil(A)); System.out.println("Arredondando 5.6 = " + Math.ceil(B)); System.out.println("Arredondando -5.8 = " + Math.ceil(C)); } }
Mtodo floor()
Tem como funo realizar o arredondamento de um nmero do tipo
double para o seu prximo inteiro (arredonda para baixo)
public static void main(String[] args) { double A=5.2,B=5.6,C=-5.8; System.out.println("Arredondando 5.2 = " + Math.floor(A)); System.out.println("Arredondando 5.6 = " + Math.floor(B)); System.out.println("Arredondando -5.8 = " + Math.floor(C)); } }
Mtodo max()
Utilizado para verificar o maior valor entre dois nmeros, que podem
ser do tipo double, float, int ou long
Math.max(<valor1>,<valor2>);
public static void main(String[] args) { double A=5.2, B=5.6, C=-5.8; int A=10 ,B=15; double C=-5.9,D=-4.5; System.out.println("O maior entre 10 e 15: " + Math.max(A,B)); System.out.println("O maior entre -5.9 e -4.5: " + Math.max(C,D)); System.out.println("O maior entre 10 e -5.9: " + Math.max(A,C)); } }
Mtodo min()
Utilizado para verificar o menor valor entre dois nmeros, que podem
ser do tipo double, float, int ou long o Math.max(<valor1>,<valor2>);
class ExemploMin { public static void main(String[] args) { double A=5.2, B=5.6, C=-5.8; int A=10 ,B=15; double C=-5.9,D=-4.5; System.out.println("O menor entre 10 e 15: " + Math.min(A,B)); System.out.println("O menor entre -5.9 e -4.5: " + Math.min(C,D)); System.out.println("O menor entre 10 e -5.9: " + Math.min(A,C)); } }
Mtodo sqrt()
Utilizado para calcular a raiz quadrada de um nmero A sua sintaxe a seguinte:
o
class ExemploSqrt { public static void main(String[] args) { double A=900,B=30.25; System.out.println("A raiz quadrada de 900: " + Math.sqrt(A)); System.out.println("A raiz quadrada de 30.25: " + Math.sqrt(B)); } }
Mtodo pow()
Utilizado para calcular o valor elevado de um nmero A sua sintaxe a seguinte:
o
class ExemploPow { public static void main(String[] args) { double base=5.5, potencia=2; System.out.println("5.5 elevado a 2: " + Math.pow(base,potencia)); System.out.println("25 elevado a 0.5: " + Math.pow(25,.5)); } }
Mtodo random()
Utilizado para gerar valores de forma aleatria Toda vez que o mtodo random chamado, ser sorteado um valor do
tipo double entre 0.0 e 1.0 (o valor 1 nunca sorteado) utilizar o operador de multiplicao flutuante para um nmero inteiro
Para simular o sorteio de nmeros entre outros intervalos preciso O conversor (int) tambm pode ser usado para truncar a parte do ponto
class ExemploRandom { public static void main(String[] args) { int num = (int) (Math.random() * 99); System.out.print(num+" "); } }
Scanner
a entrada do teclado representada pelo objeto System.in parte da biblioteca java.util, que deve ser importada no
programa para ser usada
Principais mtodos
nextLine() l todas as entradas at que o fim-de-linha seja encontrado next() l o prximo token de entrada e o retorna como um string (tabs, espao em branco, finalizam as entradas)
nextInt() l uma entrada do tipo Inteiro nextDouble() l uma entrada do tipo double
Exemplo Scanner
import java.util.Scanner; class ExemploScanner { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("Nota do 1o.: "); float nota1 = sc.nextFloat(); System.out.println("Nota do 2o.: "); float nota2 = sc.nextFloat(); float media = (nota1 + nota2) / 2; System.out.println("A mdia : "+media); } }
NumberFormat e DecimalFormat
NumberFormat
porcentagens padro
getCurrencyInstance() usado para formatar moedas getIntegerInstance() usado para formatar nmeros ignorando
casas decimais
Exemplo NumberFormat
import java.text.*; class ExemploNumberFormat { public static void main(String[] args) { System.out.println( NumberFormat.getCurrencyInstance(). format(12345678.90)); NumberFormat z = NumberFormat.getCurrencyInstance(); System.out.println(z.format(9.50)); } }
Classe DecimalFormat
Caracterer # Definio Local reservado para um dgito. Ignorado se o nmero que est sendo formatado no contm um dgito para colocar nessa posio Local reservado para um dgito. Se o nmero que est sendo formatado no contm um dgito para colocar nessa posio, um zero ser colocado separador decimal separador de agrupamento Indicador de um padro porcentagem. Se estiver presente, o formatador ir dividir o nmero por 100 e mostrar o smbolo de porcentagem Separa padres Formatarar positivos e negativos
. , %
Exemplo DecimalFormat
import java.text.*; class ExemploDecimalFormat { public static void main(String[] args) { double valor = 2000.0; double vezes = 3.0; double prestacao = valor/vezes; DecimalFormat df = new DecimalFormat("0.##"); String dx = df.format(prestacao); System.out.print(dx); } }
Exerccios listagem 1
Classe para armazenar a data e a hora Internamente ela tratada como um long que o
numero de milissegundos que se passou desde 01/01/1970 trabalharem direito com internacionalizao
Classe Date
Data e hora com base em milisegundos: Todos os outros construtores so deprecated boolean after(date) e boolean before(date) so usados para
comparao entre datas
Classe abstrata, mais avanada que o Date; Deve ser instanciada usando o mtodo getInstance(); o Calendar cal = Calendar.getInstance();
Pode ser alimentada de duas maneiras: o cal.set(ano, mes, dia);
o cal.setTime(new Date());
Exemplo
import java.util.Calendar; import java.util.Date; class ExemploDecimalFormat { public static void main(String[] args) { Calendar c = Calendar.getInstance(); c.setTime(new Date()); c.add(Calendar.DAY_OF_YEAR, 5);// adiciona 5 dias c.add(Calendar.MONTH, 1);// adiciona 1 ms c.add(Calendar.YEAR, 2);// adciona 2 anos c.add(Calendar.YEAR, -1);// diminui 1 anos } }
Classe DateFormat
Classe utilizada para formatar a sada de uma data Pode ser utilizada internacionalizao com Locale para formatar a sada da data
Classe DateFormat
Classe SimpleDateFormat
Formatao personalizada de data Classe que extende um DateFormat Recebe como parmetro o formato a ser exibido setLenient(false) usado para validao do contedo
Classe SimpleDateFormat
Classe SimpleDateFormat
Classe SimpleDateFormat
SimpleDateFormat df = new SimpleDateFormat("dd/MM/yyyy"); try { Date d = df.parse("25/03/2010"); System.out.println( df.format(d)); } catch (ParseException ex) { ex.printStackTrace(); }
Estruturas de Controle
Estrutura if
Estrutura if - else
Exemplo
import java.util.Scanner; public class ExemploMedia { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("Fornea a nota do 1o. Bimestre: "); float nota1 = sc.nextFloat(); System.out.println("Fornea a nota do 2o. Bimestre: "); float nota2 = sc.nextFloat(); float media = (nota1 + nota2) / 2; System.out.println("O aluno foi: "); if (media >= 7.0) System.out.println(media + ", aprovado."); else if (media < 4.0) System.out.println(media + ", reprovado."); else System.out.println(media + ", em exame.");
Estrutura switch
Exemplo
import java.util.Scanner; public class ExemploSwitch { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("Digite uma opo"); System.out.println("A - alterao"); System.out.println("I - incluso"); System.out.println("E - excluso"); char opcao; opcao = sc.next().charAt(0); switch (opcao) { case 'a': case 'A': System.out.println("Alterao"); break; case 'i': case 'I': System.out.println("Incluso"); break; case 'e': case 'E': System.out.println("Excluso"); break; default: System.out.println("Opo invlida !"); } } }
Exerccios listagem 2
Estrutura for
Exemplo
import java.util.Scanner; public class ExemploFor { public static void main(String[] args) { System.out.println("Informe um numero inteiro:"); Scanner sc = new Scanner("System.ini"); int n = sc.nextInt(); for (int i = 1; i <= 10; i++) { System.out.println(i + " * " + n + " = " + (i * n)); }
Exemplo Pares
class ExemploPares { public static void main(String[] args) { for (int i=0; i<100; i++) { if ((i % 2) == 0) { System.out.println(i); } } } }
Estrutura while
Exemplo
public class ExemploWhile { public static void main(String[] args) { int cont = 1; int soma = 0; while (cont <= 10) { soma += cont; cont ++; } System.out.println("A soma :" + soma); } }
Estrutura do while
Exemplo
public class ExemploDoWhile { public static void main(String[] args) { int cont = 1; int soma = 0; do { soma += cont; cont++; } while (cont <= 10); System.out.println("A soma :" + soma); }
Garbage Collector
Quando um objeto deixa de possuir referncias vlidas para ele, ele
no pode ser mais acessado pelo programa
o objeto intil, e portanto chamado de lixo (garbage) Java realiza periodicamente a coleta de lixo automtica, retornando
uma memria de objeto para o sistema para uso futuro coleta de lixo
Exerccios listagem 3
Referncias
Core Java 2 - Volume 1 - Fundamentos, GARY CORNELL & CAY
S. HORSTMANN, Makron Books, 2000 Prentice-Hall, 2005
Java: Como Programar. HARVEY M. DEITEL & PAUL J. DEITEL, Use a Cabea! Java. Kathy Sierra & Bert Bates, Alta Books, 2007
Crditos
Esse material foi elaborado por: Andr Luiz Forchesatto
o skype: andre_unoesc o e-mail: andre.forchesatto@unoesc.edu.br o twitter: @forchesatto o skype: cristiano.agosti o e-mail: cristiano.agosti@unoesc.edu.br o twitter: @agosti
Esse material pode ser publicamente distribudo, desde que seu contedo no seja alterado e que seus crditos sejam mantidos. Ele no pode ser usado para ministrar qualquer outro curso, porm pode ser utilizado como referncia e material de apoio.
Cristiano Agosti