Você está na página 1de 13

Java Exceo : uma condicional anormal que surge durante a execuo do programa ( Run Time Error) Throws : Se um mtodo

o capaz de gerar um erro que no tratado ele deve especificar este comportamento atravs do Throws Ex :
digamos que vc tenha um jtextfield, e que vc so quer que o cara digite numeros..... ai quando ele digita, vc tem um metodo que verifica se tem alguma letra....

1. public void verifica() { 2. //aqui vc achou uma letra, ai voce dispara uma excessao com o THROW 3. throw new SuaExcessao(); 4. }

Voc usa para lanar uma excesso, imagine que voc6e tenha uma classe Cliente com um mtodo setCPF, a validao do cpf feita na classe cliente, no caso do cpf ser invlido, voc lana uma excesso obrigando o cara que for usar o mtodo setCPF a trat-la. Ex:

1. public void setCPF(String cpf) throws Exception { 2. // Verifica se o cpf valido 3. // Se no for lana a excesso 4. throw new Exception("CPF invalido!"); 5. }

Considere a classe: public class Calc { public int div(int a, int b) { return a/b; } O mtodo div, se for chamado com b igual zero, dar um erro. Esse erro pode sinalizado atravs de uma exceo Vamos, ento, modelar uma exceo que indica uma tentativa de diviso por zero: public class DivByZero extends Exception { public String toString() { return "Division by zero.";

} } Agora vamos fazer com que o mtodo div lance a exceo que criamos: public class Calc { public int div(int a, int b) throws DivByZero { if (b == 0) throw new DivByZero(); return a/b; } Podemos, agora, utilizar o mtodo div e tratar a exceo, caso esta ocorra: ... Calc calc = new Calc(); try { int div = calc.div(x, y); System.out.println(div); } catch (DivByZero e) { System.out.println(e); } } Multi-tasking Dois Tipos : Processo Thread

MULTI TASK baseada em processo permite que vrios programas executem ao mesmo tempo. Ex.: processo de texto e editor grfico. MULTI TASK baseada em thread um nico programa executando vrias tarefas simultneas. Ex.: editor de texto executando corretor ortogrfico. Compartilham o mesmo espao de memria. Compartilham o mesmo processo.

Compartilham entre threads de baixo custo. Mudana de contexto de baixo custo.

Razes para usar MULTI THREADING Permite escrever programas eficientes para maximizar o uso do CPU. Permite uso do tempo vago da cpu. o Network. o I/O o Usurio.

Exe :
public class Thread_Demo { public static void main(String Args[]){ Thread t = Thread.currentThread(); System.out.println("Thread"+t); t.setName("minha thread"); System.out.println(t); try { for (int n=5; n>0; n--) { System.out.println(n); Thread.sleep(1000); } } catch(InterruptedException e) { System.out.println("thread interrompido"); } } }

Collections, qual usar? A interface Collection possui vrias implementaes, como ArrayList, LinkedList, TreeSet e outras. Com tantas variaes, algumas vezes voc no sabe qual usar, isto depende de seu objetivo. Tentarei explicar algumas diferenas entre ArrayList, LinkedList e TreeSet. ArrayList A Collection ArrayList permite armazenar objetos e valores nulos, mas seu acesso desordenado, o primeiro objeto inserido pode ser o ltimo retornado. LinkedList Esta implementao de Collection parecida com o ArrayList, mas a diferena est no acesso aos objetos armazenados, onde cada objeto retornado na ordem de insero. TreeSet Se voc quer recuperar os objetos de sua Collection em uma ordem especfica, esta Collection pode fazer o trabalho! Inserir objetos em um Treeset igual s classes anteriores, mas seu retorno depende da interface Comparable implementada no valores.

Ele ordena seus objetos usando o resultado do mtodo compareTo, herdado da interface Comparable.

Como declarar e usar ArrayList em Java


Importe: import java.util.ArrayList; Por ser um tipo diferente, sua sintaxe um pouco diferente do que voc j viu at ento: ArrayList< Qualquer_Tipo > nomeDoArrayList = new ArrayList< Qualquer_Tipo >(); No exemplo a seguir, vamos usar um ArrayList de String para trabalhar com o nome de vrias Bandas de msica: ArrayList<String> bandas = new ArrayList<String> ();

Exemplo de uso do ArrayList


Aps declarar a ArrayList 'bandas' que armazenar Strings, vamos adicionar alguns nomes. Primeiro adicionamos a banda "Rush": bandas.add("Rush"); Existe um mtodo do ArrayList chamado 'toArray()' que coloca todos os elementos de um ArrayList em um Array. Ou seja: bandas.toArray() um Array! Porm, j vimos que existe um mtodo 'toString' da classe Arrays que retorna uma String com os elementos de um Array. Vamos usar esse mtodo parar exibir todos os elementos do ArrayList, que transformamos em Array atravs do mtodo 'toArray()': Arrays.toString( bandas.toArray() ); Vamos adicionar a segunda banda, "Beatles" e imprimir, usando o mesmo mtodo. Note que quando usamos 'add', sempre adicionamos o elemento pro fim da ArrayList. Confirme isso agora, vendo que a banda "Iron Maiden" ficar depois de "Beatles". Vamos pegar o primeiro elemento, o elemento '0', atravs do mtodo 'get': bandas.get(0); Note que a banda "Rush", pois ela foi a primeira a ser adicionada. Vamos adicionar o "Tiririca" na posio do "Rush", ou seja, na posio '0': bandas.add(0,"Tiririca"); ou bandas.add( bandas.indexOf("Rush"), "Tiririca"); Pois o mtodo 'indexOf' retorna o ndice em que ocorre "Rush". Para saber o tamanho que tem seu ArrayList, basta usar o mtodo 'size()': bandas.size(); Feito isso, rapidamente remova o "Tiririca", pois algum pode ver. Para tal, use o mtodo 'remove': bandas.remove("Tiririca");

Ok. No quer mais brincar de ArrayList? Remova tudo bandas.clear();

import java.util.ArrayList; import java.util.Arrays; public class arrayLists{ public static void main(String[] args){ ArrayList<String> bandas = new ArrayList<String> (); bandas.add("Rush"); System.out.print( "Adicionando a banda Rush: " ); System.out.println( Arrays.toString( bandas.toArray() ) ); bandas.add("Beatles"); System.out.print( "Adicionando a banda Beatles: " ); System.out.println( Arrays.toString( bandas.toArray() ) ); bandas.add("Iron Maiden"); System.out.print( "Adicionando a banda Iron Maiden: " ); System.out.println( Arrays.toString( bandas.toArray() ) ); System.out.print( "Quem est na ndice 0: " ); System.out.println( bandas.get(0) ); System.out.print( "Adicionando Tiririca onde estava o Rush: " ); bandas.add( bandas.indexOf("Rush"), "Tiririca"); System.out.println( Arrays.toString( bandas.toArray() ) ); System.out.print( "Nmero de elementos na lista: " ); System.out.println( bandas.size() ); System.out.print( "Removendo o Tiririca: " ); bandas.remove("Tiririca"); System.out.println( Arrays.toString( bandas.toArray() ) ); System.out.print( "Removendo tudo: " ); bandas.clear(); System.out.println( Arrays.toString( bandas.toArray() ) ); } } Sada Adicionando a banda Rush: [Rush] Adicionando a banda Beatles: [Rush, Beatles] Adicionando a banda Iron Maiden: [Rush, Beatles, Iron Maiden] Quem est na ndice 0: Rush Adicionando Tiririca onde estava o Rush: [Tiririca, Rush, Beatles, Iron Maiden] Nmero de elementos na lista: 4 Removendo o Tiririca: [Rush, Beatles, Iron Maiden] Removendo tudo: []

String
Strings so utilizadas frequentemente em vrias linguagens de programao, no apenas Java. Embora Strings sejam uma sequncia de caracteres em Java, e no um array de caracteres. Em Java, o importante entender que string no um tipo de dado, mas sim uma classe. E suas variveis so, na verdade, objetos dessa classe. Em sntese, tanto um array de caracteres como uma string se apresentam da mesma forma. Ento, qual a vantagem de se usar uma classe e no um array de tipo primitivo? A resposta se baseia exatamente no uso da orientao a objetos e no fato de que existem muitos mtodos que podemos utilizar em um objeto instanciado da classe String, mesmo sendo os objetos desta classe imutveis, ou seja, uma vez instanciados no podemos mudar o que est guardado dentro do objeto String. Dentre as possibilidades oferecidas pela classe String podemos destacar algumas como:

Concatenao; Tamanho da String; Converter para maisuculas ou minsculas; Fazer comparaes que incluem verificaes no incio e no fim; Extrair um caracter especfico da string; Achar um ndice da string, inclusive recursivamente (de trs para frente); Substituir uma parte da string ou ela completamente; Verificar se uma string contm outra; Dividir uma string em array ou vetor; Obter uma poro da string inteira, o que chamamos de substring.

Objetos Strings podem ser instanciadas usando um array de caracteres ou bytes com o operador new. Ou por meio de uma string literal. String literal qualquer sequncia de caracteres que estiver entre aspas (").

01.public class ExemploCriarString { 02.public static void main(String[] args) { 03.char[] charArray = { 'T', 'I', ' ', 'E', 'x', 'p', 'e', 'r', 't'}; 04./* construindo uma string a partir de um array de char */ 05.String string1 = new String(charArray); 06./* construindo uma string a partir de uma string literal */ 07.String string2 = "www.tiexpert.net"; 08. 09.System.out.println(string1); 10.System.out.println(string2); 11.} 12.}

Concatenao

Concatenao nada mais do que juntar strings numa s. Isto pode ser feito de duas formas: uma usando o mtodo concat() da classe String ou usando o sinal de adio (+) como operador de concatenao. O mtodo concat() retorna uma nova string formada da juno da string principal com a string indicada como parmetro. De uma forma mais simples, podemos usar o + para juntar vrias strings ao mesmo tempo. Para mais detalhes, veja o artigo principal sobre concatenao.

Tamanho da string - length()


A classe String possui um mtodo acessor que retorna o tamanho da String. Esse mtodo length().

1.public class TamanhoString { 2.public static void main(String[] args) { 3.String str = "TI Expert"; 4.System.out.println(str + " possui " + str.length() + " caracteres."); 5.} 6.}

Letras Maisculas e Minsculas


Podemos facilmente deixar todas as letras de uma sequncia de caracteres maiscula ou minscula usando os mtodos toUpperCase() e toLowerCase() respectivamente.

1.public class StringMaiusculoMinusculo { 2.public static void main(String[] args) { 3.String email = "MeuNoMe@MEUDominiO.coM.bR"; 4.String hexadecimal = "#aa33ff"; 5.System.out.println(email.toLowerCase()); 6.System.out.println(hexadecimal.toUpperCase()); 7.} 8.}

Comparao
H vrias formas de se fazer comparaes com uma string, mas vale sempre lembrar que Java case sensitive - diferencia letras maiscula de minsculas e vice-versa. Embora haja mtodos prprios para comparaes em que no h importncia em diferenciar letras maisculas e minsculas. A comparao mais simples usando o prprio operador de igualdade (==), mas por se tratar de um objeto prefervel que se use o mtodo especfico chamado equals(). O mtodo equals() compara o objeto string com outro objeto, se ambos possurem contedos iguais, ento, retornado verdadeiro (true), caso contrrio falso (false). Isso quer dizer que se, por exemplo, tiver um objeto da classe Integer que vale 15 e uma string contendo os caracteres 1 e 5, a comparao de ambos resultar em verdadeiro. A funo equals() case sensitive, para fazer uma comparao ignorando esta caracterstica basta usar o mtodoequalsIgnoreCase().

01.public class ComparacaoIgualdadeString {

02.public static void main(String[] args) { 03.String string1 = "TI Expert"; 04.String string2 = "ti expert"; 05.System.out.println("So iguais? (case sensitive)"); 06.System.out.println(string1.equals(string2) ? "sim" : "no"); 07.System.out.println("So iguais? (sem case sensitive)"); 08.System.out.println(string1.equalsIgnoreCase(string2) ? "sim" : "no"); 09.} 10.}
H tambm uma forma de comparar strings lexicograficamente. Dessa forma, podemos verificar se uma string identica (quando retorna-se 0), ou se ela tem um valor menor (quando retorna-se um nmero abaixo de 0) ou se ela tem um valor maior (quando retorna-se um nmero acima de 0). O mtodo para fazer tais comparaes o compareTo() (case sensitive) ou compareToIgnoreCase() (sem case sensitive).

01.public class ComparacaoString { 02.public static void main(String[] args) { 03.String string1 = "TI Expert"; 04.String string2 = "ti expert"; 05.int comparacao = string1.compareTo(string2); 06.System.out.println("Comparao entre string1 e string2 (sensitive case)"); 07.if (comparacao > 0) { 08.System.out.println("string1 lexicograficamente maior que string2"); 09.} else if (comparacao < 0) { 10.System.out.println("string1 lexicograficamente menor que string2"); 11.} else { 12.System.out.println("string1 lexicograficamente igual a string2"); 13.} 14.} 15.}

Incio e fim
Outra forma de fazer comparaes fazer testes no incio e no fim de uma string. Podemos fazer tais comparaes usando dois mtodos: startsWith() e endsWith().

StartsWith() verifica se h uma string no comeo de outra string. StartsWith() tambm


possui um segundo parmetro opcional que determina a compensao inicial, ou seja, caso necessite verificar a string no da posio 0, mas de uma posio mais adiante.

EndsWith() verifica se h uma string no final de outra string. Diferentemente de startsWith(), o mtodoendsWith() no possui compensao. 01.public class InicioFim { 02.public static void main(String[] args) { 03.String string1 = "http://www.tiexpert.net"; 04.System.out.println("A string " + string1 + " :"); 05.// verifica se h 'http:' no inicio da string 06.if (string1.startsWith("http:")) { 07.System.out.println("uma URL"); 08.} 09./* 10.* verifica se h 'www' no incio da string, mas apenas a partir do 11.* 8o. caracter, ou seja, aps o prefixo 'http://', portanto dever 12.* ser compensado 7 caracteres 13.*/ 14.if (string1.startsWith("www", 7)) { 15.System.out.println("uma pgina da web"); 16.} 17.if (string1.endsWith(".br")) { 18.System.out.println("um site registrado no Brasil"); 19.} else { 20.System.out.println("no um site registrado no Brasil"); 21.} 22.} 23.}

Caracter na posio
Podemos tambm obter um caracter que se encontra em alguma posio dentro da string. Para isso, usaremos o mtodo charAt().

CharAt() recebe um inteiro como argumento que indica a posio que queremos da string.
Importante: Strings seguem o mesmo conceito de vetores e arrays, portanto, seu primeiro caracter no est na posio 1, mas na posio 0.

1.public class ExtrairCaracter { 2.public static void main(String[] args) { 3.String string1 = "TI Expert"; 4.char caracter = string1.charAt(3); 5.System.out.println("O 4o. caracter desta string " + caracter); 6.} 7.}

ndice da String
A classe string possui uma forma de encontrar o ndice da primeira ocorrncia de uma string dentro de outra string. O mtodo indexOf() retorna um nmero inteiro que indica exatamente em que posio ocorre uma string de busca, ou retorna um valor menor que 0 caso no encontre o valor requisitado. Assim como startsWith(), indexOf() tambm possui um segundo argumento que determina a compensao a ser feita caso a busca no possa ser feita desde a posio 0, mas de uma posio posterior. Alm do mtodo indexOf(), h tambm o mtodo lastIndexOf() que faz a mesma coisa que indexOf(), porm de forma recursiva (de trs para frente ou do fim da string para o comeo)

01.public class IndiceString { 02.public static void main(String[] args) { 03.String string1 = "www.tiexpert.net"; 04.int posicao; 05.posicao = string1.indexOf("tiexpert"); 06.if (posicao >= 0) { 07.System.out.println("A string tiexpert comea na posio " + posicao); 08.} else { 09.System.out.println("No h tiexpert na string"); 10.} 11.posicao = string1.lastIndexOf(".com"); 12.if (posicao >= 0) { 13.System.out.println("A string .com comea na posio " + posicao); 14.} else {

15.System.out.println("No h .com na string"); 16.} 17.} 18.}

Substituir string ou parte dela


Podemos substituir todas as ocorrncias de uma string por uma nova string resultando em uma nova string de retorno. Para executarmos esta operao usamos o mtodo replace() que tem dois parmetros: o primeiro ser o que desejamos procurar dentro da string e o segundo a string que colocaremos no lugar da antiga. Nota: replace tambm funciona com o tipo primitivo char.

1.public class SubstituirString { 2.public static void main(String[] args) { 3.String string1 = "http://tiexpert.net"; 4.System.out.println(string1.replace("http://", "www.")); 5.} 6.}

Verificar contedo da string


Um mtodo muito til para verificar o contedo de uma string o contains().

Contains() retorna verdadeiro (true) se houver a sequncia de caracteres especificada no


parmetro.

1.public class VerificarConteudo { 2.public static void main(String[] args) { 3.String string1 = "http://www.tiexpert.net"; 4.System.out.println(" uma pgina da web?"); 5.System.out.println(string1.contains("www.") ? "sim" : "no"); 6.} 7.}

Dividir em vrios vetores ou arrays


Tambm possvel dividir uma string em um vetor ou array de strings, o que possibilita trabalhar com pedaos menores e mais lgicos da string. Para dividir a string podemos usar o mtodo split(). O mtodo split usa uma expresso regular para fazer a diviso. Para simplificar o entendimento, podemos usar como parmetro uma outra string como base. Mas vale atentar no fato de que a expresso utilizada para ser feita a quebra desaparece no fim do processo. Ex.: Se minha string for 15:30:00, se utilizarmos os dois pontos (:) para a separao conseguiremos um array com 3 posies que seriam: [0]->15, [1]->30, [2]>00.

01.public class Exemplo {

02.public static void main(String[] args) { 03.String string1 = "15:30:00"; 04.String[] stringDividida = string1.split(":"); 05.for (int i = 0; i < stringDividida.length; i++) { 06.System.out.println("stringDividida[" + i + "]=" + stringDividida[i]); 07.} 08.} 09.}

Substring
Substring uma poro ou parte da string principal da qual pode formar outra string, ou seja, uma substring uma string formada a partir de uma string principal. Para obtermos uma substring usamos um mtodo homnimo (de mesmo nome) com um ou dois parmetros. O primeiro parmetro, obrigatrio, a posio que a substring deve iniciar (lembrando-se que strings sempre comeam da posio 0). O segundo parmetro, opcional, a posio final da substring, caso este parmetro no seja indicado, a substring sempre ir at o ltimo caracter encontrado. Nota: O caracter na posio inicial far parte da substring, porm o caracter na posio final no faz parte da substring. Vejamos o exemplo: Se tivermos uma string de 9 caracteres, portanto, de 0 a 8 posies, se fizermos a substring da seguinte forma: stringOriginal.substring(3,8); 0 1 2 3 4 5 6 7 8 T I E X P E R T

O resultado ser Exper. Ento, se quisermos que a 8 posio entre, devemos usar a posio seguinte 9, assim:stringOriginal.substring(3,9);

01.public class ExemploSubstring { 02.public static void main(String[] args) { 03.String url = "www.tiexpert.net"; 04.String dominio = url.substring(4); 05.String site = url.substring(url.indexOf('.') + 1, url.lastIndexOf('.')); 06.System.out.println("Anlise da string:"); 07.System.out.println("Domnio: " + dominio); 08.System.out.println("Site: " + site); 09.} 10.}