Escolar Documentos
Profissional Documentos
Cultura Documentos
Java Basico Modulo 05
Java Basico Modulo 05
www.t2ti.com
1
O Curso Java Starter foi projetado com o objetivo de ajudar quelas pessoas que tm uma base de lgica de programao e desejam entrar no mercado de trabalho sabendo Java, A estrutura do curso formada por mdulos em PDF e por mini-cursos em vdeo. O aluno deve baixar esse material e estud-lo. Deve realizar os exerccios propostos. Todas as dvidas devem ser enviadas para a lista de discusso que est disponvel para inscrio na pgina do Curso Java Starter no site www.t2ti.com. As dvidas sero respondidas pelos instrutores Albert Eije, Cludio de Barros e Miguel Kojiio, alm dos demais participantes da lista. Nosso objetivo que aps o estudo do Curso Java Starter o aluno no tenha dificuldades para acompanhar um curso avanado onde poder aprender a desenvolver aplicativos para Web, utilizando tecnologias como Servlets e JSP e frameworks como Struts e JSF, alm do desenvolvimento para dispositivos mveis. Albert Eije trabalha com informtica desde 1993. Durante esse perodo j trabalhou com vrias linguagens de programao: Clipper, PHP, Delphi, C, Java, etc. Atualmente mantm o site www.alberteije.com. Cludio de Barros Tecnlogo em Processamento de Dados. Miguel Kojiio bacharel em Sistemas de Informao, profissional certificado Java (SCJP 1.5). O curso Java Starter surgiu da idia dos trs amigos que trabalham juntos em uma instituio financeira de grande porte.
www.t2ti.com
2
Mdulo
05
Definio de Pacotes
O que so pacotes em Java? Um pacote (package) em Java um diretrio em que est armazenada uma ou mais classes. Os pacotes costumam agrupar classes de mesmas afinidades, por exemplo, observe a classe Aluno, ela est no pacote javainiciante e deve ser declarada da seguinte maneira:
package javainiciante; public class Aluno { //Estrutura da classe }
A palavra reservada package define em qual pacote se encontra a classe. Para utilizar classes de um pacote, usada a palavra reservada import do seguinte modo:
import nome-do-pacote.nome-da-classe
Ex2.: import java.util.Date; --> indica que ser usada a classe Date do pacote java.util que est no diretrio \java\util. Ex3.: import java.util.*; --> Neste exemplo, est sendo usado o smbolo * ao
www.t2ti.com
3
O pacote java.lang
Por padro, o pacote java.lang importado automaticamente pelo Java. o nico pacote que possui esta caracterstica. Isso explica o fato de, nos exemplos que utilizamos nos mdulos anteriores, no precisarmos utilizar imports em nossas classes. As principais classes que fazem parte deste pacote so: Boolean, Byte, Character, Double, Float, Integer, Long, Math, Number, Object, Short, String, System, Thread, etc.
java.lang.String
String uma classe em Java. Instncias de uma String correspondem unio de um conjunto de caracteres. Essas strings podem ser manipuladas de diversas maneiras. Apresentaremos aqui, alguns mtodos desta classe:
Mtodo lenght()
O mtodo length() utilizado para retornar o tamanho de uma determinada string, incluindo tambm os espaos em branco. Este mtodo sempre retorna um valor do tipo int. Tem a seguinte sintaxe: nome-da-string.length()
www.t2ti.com
4
Mtodo charAt()
O mtodo charAt() utilizado para retornar um caractere de uma determinada string de acordo com um ndice especificado entre parnteses (parmetro), sendo que o primeiro caractere tem o ndice 0, o segundo tem o ndice 1 e assim por diante. Tem a seguinte sintaxe: nome-da-string.charAt(indice) Observe que no exemplo a seguir, o ndice informado no parmetro 6, retornando o 7 caractere da string.
class JavaIniciante { public static void main (String args[]){ String s = "Java Iniciante"; System.out.println("Caracter da posio 7: " + s.charAt(6)); } }
www.t2ti.com
5
Mtodo substring()
O mtodo substring() utilizado para retornar uma cpia de caracteres de uma string a partir de dois ndices inteiros especificados. Tem a seguinte sintaxe: nome-da-string.substring(indice1, indice2) O primeiro parmetro especifica o ndice a partir do qual se inicia a cpia dos caracteres. O segundo parmetro opcional (se no for inserido ser considerado como o comprimento mximo da string) e especifica o ndice final em que termina a cpia dos caracteres, porm o ndice final deve especificar um ndice alm do ltimo caractere. Caso queira uma cpia do 1 ao 5 caracteres, o ndice inicial deve ser 0 e o ndice final 6. Veja no exemplo a seguir:
www.t2ti.com
6
Mtodo trim()
O mtodo trim() tem por objetivo remover todos os espaos em branco que aparecem no incio e no final de uma determinada string. Observe que sero removidos apenas os espaos do incio e do fim da string no sero removidos os espaos entre as palavras. Tem a seguinte sintaxe: nome-da-string.trim()
class JavaIniciante { public static void main (String args[]){ String s = " Java Iniciante "; System.out.println("Com espaos: *" + s + "*"); System.out.println("Sem espaos: *" + s.trim() + "*"); } }
Mtodo replace()
O mtodo replace() utilizado para substituio de caracteres individuais de
www.t2ti.com
7
Mtodo String.valueOf()
O mtodo String.valueOf() usado para converter diversos tipos de dados em strings. Para isso, esse mtodo aceita vrios tipos de argumento e tranforma-os em strings. Tem a seguinte sintaxe: String.valueOf(nome-da-varivel)
class JavaIniciante { public static void main (String args[]){ int a = 1; double b = 1.2; String s = String.valueOf(a) + " " + String.valueOf(b); System.out.println("Contedo de s: " + s); } }
www.t2ti.com
8
Mtodo split()
O mtodo split() usado para dividir uma string em um array de strings. passado como parmetro qual o caractere ou caracteres que delimitam a diviso. Tem a seguinte sintaxe: nome-da-string.split(caractere);
class JavaIniciante { public static void main (String args[]){ String s = "Curso Java Iniciante"; String[] palavras = s.split(" "); for (int i = 0; i < palavras.length; i++){ System.out.println("Palavra " + (i + 1) + ": " + palavras[i]); } System.out.println("****************************************"); palavras = s.split("cia"); for (int i = 0; i < palavras.length; i++){ System.out.println("Palavra " + (i + 1) + ": " + palavras[i]); } }
Comparando Strings
Veja o exemplo seguinte:
www.t2ti.com
9
O que h de errado neste resultado? Declaramos duas strings e a instanciamos com o mesmo contedo, e ao compar-las temos como resultado que elas so diferentes. Quando quisermos comparar duas strings, no devemos utilizar == e sim o mtodo equals() que possui a seguinte sintaxe: string1.equals(string2) Agora vamos utilizar este mtodo e ver o que acontece:
class JavaIniciante { public static void main (String args[]){ String s1 = new String("Curso Java Iniciante"); String s2 = new String("Curso Java Iniciante"); if (s1.equals(s2)){ System.out.println("As duas strings so iguais!"); } else{ System.out.println("As duas strings so diferentes!"); } }
www.t2ti.com
10
java.lang.Math
A classe java.lang.Math possui vrios mtodos que permitem efetuar diversos tipos de clculos matemticos. Para utilizar os mtodos desta classe basta chamar o mtodo precedido do nome Math. Ela no pode ser estendida ( uma classe final) e possui o construtor private (no pode ser instanciada);
www.t2ti.com
11
Execute a aplicao vrias vezes e perceba que o resultado ser sempre diferente. Agora, se quisermos gerar nmeros aleatrios inteiros? Por exemplo, minha aplicao precisa de nmeros entre 0 e 99. O exemplo seguinte mostra como implementar isto.
class JavaIniciante { public static void main (String args[]){ System.out.println("Nmero aleatrio: " + (int) (Math.random() * 100)); System.out.println("Nmero aleatrio: " + (int) (Math.random() * 100)); System.out.println("Nmero aleatrio: " + (int) (Math.random() * 100)); }
www.t2ti.com
12
Classes Wrapper
Classes wrapper so classes usadas para embutir tipos primitivos para que possam ser utilizados como objetos. Cada tipo primitivo tem a sua classe wrapper correspondente. As classes wrapper so: Character, Byte, Short, Integer, Long, Float, Double e Boolean. Cada classe wrapper permite manipular tipos primitivos como objetos da classe Object. Desta forma, valores do tipo primitivo podem ser processados de forma polimrfica (assunto ser abordado no mdulo 09) se forem mantidos como objetos das classes wrapper. Como fazer para obter um int que est armazenado em sua classe wrapper? Como fazer para obter um double que est armazenado em sua classe wrapper? O exemplo a seguir mostra a resposta para estas duas perguntas:
class JavaIniciante { public static void main (String args[]){ Integer a = new Integer(2); int b = a.intValue(); Double c = new Double(4.5); double d = c.doubleValue(); System.out.println("Valor de b: " + b); System.out.println("Valor de d: " + d); } }
O pacote java.lang possui vrias classes. uma boa prtica consultar a API (esse assunto ser abordado no prximo mdulo) deste pacote para aprender mais sobre o mesmo.
www.t2ti.com
13
java.util.Calendar
Com a classe Calendar podemos realizar vrios tipos de operaes envolvendo datas, como ano, ms, dia, hora, minuto, etc. Esta classe tem o tempo representado em milissegundos. Para obter uma instncia desta classe, basta chamar o mtodo esttico getInstance(). Quando este mtodo chamado, obtido um Calendar com data e hora atuais. Depois de obtido este objeto, utilizamos o mtodo get() para buscar o ano, dia, etc. Primeiramente, vamos utilizar o mtodo getTime() para mostrar a data e hora atuais.
import java.util.Calendar; //necessrio este import para utilizao da classe class JavaIniciante { public static void main (String args[]){ Calendar data = Calendar.getInstance(); System.out.println(data.getTime()); } }
www.t2ti.com
14
O mtodo get() da classe Calendar sempre retorna um valor do tipo int. Observe que para o ms, incrementamos o valor obtido em 1. A constante Calendar.MONTH que representa o ms inicia em 0(zero), ou seja, janeiro = 0, fevereiro = 1 e assim por diante. Agora iremos atribuir novos valores para os campos utilizando o mtodo set(). Este mtodo necessita de dois argumentos: o primeiro define qual campo vamos alterar e o segundo o novo valor do campo.
www.t2ti.com
15
No exemplo anterior, definimos a data para 18/11/2005, 14:18:45. E se quisermos somar 20 dias a esta data? Para isto, utilizamos o mtodo add(). Da mesma forma que o set(), informamos dois argumentos: o primeiro define qual campo vamos somar e o segundo quanto iremos somar.
import java.util.Calendar; class JavaIniciante { public static void main (String args[]){ Calendar data = Calendar.getInstance(); data.set(Calendar.DAY_OF_MONTH, 18); data.set(Calendar.MONTH, 10); data.set(Calendar.YEAR, 2005); data.set(Calendar.HOUR_OF_DAY, 14); data.set(Calendar.MINUTE, 18); data.set(Calendar.SECOND, 45); data.add(Calendar.DAY_OF_MONTH, 20); System.out.println("Dia do ms: " + data.get(Calendar.DAY_OF_MONTH)); System.out.println("Ms : " + data.get(Calendar.MONTH)); System.out.println("Ano : " + data.get(Calendar.YEAR)); System.out.println("Hora : " + data.get(Calendar.HOUR_OF_DAY)); System.out.println("Minuto : " + data.get(Calendar.MINUTE)); System.out.println("Segundo : " + data.get(Calendar.SECOND));
www.t2ti.com
16
Como resultado, obtivemos a data 8/12/2005, 14:18:45. Lembre-se que o campo ms comea com 0(zero). Outros mtodos muito importantes da classe java.util.Calendar so: before() e after(). before() nos permite saber se uma determinada data anterior a outra data. after() o inverso, retorna se uma data posterior a outra data. Tem a seguinte sintaxe: data1.before(data2) data1.after(data2) before() retorna verdadeiro, se e somente se data1 < data2. after() retorna verdadeiro, se e somente se data1 > data2.
import java.util.Calendar; class JavaIniciante { public static void main (String args[]){ Calendar data1 = Calendar.getInstance(); data1.set(Calendar.DAY_OF_MONTH, 18); data1.set(Calendar.MONTH, 10); data1.set(Calendar.YEAR, 2005); Calendar data2 = Calendar.getInstance(); data2.set(Calendar.DAY_OF_MONTH, 12); data2.set(Calendar.MONTH, 8); data2.set(Calendar.YEAR, 2007); if (data1.before(data2)){ System.out.println("data1 anterior a data2"); } else{ System.out.println("data1 no anterior a data2"); } } }
www.t2ti.com
17
Agora vamos utilizar o mtodo getTimeInMillis(), para calcularmos o intervalo de dias entre as datas utilizadas no exemplo anterior. O clculo feito pegando a diferena entra a data2 de data1 e dividindo-se pelo valor de milissegundos em um dia.
import java.util.Calendar; class JavaIniciante { public static void main (String args[]){ Calendar data1 = Calendar.getInstance(); data1.set(Calendar.DAY_OF_MONTH, 18); data1.set(Calendar.MONTH, 10); data1.set(Calendar.YEAR, 2005); Calendar data2 = Calendar.getInstance(); data2.set(Calendar.DAY_OF_MONTH, 12); data2.set(Calendar.MONTH, 8); data2.set(Calendar.YEAR, 2007); long d1 = data1.getTimeInMillis(); long d2 = data2.getTimeInMillis(); System.out.println("N dias: " + (int)((d2 - d1)/ (24*60*60*1000))); }
Agora voc deve tentar resolver a lista de exerccios abaixo. Qualquer dificuldade envie para a lista de discusso:
Exerccios
Aprenda com quem tambm est aprendendo, veja e compartilhe as suas respostas no nosso Frum: Exerccios Mdulo 05 Pacotes (java.lang java.util)
www.t2ti.com
18
01 Elabore um programa em Java que possua um mtodo que recebe uma String como parmetro e caso esta String tenha menos que 8 caracteres, emita uma mensagem de erro. 02 Aproveitando a classe implementada no exerccio anterior, defina tambm que a String deve comear com a letra A. 03 Elabore um programa em Java que possua um mtodo que recebe uma String como parmetro e mostra ao usurio os quatro primeiros caracteres em Maisculas. 04 Utilizando a classe elaborada no exerccio anterior, verifique se a String contem nmeros, emitindo uma mensagem ao usurio. 05 Elabore um programa em Java que gere dois nmeros aleatriamente (entre 0 e 1000) e verifique qual dos nmeros gerados maior. 06 Elabore um programa em Java que mostre ao usurio a quantidade de anos, meses, dias, horas, minutos e segundos que faltam para o ano de 2014. 07 Elabore um programa em Java que possua um mtodo que receba como parmetro duas datas, e mostre a maior data. Caso as datas sejam iguais, emitir mensagem informando o usurio. 08 Aproveitando o programa do exerccio anterior, emita uma mensagem ao usurio caso a diferena entre as datas seja maior que 20 dias.
www.t2ti.com
19