Você está na página 1de 64

1.

Histrico do Java
O Java uma linguagem de programao orientada a objeto desenvolvida na
dcada de 90 por uma equipe de programadores chefiada por James Gosling, na
empresa Sun Microsystems. Em 1991, na Sun Microsystems, foi iniciado o Green
Project, o bero do Java. Os mentores do projeto eram Patrick Naughton, Mike Sheridan,
e James Gosling. O objetivo do projeto no era a criao de uma nova linguagem de
programao, mas antecipar e planejar a prxima onda do mundo digital. Eles
acreditavam que, em algum tempo, haveria uma convergncia dos computadores com os
equipamentos e eletrodomsticos comumente usados pelas pessoas no seu dia-a-dia.
Para provar a viabilidade desta idia, 13 pessoas trabalharam arduamente durante
18 meses. No vero de 1992 eles emergiram de um escritrio de Sand Hill Road no Menlo
Park com uma demonstrao funcional da idia inicial. O prottipo se chamava *7 (leia-se
StarSeven), um controle remoto com uma interface grfica touchscreen. Para o *7, foi
criado um mascote, hoje amplamente conhecido no mundo Java, o Duke. O trabalho do
Duke no *7 era ser um guia virtual ajudando e ensinando o usurio a utilizar o
equipamento. O *7 tinha a habilidade de controlar diversos dispositivos e aplicaes.
James Gosling especificou uma nova linguagem de programao para o *7. Gosling
decidiu batiz-la de Oak, que quer dizer carvalho, uma rvore que ele podia observar
quando olhava pela sua janela.

Imagem:StarSeven

O prximo passo era encontrar um mercado para o *7. A equipe achava que uma
boa idia seria controlar televises e vdeo por demanda com o equipamento. Eles
construram um demo chamado MovieWood, mas infelizmente era muito cedo para que o
vdeo por demanda bem como as empresas de TV a cabo pudessem viabilizar o negcio.
A idia que o *7 tentava vender, hoje j realidade em programas interativos e tambm na
televiso digital. Permitir ao telespectador interagir com a emissora e com a programao
em uma grande rede de cabos, era algo muito visionrio e estava muito longe do que as
empresas de TV a cabo tinham capacidade de entender e comprar. A idia certa, na poca
errada.
Entretanto, o estouro da Internet aconteceu e rapidamente uma grande rede
interativa estava se estabelecendo. Era este tipo de rede interativa que a equipe do *7
estava tentando vender para as empresas de TV a cabo. E, da noite para o dia, no era
mais necessrio construir a infra-estrutura para a rede, ela simplesmente estava l.
Gosling foi incumbido de adaptar o Oak para a Internet e em janeiro 1995 foi lanada uma
nova verso do Oak que foi rebatizada para Java. A tecnologia Java tinha sido projetada
para se mover por meio das redes de dispositivos heterogneos, redes como a Internet.
Agora aplicaes poderiam ser executadas dentro dos browsers nos Applets Java e tudo
seria disponibilizado pela Internet instantaneamente. Foi o esttico HTML dos browsers
que promoveu a rpida disseminao da dinmica tecnologia Java. A velocidade dos
acontecimentos seguintes foi assustadora, o nmero de usurios cresceu rapidamente,
grandes fornecedores de tecnologia, como a IBM anunciaram suporte para a tecnologia
Java.
Desde seu lanamento, em maio de 1995, a plataforma Java foi adotada mais
rapidamente do que qualquer outra linguagem de programao na histria da
computao. Em 2004 atingiu a marca de 3 milhes de desenvolvedores em todo mundo.
Continuou crescendo e hoje uma referncia no mercado de desenvolvimento de
software tornnando-se popular pelo seu uso na Internet, atualmente possui seu ambiente
de execuo presente em web browsers, mainframes, SOs, celulares, palmtops e cartes
inteligentes, entre outros.

1.1. Nvel de Popularidade


Pesquisas

estatsticas

publicadas

constantemente

pelo

site

Tiobe

(http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html), demonstram o nvel de


popularidade das diversas linguagens de programao existentes, e como se pode ver, o
Java "encabea" esta lista.

1.2. Origem do nome JAVA

Existem inmeras verses sobre a escolha do nome Java, porm, a mais difundida
a de que os programadores da SUN Microsystems, tomavam muito caf para aguentar a
longa jornada de programao enquanto trabalhavam no desenvolvimento da linguagem,
e ento resolveram homenagear a ilha de Java, por ser tratar de uma das maiores e
melhores produtora de caf do mundo.
O certo, que de alguma forma o caf de Java influenciou no somente na escolha
do nome, mas tambm do smbolo da Linguagem.
1.3. Compra do Java pela empresa Oracle
Atualmente o Java pertence a empresa Oracle. No dia 20/04/09, o CEO da Oracle,
Larry Ellison, anunciou a compra da Sun numa conferncia de imprensa, em uma
negociao em torno de US$ 7,4 bilhes. Larry classificou o Java

como: "O mais

importante ativo de software j adquirido pela Oracle".


Fonte: http://www.softwarelivre.org/news/13241

2. Por que o JAVA?


O Java foi testado, refinado, ampliado e experimentado por uma comunidade
dedicada. E, com mais de 6,5 milhes de desenvolvedores, a tecnologia mais ampla e
ativa do planeta. Com sua versatilidade, eficincia e portabilidade, o Java tem valor
inestimvel para desenvolvedores, pois permite:
Criar um software em uma plataforma e execut-lo em qualquer outra;
Criar programas para execuo em navegadores e servios da Web;
Desenvolver aplicativos no lado do servidor usados tanto em fruns, lojas e
pesquisas on-line, como no processamento de formulrios HTML, e muito mais;
Combinar aplicativos ou servios usando a linguagem Java para criar aplicativos ou
servios altamente personalizados;

Criar aplicativos potentes e eficazes para telefones celulares, processadores


remotos, produtos de consumo de baixo custo e praticamente qualquer outro
dispositivo com tecnologia digital.

E o mais importante, GRATUITO!


Conforme j havia antecipado, a Sun
comea a abrir nesta segunda-feira (13/11)* o
cdigo da linguagem de programao Java.
Fonte: http://portal.softwarelivre.org/news/7859 (13/11/2006)

2.1. Principais diferenas entre o Java e as demais linguagens de programao


Como linguagem de programao, o Java pode ser utilizado para criar todos os
tipos de aplicaes existentes, de programas de Inteligncia Artificial para Robs at
programas para aparelhos celulares, isso porque se trata de uma linguagem de Mdio
Nvel, diferente das demais, que so ou de Baixo ou de Alto Nvel. Assim sendo,
utilizamos uma nica linguagem, seja para desenvolver programas Comerciais ou para
Hardwares.
Como ambiente de desenvolvimento, a tecnologia Java fornece um grande conjunto
de ferramentas: um compilador, um interpretador, um gerador de documentao,
ferramenta de empacotamento de classes de arquivos e outros.
2.1.1. Algumas caractersticas do Java
Programas Java no so traduzidos para a linguagem de mquina, como outras
linguagens estaticamente compiladas e sim para uma representao intermediria,
chamada de bytecodes.
Diferentemente das linguagens convencionais, que so compiladas para cdigo
nativo, a linguagem Java compilada para um "bytecode" que executado por uma

mquina virtual. A linguagem de programao Java a linguagem convencional da


Plataforma Java, mas no sua nica linguagem. A Mquina Virtual Java uma mquina
imaginria que implementada atravs de um software emulador em uma mquina real, a
JVM como chamada, prov especificaes de plataforma de hardware na qual compilase todo cdigo de tecnologia Java. Essas especificaes permitem que o software Java
seja uma plataforma independente pois a compilao feita por uma mquina genrica
conhecida como JVM.
O bytecode uma linguagem de mquina especial que pode ser entendida pela Mquina
Virtual Java (JVM), por isso independente de qualquer Hardware e Sistema
Operacional. Assim, qualquer computador com o interpretador Java pode executar um
programa java.

2.1.2. Garbage Collection


Muitas linguagens de programao permitem ao programador alocar memria
durante o tempo e execuo. Entretanto, aps utilizar a memria alocada, deve existir uma
maneira para desalocar o bloco de memria de forma que os demais programas a utilizem
novamente. Na maior parte das linguagens o programador o responsvel por isso que s
vezes, pode ser difcil j que instncias podem ser esquecidas de serem desalocadas da
memria pelos programadores e resultar no que chamamos de escapes da memria.
Em Java, o programador no possui a obrigao da retirar uma varivel criada das reas
de memria, isto feito por uma parte da JVM especfica que chamamos de Garbage
Collection. O Garbage Collection o grande responsvel pela liberao automtica do
espao em memria. Isso acontece automaticamente durante o tempo de vida do
programa Java.

3. Downloads e configuraes dos pacotes JAVA

3.1. Para iniciar nossa aprendizagem vamos utilizar o JDK (Java SE Development
Kit):

Baixar e instalar o JDK (Java Development Kit) do site da Oracle:


http://www.oracle.com/technetwork/indexes/downloads/index.html?
ssSourceSiteId=ocomen

3.1. Configurando o JAVA (JDK) para Windows


- Aps instalar o Java em sua mquina, o primeiro passo abrir o Painel de Controle do
Windows.

3.1.1. Windows XP
- Feito isso d duplo clique no cone Sistema.

- A tela de Propriedades do Sistema ir se abrir como mostra a figura abaixo.


- Em seguida, selecione a guia Avanado, e clique no boto Variveis de
ambiente.

3.1.2. Windows 7
No Windows 7, abrir o Painel de Controle, opo Sistemas e Segurana, Sistemas. E em
Configuraes avanadas do sistema teremos acesso a janela de configurao de
variveis ambientes

3.2. Configurao de variveis ambientes


Aberta a tela de Variveis de Ambiente, o nosso prximo passo encontrar onde est
Instalado

nosso

JDK,

que

normalmente

fica

no

Diretrio:

C:\Arquivos

de

programas\Java, caso no esteja, localize em seu computador a pasta Java.


- Aps localizar, copie o diretrio (inclusive a pasta JDK), clique no boto Nova,
Localizado na Groupbox Variveis do sistema.

- Abrir a Tela abaixo:

- Nesta tela vamos informar:


Nome de Varivel: JAVA_HOME
Valor da Varivel: C:\Arquivos de programas\Java\ jdk1.6.0_02
Obs1: Para Valor da Varivel, basta colar o endereo copiado anteriormente.

Obs.2: Cuidado com a verso da sua JDK, ela pode ser diferente, confirme o nome do
diretrio jdk1.6.0_02
- Feito, isso clicar OK!
- Clique novamente no Boto Nova, localizado na GroupBox Variveis do sistema.
E agora vamos informar esses valores:

- Nesta tela vamos informar:


Nome de Varivel: CLASSPATH
Valor da Varivel: .;%JAVA_HOME%\lib\tools.jar
- Feito isso pode clicar OK!
- Agora localize a Varivel PATH, selecione e depois clique em Editar

- A nova tela ir se abrir, como mostro a figura abaixo:

- Nesta tela, iremos acrescentar a seguinte informao no campo Valor da


Varivel:

;%JAVA_HOME%\bin

Obs.: O novo valor deve ser digitado aps o contedo j existente, e muito cuidado para no
apagar os valores j existentes.

Ex:

- Feito isso voc j pode clicar no OK!


- Clique no OK da tela de traz e depois s fechar a tela.
- Com isso voc ter as Variveis de Ambiente Java configuradas!
No se esquea de Reinicializar o PC!
- Aps Reiniciar o computador, abra o MS-DOS, e digite o cdigo javac e o comando ser
executado.
4. Primeiro Programa em JAVA
Como j especificado, utilizaremos o JDK para desenvolver nossos primeiros
programas. Para isso, podemos utilizar qualquer editor de textos, por exemplo: Bloco de
Notas, WordPad e outros.
4.1. Editando um programa
Abra um editor de Textos e digite a seguinte codificao:
public class OLA
{
public static void main(String[] args)
{
System.out.println("Ol Mundo!");
}

}
Entendendo o programa:
public class OLA // Cria uma classe pblica chamada OLA (Nome do Programa)
{

// O { indica o Inicio do bloco, como se fosse um Begin


public static void main(String[] args) /* Aqui estamos criando um mtodo
(como se fosse uma procedure, no pascal,
Delphi, e outros), neste caso, um mtodo
principal, reconhecido pelo termo main */
{
System.out.println("Ol Mundo!");

/* Mostra, imprime na tela o texto


"Ol Mundo" */

}
}

// Fecha o bloco de comandos, como se fosse um End

4.2. Linhas de Comentrio no Java


Como podemos ver no exemplo acima, para postar comentrios no meio do
programa, podemos usar:

// -

/* -------------- */ - Para comentar um bloco de linhas no programa.

Para comentar uma linha no programa.

4.3. Salvando um programa Java.


Para salvar um programa java editado no Bloco de notas, WordPad ou qualquer
editor de textos, basta salva-lo com a extenso
Por exemplo:

.java

OLA.java

Ateno: - 1 Deve-se salvar o programa com o mesmo nome dado a classe ou seja,
se nossa classe se chama OLA, salvamos nosso programa como
OLA.java.
- 2 O java Sensitivo a Letras Maisculas e Minsculas.

- 3 Editores de texto que oferecem a opo Tipo de arquivo ao salvar,


deve se indicar a opo All Files .
5. Compilando e executando programas Java
Para compilar, devemos ir at o Prompt de comando(MS-DOS), acessar a
pasta/endereo onde se encontra salvo nosso programa, e digitar o seguinte comando:
javac nomeDoPrograma.java
Ou seja, se nosso programa foi salvo em C:\Programas Java, devemos acessar a pasta
C:\Programas Java , digitar o comando javac nomeDoPrograma.java. e pressionar a
tecla Enter.
Ex:

(Lembre-se que o Java totalmente sensitivo)


Se a compilao no acusar nenhum erro, basta execut-lo, utilizando a codificao:
java nomeDoPrograma
Ex:

6. Usando NetBeans
At o presente momento, construmos programas sem utilizar nenhum recurso
sofisticado. Porm, pode-se utilizar IDEs para facilitar todo este processo. Uma IDE
(Integrated Development Environment) um ambiente de desenvolvimento integrado, ou
seja, um software aplicativo que possui: Uma interface construtora, um editor de texto, um
editor de cdigo, um compilador e/ou interpretador e um depurador.
O NetBeans uma das IDEs mais utilizadas pelos desenvolvedores em Java
atualmente.
6.1. Downloads e Instalao

Para efetuar o download do NetBeans , utilize o mesmo site:


http://www.oracle.com/technetwork/indexes/downloads/index.html?
ssSourceSiteId=ocomen

Detalhe: A Instalao do NetBeans muito simples e no necessita de


configuraes posteriores. Basta Instalar, Abrir e Utilizar.

Aps instalar, vamos criar no NetBeans o mesmo programa feito no Bloco de


Notas (Ol Mundo), compil-lo e execut-lo.

7. Criando / Usando Variveis


- Assim como nas demais linguagens de programao, no Java, pode-se usar Letras e
Nmeros para dar nome s variveis , desde que se inicie com Letra;
Ex: Num1, Num2, Valor1, Valor2
- No usar acentos;
- No usar espaos.

7.1. Tipos de dados


- Booleanos:

boolean: Uma varivel booleana pode assumir apenas um entre dois


valores: true ou false.

- Caracter:

char: Uma varivel do tipo char armazena um caractere Unicode. Um caractere


Unicode um caractere de 16 bits, sendo que de 0 a 225 correspondem aos
caracteres do cdigo ASCII. Uma constante do tipo caractere representada
colocando-se entre apstrofos (aspas simples, ex: a), ou pelo valor numrico
correspondente na tabela Unicode precedido por \u (Ex: \u0061 -> letra a),
ou ainda, pela sequncia '\x' onde x especifica o caractere a ser referido (Por
exemplo, '\n' para o caractere de nova linha).
(OLHAR MAPA DE CARACTERES)

- Inteiros:

byte: O tipo byte o de menor alcance entre os inteiros. Como o prprio nome
sugere, ele consome apenas um byte (8 bits) e pode guardar valores entre -128
e 127.

short: O tipo short guarda inteiros de 2 bytes (16 bits) e pode guardar nmeros
entre -32.768 a 32.767.

int: O tipo int o tipo de dado mais comum. Ele consome 4 bytes (32 bits) e
guarda valores entre -2.147.483.648 e 2.147.483.647.

long: O tipo Long o tipo de dado com maior alcance entre os inteiros.
Consequentemente, tambm o que ocupa mais espao (8 bytes ou 64 bits).
Tem

um

grande

alcance

que

fica

entre

-9,22E+18

(exatos

-9.223.372.036.854.775.808) e 9,22E+18 (exatos 9.223.372.036.854.775.807).

char: O dado do tipo char um inteiro especial, sendo exclusivamente positivo


e representa um nico Unicode. O que difere o tipo char dos demais inteiros
que a sua sada sempre ser mostrada como um valor ASCII. Enquanto que os
inteiros sero sempre mostrados por nmeros decimais.

- Ponto Flutuante
- Para utilizar as casas decimais, devemos utilizar um ponto para separar a parte
inteira da decimal.
- Todo nmero com casa decimal double por padro. Assim para utilizar nmeros

com casas decimais do tipo float, deve se diferencia-lo do tipo double. Conseguimos
fazer isso facilmente digitando uma letra F ao final do nmero (no importa se a letra
maiscula ou minscula). Exemplo:
double x = 3.14;

// tipo double

double y = 6.02E23;

// double com expoente

float

z = 2.718F;

// float

float: O tipo float guarda nmeros fracionrios de 32 bits que vo de


1.40239846E-46 a 3.40282347e+38.

double: O tipo double guarda nmeros fracionrios de 64 bits que vo de


4.94065645841246544E-324 a 1.7976931348623157E+308.

- Mas e o Tipo de Dado String?


Em Java, String no um tipo de dado, mas sim uma classe, e com certeza o
elemento mais utilizado. Na verdade uma String em Java um vetor de caracteres, que
pode ser utilizado para armazenar palavras frases e textos.
Obs: - Para carregar uma string usa-se o texto entre aspas duplas. Ex: T = Texto
- Para carregar um char usa-se o caracter entre aspas simples. Ex: c = 'A'
7.2. Declarando e inicializando Variveis
A seguir, vemos como feita a declarao de uma varivel:
Tipo_de_ dado nome_da_variavel;
OU
Tipo_de_ dado nome_da_variavel = valor inicial da variavel;
Obs.:> Em Java, podemos ao mesmo tempo: Criar e Carregar variveis.

> Para atribuir valor a uma varivel usa-se apenas o sinal = e no : =


Ex:
public class Variaveis
{
public static void main( String[] args )
{
int result ; // declara uma varivel com nome result do tipo int
result = 10;

// inicia a varivel result com o valor true

char carac = 'C'; // declara uma varivel com nome option do tipo char e j'
// inicia seu valor com o caracter C
System.out.println(result);
System.out.println(O Valor da varivel carac + carac); // Mostra um texto e
//o valor da varivel
}
}
Obs.: Para concatenar Texto com valor de variveis, usamos os sinal de +.
8. Operadores
Em Java temos diferentes tipos de operadores. Existem operadores aritmticos,
operadores relacionais, operadores lgicos e operadores condicionais. Estes
operadores obedecem a uma ordem de precedncia para que o compilador saiba qual
operao executar primeiro, no caso de uma sentena possuir grande variedade destes.
8.1.

Operadores Aritmticos
Aqui temos a lista dos operadores aritmticos que podem ser utilizados na criao

de expresses matemticas:
Operador
*
/
%
+
Ex:

Uso
op1 * op2
op1 / op2
op1 % op2
op1 - op2
op1 + op2

Descrio
Multiplica op1 por op2
Divide op1 por op2
Resto da diviso de op1 por op2
Subtrai op2 de op1
Soma op1 e op2

public class Operadores


{
public static void main(String[] args)
{
double op1 = 90;

// Iniciando as Variveis

double op2 = 35;


System.out.println("Multiplicao de op1 por op2 = " + (op1 * op2));
System.out.println("Diviso de op1 por op2 = " + (op1 / op2));
System.out.println("Resto da Diviso de op1 por op2 = " + (op1 % op2));
System.out.println("Subtrao de op1 por op2 = " + (op1 - op2));
System.out.println("Soma de op1 por op2 = " + (op1 + op2));
}
}
Teremos como sada:
Multiplicao de op1 por op2 = 3150.0
Diviso de op1 por op2 = 2.5714285714285716
Resto da Diviso de op1 por op2 = 20.0
Subtrao de op1 por op2 = 55.0
Soma de op1 por op2 = 125.0
Nota: Quando um nmero de tipo inteiro e um outro de tipo fracionrio so usados numa
nica operao, o resultado ser dado pela varivel de maior tipo, no caso, valor de
nmero fracionrio. O nmero inteiro implicitamente convertido para o nmero
fracionrio antes da operao ter incio.
Operadores de Incremento e Decremento
Alm dos operadores aritmticos bsicos, Java d suporte ao operador unrio de
incremento (++) e ao operador unrio de decremento (--). Operadores de incremento ou
decremento aumentam ou diminuem em 1 o valor da varivel. Por exemplo, a expresso,
count = count + 1; // incrementa o valor de count em 1
equivalente a

count++;
Operador
++

Uso
Cont++

Descrio
Incrementa Cont em 1; Avalia a expresso antes do

++Cont

valor ser acrescido


Incrementa Cont em 1; Incrementa o valor antes da

--

Cont--

expresso ser avaliada


Decrementa Cont em 1; Avalia a expresso antes do

--

--Cont

valor ser decrescido


Decrementa Cont em 1; Decrementa Cont em 1 antes

++

da expresso ser avaliada


Como visto na tabela acima, os operadores de incremento e decremento podem ser
usados tanto antes como aps o operando. E sua utilizao depender disso. Quando
usado antes do operando, provoca acrscimo ou decrscimo de seu valor antes da
avaliao da expresso em que ele aparece. Por exemplo:
int i = 10,
int j = 3;
int k = 0;
k = ++j + i; //resultar em k = 4+10 = 14
Quando utilizado depois do operando, provoca, na varivel, acrscimo ou decrscimo do
seu valor aps a avaliao da expresso na qual ele aparece. Por exemplo:
int i = 10,
int j = 3;
int k = 0;
k = j++ + i; //resultar em k = 3+10 = 13
8.2 Operadores Relacionais

Os operadores relacionais so usados para comparar dois valores e determinar o


relacionamento entre eles. A sada desta avaliao ser fornecida com um valor lgico:
true ou false.
Operador
>
>=
<
<=
==
!=

Uso
Num1 > Num2
Num1 > = Num2
Num1 < Num2
Num1 <= Num2
Num1 == Num2
Num1 != Num2

Descrio
Num1 maior do que Num2
Num1 maior ou igual a Num2
Num1 menor do que Num2
Num1 menor ou igual a Num2
Num1 igual a Num2
Num1 no igual a Num2

Ex:
public class OpLogicos
{
public static void main(String[] args)
{
// alguns nmeros
int i = 37;
int j = 42;
int k = 42;
System.out.println (" I > j : " + (i > j));
System.out.println(" i < j : " + (i < j));
System.out.println (" i = j : " + (i == j));
System.out.println (" j = k : " + (j == k));
System.out.println (" j != k : " + (j != k));
}
}
8.3. Operadores Lgicos
Operadores lgicos avaliam um ou mais operandos lgicos que geram um nico
valor final true ou false como resultado da expresso. So seis os operadores lgicos: &&
(e lgico), & (e binrio), || (ou lgico), | (ou binrio), ^ (ou exclusivo binrio) e ! (negao).

A operao bsica para um operador lgico : x1 operador x2, Onde x1 e x2


podem ser expresses, variveis ou constantes lgicas, e operador pode tanto ser &&, &,
||, | ou ^.
8.3.1.

&& (e lgico) e & (e binrio)


X1
Verdadeiro
Verdadeiro
Falso
Falso

X2
Verdadeiro
Falso
Verdadeiro
Falso

Resultado
Verdadeiro
Falso
Falso
Falso

A diferena bsica do operador && para & que o && suporta uma avaliao de
curto-circuito (ou avaliao parcial), enquanto que o & no. O que isso significa?
Dado o exemplo:

exp1 && exp2

o operador e lgico ir avaliar a expresso exp1, e, imediatamente, retornar um valor


false se a operao exp1 for falsa. Se a expresso exp1 resultar em um valor false o
operador nunca avaliar a expresso exp2, pois o valor de toda a expresso ser falsa
mesmo que o resultado isolado de exp2 seja verdadeiro. J o operador & sempre avalia as
duas partes da expresso, mesmo que a primeira tenha o valor false.
public class TestAnd
{
public static void main( String[] args )
{
int i = 0;
int j = 10;
boolean test = false;
// demonstrao do operador &&
test = (i > 10) && (j++ > 9);
System.out.println(i);

System.out.println(j);
System.out.println(test);
// demonstrao do operador &
test = (i > 10) & (j++ > 9);
System.out.println(i);
System.out.println(j);
System.out.println(test);
}
}
Como resultado, o programa produzir a seguinte sada:
0
10
false
0
11
false
Note que o comando j++, na linha contendo &&, nunca ser executado, pois o operador
no o avalia, visto que a primeira parte da expresso (i>10) retorna um valor booleano
false.
8.3.2. || ( ou lgico) e | ( ou binrio)
X1
Verdadeiro
Verdadeiro
Falso
Falso

X2
Verdadeiro
Falso
Verdadeiro
Falso

Resultado
Verdadeiro
Verdadeiro
Verdadeiro
Falso

A diferena bsica entre os operadores || e |, que, semelhante ao operador &&, o


|| tambm suporta a avaliao parcial. O que isso significa?
Dada a expresso,exp1 || exp2 o operador ou lgico ir avaliar a expresso exp1,
e, imediatamente, retornar um valor lgico true para toda a expresso se a primeira parte
for avaliada como verdadeira. Se a expresso exp1 resultar em verdadeira a segunda
parte exp2 nunca ser avaliada, pois o valor final da expresso ser true
independentemente do resultado da segunda expresso. O programa a seguir, mostra a
utilizao destes operadores:

public class OpLogicos


{
public static void main( String[] args )
{
int i = 0;
int j = 10;
boolean test = false;
// demonstrao do operador ||
test = (i < 10) || (j++ > 9);
System.out.println(i);
System.out.println(j);
System.out.println(test);
// demonstrao do operador |
test = (i < 10) | (j++ > 9);
System.out.println(i);
System.out.println(j);
System.out.println(test);
}
}
Como resultado, o programa produzir a seguinte sada:
0
10
true
0
11
true
Note que a expresso j++ nunca ser avaliada na instruo que usa o operador ||, pois a
primeira parte da expresso (i<10) j retorna true como valor final da expresso.

8.3.3. ^ (ou exclusivo binrio)

X1
Verdadeiro
Verdadeiro
Falso
Falso

X2
Verdadeiro
Falso
Verdadeiro
Falso

Resultado
Falso
Verdadeiro
Verdadeiro
Falso

O resultado de uma expresso usando o operador ou exclusivo binrio ter um valor


true somente se uma das expresses for verdadeira e a outra falsa. Note que ambos os
operandos so necessariamente avaliados pelo operador ^.
O programa a seguir, mostra a utilizao deste operador:
public class TestXOR
{
public static void main( String[] args )
{
boolean val1 = true;
boolean val2 = true;
System.out.println(val1 ^ val2);
val1 = false;
val2 = true;
System.out.println(val1 ^ val2);
val1 = false;
val2 = false;
System.out.println(val1 ^ val2);
val1 = true;
val2 = false;
System.out.println(val1 ^ val2);
}
}
Como resultado, o programa produzir a seguinte sada:
false

true
false
true
8.3.4. ! (negao)
X1
Verdadeiro
Falso

Resultado
Falso
Verdadeiro

O operador de negao inverte o resultado lgico de uma expresso, varivel ou


constante, ou seja, o que era verdadeiro ser falso e vice-versa. O programa a seguir,
mostra a utilizao deste operador:
public class TestNOT
{
public static void main( String[] args )
{
boolean val1 = true;
boolean val2 = false;
System.out.println(!val1);
System.out.println(!val2);
}
}
Como resultado, o programa produzir a seguinte sada:
false
true

8.3.4. Operador Condicional ( ?: )

O operador condicional tambm chamado de operador ternrio. Isto significa


que ele tem 3 argumentos que juntos formam uma nica expresso condicional. A
estrutura de uma expresso utilizando um operador condicional a seguinte:
exp1 ? exp2 : exp3
Onde exp1 uma expresso lgica que deve retornar true ou false. Se o valor de
exp1 for verdadeiro, ento, o resultado ser a expresso exp2, caso contrrio, o resultado
ser exp3.
O programa a seguir, mostra a utilizao deste operador:
public class OperadorCondicional
{
public static void main( String[] args )
{
String status = "";
int media = 9;
//status do aluno
status = (media >= 5)?"Aprovado":"Reprovado";
//print status
System.out.println( status );
}
}
Como resultado, o programa produzir a seguinte sada:
Aprovado
Veremos outro programa que tambm utiliza o operador condicional:

public class OperadorCondicional

{
public static void main( String[] args )
{
int Nota = 0;
char Conceito = 'a';
Nota = (Conceito == 'a') ? 10 : 0;
System.out.println("Nota = " + Nota );
}
}
Como resultado, o programa produzir a seguinte sada:
Nota = 10
8.4. Precedncia de Operadores
A precedncia serve para indicar a ordem na qual o compilador interpretar os
diferentes tipos de operadores, para que ele sempre tenha como sada um resultado
coerente e no ambguo.
Ordem
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

Operador
( ) parnteses
++ ps-incremento e -- ps-decremento
++ pr-incremento e -- pr-decremento
! negao lgica
* multiplicao e / diviso
% resto da diviso
+ soma e subtrao
< menor que, <= menor ou igual, > maior que e >= maior ou igual
== igual e != no igual
& e binrio
| ou binrio
^ ou exclusivo binrio
&& e lgico
|| ou lgico
?: condicional
= atribuio

No caso de dois operadores com mesmo nvel de precedncia, ter prioridade o que
estiver mais esquerda da expresso. Dada uma expresso complexa como:
6%2*5+4/2+88-10

O ideal seria fazer uso de parnteses para reescrev-la de maneira mais clara:
((6%2)*5)+(4/2)+88-10
9. Capturando entrada de dados atravs do teclado
Agora que j estudamos alguns conceitos bsicos e escrevemos alguns cdigos
simples, vamos fazer as aplicaes ficarem mais interativas comeando com a captura de
dados digitados pelo usurio.
9.1.

Classe Scanner para capturar dados


Primeiramente, utilizaremos a classe Scanner.

1 Passo: Para capturarmos dados do teclado atravs da classe Scaner, necessrio


utilizar uma biblioteca especfica;
import java.util.Scanner;
2 Passo: Iniciar o programa, assim como iniciamos nossos programas anteriores,
estabelecendo NomeDaClasse ..................;
public class EntradaTeclado
{
public static void main(String[] args)
{
3 Passo: Usar a classe Scanner para estabelecer parmetros de entrada (Neste caso
estamos criando uma nova Instancia da classe Scanner chamada entrada para receber
dados do teclado) ;
Scanner entrada = new Scanner(System.in);
4 Passo: Enviar uma mensagem solicitando a informao, e posteriormente guard-la em
uma varivel.
System.out.println("Entre com seu nome:");

String nome = entrada.next();


5 Passo: Agora s mostrar o contedo da varivel:
System.out.println("Ol "+nome+"!");
}
}
Obs: Pode-se usar a mesma instancia de Scanner para capturar mais de uma informao,
desde que sejam de mesmo tipo. Ex:
import java.util.Scanner;
public class EntradaTeclado
{
public static void main(String[] args)
{
Scanner entrada = new Scanner(System.in);
System.out.println("Entre com seu nome:");
String nome = entrada.next();
System.out.println("Entre com seu sobrenome:");
String sobrenome = entrada.next();
System.out.println("Ol "+nome+" "+sobrenome+"!");
}
}
A classe Scanner possui diversos mtodos que podem ser utilizados para realizar este
procedimento.
Os principais so:

Mtodo

Finalidade

next()

Aguarda uma entrada em formato String

nextInt()

Aguarda uma entrada em formato Inteiro

nextByte()

Aguarda uma entrada em formato Inteiro

nextLong()

Aguarda uma entrada em formato Inteiro Longo

nextFloat()

Aguarda uma entrada em formato Nmero Fracionrio

nextDouble() Aguarda uma entrada em formato Nmero Fracionrio

9.2. Utilizando a JOptionPane para receber dados


Um outro modo de receber os dados de entrada utilizar a classe JOptionPane,
que pertence ao pacote javax.swing. A JOptionPane possui mtodos que permitem criar
caixas de dilogo na qual o usurio pode informar ou visualizar algum dado.
Dado o seguinte cdigo:
import javax.swing.JOptionPane; /*Biblioteca necessria para utilizar caixas de
dialogo*/
public class EntradaTeclado
{
public static void main( String[] args )
{
String nome = "";
nome = JOptionPane.showInputDialog("Entre com seu nome"); /*Emite uma caixa
de dialogo solicitando o nome*/
String mensagem = "Ol " + nome + "!";
JOptionPane.showMessageDialog(null, mensagem);/*Emite uma caixa de dialogo
com a mensagem - Ol e o nome digitado*/
}
}
Ex:

Caixa de dilogo solicitando o nome

Caixa de dilogo informando mensagem + nome digitado


10. Converso de Tipos de Dados
Em Java ou em qualquer outra linguagem de programao, h situaes em que se
faz necessria a converso de tipos de dado (de variveis ou atributos).
Por exemplo, para atribuirmos um valor digitado em uma caixa de entrada
(showMessageDialog) a uma varivel numrica, preciso converte-lo (o valor) de string
para nmero antes que o mesmo seja atribudo varivel ou ao atributo. Isso porque toda
a informao vinda de formulrio, neste caso de um showMessageDialog, uma string
portanto no pode ser atribuda a uma varivel/atributo numrico. Para converso de tipos
de dados utilize os mtodos abaixo:
10.1. Converso de String para Numricos
Para converter dados String para tipos numricos podemos utilizar o mtodo parse.
chamados de mtodos parseXxx():
Converte de String para:

Comando para Converso

Byte
Short
Int

Byte.parseByte()
Short .parseShort()
Integer.parseInt()

Long
Float
Double

Long.parseLong()
Float.parseFloat()
Double.parseDouble()

Obs.: No existem converses: parseChar e parseBoolean;


Exemplo de converses:
import javax.swing.JOptionPane;
public class ConversaoParaNumeros
{
public static void main( String[] args )
{
byte num1=Byte.parseByte(JOptionPane.showInputDialog("Entre com um byte"));
short num2=Short.parseShort(JOptionPane.showInputDialog("Entre com um short"));
int num3=Integer.parseInt(JOptionPane.showInputDialog("Entre com um int"));
long num4=Long.parseLong(JOptionPane.showInputDialog("Entre com um long"));
float num5=Float.parseFloat(JOptionPane.showInputDialog("Entre com um float"));
double num6=Double.parseDouble(JOptionPane.showInputDialog("Entre com um
double"));

JOptionPane.showMessageDialog(null,"Numero byte: "+num1+


"\nNumero short: "+num2+
"\nNumero integer: "+num3+
"\nNumero long: "+num4+
"\nNumero float: "+num5+
"\nNumero double: "+num6);
}

}
}
Nota: Diferentemente de outras linguagens de programao, como o Delphi por exemplo,
no precisamos converter variveis numricas para string para que as mesmas possam
sejam jogadas em um formulrio. A converso necessria somente para pegar do
formulrio.
10.2. Converso de tipos numricos para String
Embora pouco usado, pode-se converter variveis numricas (de qualquer tipo) em
String utilizando a seguinte codificao:

String Varivel = String.valueOf(numero Ou VarivelNumerica);


Ex: String texto = String.valueOf(12.7);
String texto = String.valueOf(num1); /*onde num1 uma
varivel numrica
de qualquer tipo*/
10.3. Converso de tipos primitivos
A converso entre tipos primitivos feita automaticamente pelo Java sem a
necessidade de comandos/mtodos conversores(como visto no exemplo acima). Porm
isso somente ocorrer em casos apropriados, quando houver garantia de no haver
perda de informao. Assim a converso ser automtica quando :

A varivel de destino maior do que a de origem;


As variveis so de tipo compatvel;
Converses automticas:

10.4. Cast
O Java pode converter automaticamente de um tipo numrico menor para um outro
tipo maior (embora o cast seja preferido), mas ele se queixa quando a converso
significa a perda de dgitos significativos. Por exemplo, quando tentamos atribuir um valor
long para uma varivel int.
Long numeroLong;
Int numeroInt = numeroLong;
Contudo, se utilizarmos um cast a atribuio permitida.
Para isso usa-se entre parnteses, o tipo desejado para converso antes do valor a ser
convertido, como no exemplo a seguir:
Long numeroLong;
Int numeroInt = (int) numeroLong;
11. Estruturas de controle de deciso
Estruturas de controle de deciso so instrues em linguagem Java que permitem
que

blocos

especficos

de

cdigo

sejam

escolhidos

redirecionando determinadas partes do fluxo do programa.

para

serem

executados,

11.1. Declarao if
A declarao if especifica que uma instruo ou bloco de instrues seja executado
se, e somente se, uma expresso lgica for verdadeira.
A declarao if possui a seguinte forma:
IF (expresso_lgica)
instruo;
ou:
IF (expresso_lgica)
{
instruo1;
instruo2;
...
}
onde, expresso_lgica representa uma expresso ou varivel lgica.

Fluxograma da declarao if
Por Exemplo: Observe o trecho de cdigo:
int media = 8;
if (media > 5)
System.out.println("Aprovado!");

ou:
int media = 8;
if (media > 5)
{
System.out.println("Parabens!");
System.out.println("Voc foi Arpovado!!");
}
Dicas de programao:
1. Expresso lgica uma declarao que possui um valor lgico. Isso significa que a
execuo desta expresso deve resultar em um valor true ou false.
2. Quando houver mais de uma instruo a ser executada, coloque as instrues de
forma que elas faam parte do bloco if, ou seja entre chaves. Por exemplo:
if (expresso_lgica)
{
instruo1;
instruo2;
}
3. Cuidado para no usar = (sinal de atribuio) em vez de == (sinal de igualdade) para
comparao.
4. Quando necessrio usar duas expresses ou mais no if, coloque cada uma delas entre
parnteses separadas pelo operador lgico. Por Exemplo:
if ((numero > 10) && (numero <= 100))
5. Procure organizar suas linhas de cdigo de maneira que fiquem IDENTADAS para
facilitar o entendimento da codificao.
11.2. Declarao if-else
A declarao if-else usada quando queremos executar determinado conjunto de
instrues se a condio for verdadeira e outro conjunto se a condio for falsa.

Possui a seguinte forma:


if (expresso_lgica)
Instruo_caso_verdadeiro;
else
Instruo_caso_falso;
Tambm podemos escrev-la na forma abaixo:
if (expresso_lgica)
{
instruo_caso_verdadeiro1;
instruo_caso_verdadeiro2;
...........
}
else
{
instruo_caso_falso1;
instruo_caso_falso2;
........
}

Fluxograma da declarao if-else


Por Exemplo: Observe o trecho de cdigo:
int media = 8;
if (media > 5)
System.out.println("Aprovado!");
Else
System.out.println("Reprovado!");
ou:
int media = 8;
if (media > 5)
{
System.out.println("Parabens!");
System.out.println("Voc foi Aprovado!!");
}
else
{
System.out.println("Sinto Muito!");
System.out.println("Voc foi Reprovado!!");
}
11.3. Declarao if-else-if
A declarao else pode conter outra estrutura if-else. Este cascateamento de
estruturas permite ter decises lgicas muito mais complexas.
A declarao if-else-if possui a seguinte forma:
if (expresso_lgica1)
{
instruo1;
instruo2;

}
else
{
if (expresso_lgica2)
{
instruo3;
instruo4;
}
else
{
instruo5;
instruo6;
}
}

Fluxograma da declarao if-else-if

Podemos ter vrias estruturas else-if depois de uma declarao if. A estrutura else
opcional e pode ser omitida. No exemplo mostrado acima, se a expresso_lgica1
verdadeira, o programa executa as instrues 1 e 2 e salta as outras instrues. Caso
contrrio, se a expresso_lgica1 falsa, o fluxo de controle segue para a anlise da
expresso_lgica2. Se esta for verdadeira, o programa executa as instrues 3 e 4 e
salta as instrues 5 e 6. Caso contrrio, se a expresso_lgica2 falsa, ento a as
instrues 5 e 6 so executadas.
Observe um exemplo da declarao if-else-if no seguinte trecho de cdigo:
public class Conceito
{
public static void main( String[] args )
{
double media = 3;
if ((media >=0) && (media <= 10))
{
if (media >= 9)
{
System.out.println("Exelente!");
}
else
if ((media < 9) && (media >= 7.5))
{
System.out.println("Bom!");
}
else
If ((media < 7.5) && (media >= 5))
{
System.out.println("Estude mais!");
}
else

{
System.out.println("Voc presisa estudar muito ");
}
}
}
}

11.4. Declarao switch


Outra maneira de indicar uma condio atravs de uma declarao switch. A
construo switch permite que uma nica varivel inteira seja testada com mltiplas
possibilidades.
A declarao switch possui a seguinte forma:
switch (varivel_inteira)
{
case valor1:
instruo1;
instruo2;
break;
case valor2:
instruo3;
instruo4;
break;
case valor3:
instruo4;
instruo5;
break;
default:
instruo6;
instruo7;

break;
}
onde, varivel_inteira uma varivel de tipo byte, short, char ou int. valor1, valor2, e
assim por diante, so valores constantes que esta varivel pode assumir.
Quando a declarao switch encontrada, o fluxo de controle avalia inicialmente a
varivel_inteira e segue para o case que possui o valor igual ao da varivel. O programa
executa todas instrues a partir deste ponto, mesmo as do prximo case, at encontrar
uma instruo break, que interromper a execuo do switch.
Se nenhum dos valores case for satisfeito, o bloco default ser executado. Este
um bloco opcional. O bloco default no obrigatrio na declarao switch.

Fluxograma da declarao switch

Observe um exemplo da declarao switch() no seguinte trecho de cdigo:


public class TesteCase
{
public static void main( String[] args )
{
int mes = 10;
switch (mes)
{
case 1: System.out.print("janeiro\n");
break;
case 2: System.out.print("fevereiro\n");
break;
case 3: System.out.print("maro\n");
break;
case 4: System.out.print("abril\n");
break;
case 5: System.out.print("maio\n");
break;
case 6: System.out.print("junho\n");
break;
case 7: System.out.print("julho\n");
break;
case 8: System.out.print("agosto\n");
break;
case 9: System.out.print("setembro\n");
break;
case 10: System.out.print("outubro\n");
break;
case 11: System.out.print("novembro\n");
break;
case 12: System.out.print("dezembro\n");

break;
}
}
}
Notas:
1. Ao contrrio da declarao if, mltiplas instrues so executadas sem a necessidade
das chaves que determinam o incio e trmino de bloco {}.
2. Quando um case for selecionado, todas as instrues vinculadas ao case sero
executadas. Alm disso, as instrues dos case seguintes tambm sero executadas.
3. Para prevenir que o programa execute instrues dos outros case subseqentes,
utilizamos a declarao break aps a ltima instruo de cada case.

Dicas de Programao:
1. A deciso entre usar uma declarao if ou switch subjetiva. O programador pode
decidir com base na facilidade de entendimento do cdigo, entre outros fatores.
2. Uma declarao if pode ser usada para decises relacionadas a conjuntos, escalas de
variveis ou condies, enquanto que a declarao switch pode ser

utilizada para

situaes que envolvam varivel do tipo inteiro. Tambm necessrio que o valor de
cada clusula case seja nico.
12. Estruturas de controle de repetio
Estruturas de controle de repetio so comandos em linguagem Java que permitem
executar partes especficas do cdigo determinada quantidade de vezes. Existem 3 tipos
de estruturas de controle de repetio: while, do-while e for.
12.1. Declarao while
A declarao while executa repetidas vezes um bloco de instrues enquanto
umadeterminada condio lgica for verdadeira.

A declarao while possui a seguinte forma:


while (expresso_lgica)
{
instruo1;
instruo2;
..............
}

Fluxograma da declarao while


As instrues contidas dentro do bloco while so executadas repetidas vezes
enquanto o valor de expresso_lgica for verdadeira. Por exemplo, dado o trecho de
cdigo:
int i = 4;
while (i > 0)
{
System.out.print(i);
i--;
}
O cdigo acima ir imprimir 4321 na tela. Se a linha contendo a instruo i-- for removida,
teremos uma repetio infinita, ou seja, um cdigo que no termina. Portanto, ao usar

laos while, ou qualquer outra estrutura de controle de repetio, tenha a certeza de


utilizar uma estrutura de repetio que encerre em algum momento.
Outro exemplo:
int x = 0;
while (x<10)
{
System.out.println(x);
x++;
}
12.2. Declarao do-while
A declarao do-while similar ao while. A diferena que as instrues dentro do
lao do-while sero executadas pelo menos uma vez.
A declarao do-while possui a seguinte forma:
do {
instruo1;
instruo2;
...
} while (expresso_lgica);

Fluxograma da declarao do-while

Inicialmente, as instrues dentro do lao do-while so executadas. Ento, a


condio na expresso_lgica avaliada. Se for verdadeira, as instrues dentro do lao
do-while sero executadas novamente.
A diferena entre uma declarao while e do-while que, no lao while, a avaliao da
expresso lgica feita antes de se executarem as instrues nele contidas enquanto
que, no lao do-while, primeiro se executam as instrues e depois realiza-se a avaliao
da expresso lgica, ou seja, as instrues dentro em um lao do-while so executadas
pelo menos uma vez.

Exemplo 1:

Exemplo 2:

Exemplo 2:

int x = 0;

// lao infinito

// Um lao executado uma

do {

do {

vez

System.out.println(x);

System.out.println("hello");

do

x++;

} while(true);

System.out.println(hello);

} while (x<10);

while (false);

12.3. Declarao for


A declarao for, como nas declaraes anteriores, permite a execuo do mesmo
cdigo uma quantidade determinada de vezes. A

diferena que no for sempre

saberemos qual seu ponto de partida e de parada, o numero exato de vezes em que o
bloco de instrues ser executado.
A declarao for possui a seguinte forma:
for (declarao_inicial; expresso_lgica; salto)
{
instruo1;
instruo2;
...
}
onde:

declarao_inicial inicializa uma varivel para o lao


expresso_lgica compara a varivel do lao com um valor limite
salto atualiza a varivel do lao

Fluxograma da declarao for


Exemplo:
for (int i = 0; i < 10; i++)
{
System.out.print(i);
}
Neste exemplo, uma varivel i, do tipo int, inicializada com o valor zero. A expresso
lgica "i menor que 10" avaliada. Se for verdadeira, ento a instruo dentro do lao
executada. Aps isso, a expresso i ter seu valor adicionado em 1 e, novamente, a
condio lgica ser avaliada. Este processo continuar at que a condio lgica tenha o
valor falso.

13. Declaraes de Interrupo

Declaraes de interrupo permitem que redirecionemos o fluxo de controle do


programa. A linguagem Java possui trs declaraes de interrupo. So elas: break,
continue e return.

13.1. Declarao break


A declarao break possui duas formas: unlabeled (no identificada - vimos esta
forma com a declarao switch) e labeled (identificada).
13.1.1. Declarao unlabeled break
A forma unlabeled de uma declarao break encerra a execuo de um switch e o
fluxo de controle transferido imediatamente para o final deste. Podemos tambm utilizar
a forma para terminar declaraes for, while ou do-while.
Por Exemplo:
for (int i=0; i < 100; i++) {
System.out.println(i);
if ( i == 50)
break;
}
13.1.2. Declarao labeled break
A forma labeled de uma declarao break encerra o processamento de um lao
que identificado por um label especificado na declarao break.
Um label, em linguagem Java, definido colocando-se um nome seguido de dois-pontos,
como por exemplo:
parada:
esta linha indica que temos um label com o nome parada.
Por exemplo:
parada: for (int i=1; i <= 12; i++) {
for (int j = 1;j <= 30;j++){

System.out.println(j+" / "+i);
if ( j == 15)
break parada;
}
}
O programa acima possui dois laos, o primeiro vai de 1 a 12 e o segundo de 1 a 30..
Quando o segundo lao chega no valor 15, o dois param de ser executados. Isso porque
um labeled break termina a execuo do lao interno e retorna o controle para o lao
mais externo, que por sua vez interrompido pelo label parada.
Obs.: Para notar a diferena entre unlabeled break e labeled break execute o cdigo de
programa acima, note o resultado, e depois execute o cdigo abaixo:
for (int i=1; i <= 12; i++) {
for (int j = 1;j <= 30;j++){
System.out.println(j+" / "+i);
if ( j == 15)
break;
}
}
13.2. Declarao continue
Assim como a declarao break, a declarao continue tambm pode ser
unlabeled e labeled. Utilizamos uma declarao continue para saltar a repetio atual de
declaraes for, while ou do-while.
13.2.1. Declarao unlabeled continue
A forma unlabeled salta as instrues restantes de um lao e avalia novamente a
expresso lgica que o controla.
Por exemplo:
for (int i=1; i <= 12; i++) {
for (int j = 1;j <= 30;j++){

System.out.println(j+" / "+i);
if ( j == 15)
continue ;
}
}
13.2.2. Declarao labeled continue
A forma labeled da declarao continue interrompe a repetio atual de um lao e
salta para a repetio exterior marcada com o label indicado.
looping1: for (int i=1; i <= 12; i++) {
for (int j = 1;j <= 30;j++){
System.out.println(j+" / "+i);
if ( j == 15)
continue looping1;
}
}
Neste exemplo, os numero de 16 a 30 nunca sero mostrados, pois a declarao
continue looping1;
interromper este lao cada vez que j atingir o valor 15 do lao interno.
13.3. Declarao return
A declarao return utilizada para sair de um mtodo. O fluxo de controle retorna
para a declarao que segue a chamada do mtodo original. A declarao de retorno
possui dois modos: o que retorna um valor e o que no retorna nada.
Para retornar um valor, escreva o valor (ou uma expresso que calcula este valor) depois
da palavra chave return.
Por exemplo:
return ++count;
ou
return "Hello";

Os dados so processados e o valor devolvido de acordo com o tipo de dado do mtodo.


Quando um mtodo no tem valor de retorno, deve ser declarado como void. Use a forma
de return que no devolve um valor.
Por exemplo:
return;
Obs.: Abordaremos melhor as declaraes return mais adiante, quando falarmos sobre
mtodos.
14.

Array
At o presente momento, discutimos como declarar diferentes variveis usando os

tipos de dados primitivos. Na declarao de variveis, freqentemente utilizamos um


identificador / nome e um tipo de dados. Para se utilizar uma varivel, deve-se cham-la
pelo nome que a identifica.
Por exemplo, temos trs variveis do tipo int com diferentes identificadores para cada
varivel:
int numero1 = 1;
int numero2 = 2;
int numero3 = 3;
Como se v, inicializar e utilizar variveis pode torna-se uma tarefa tediosa, especialmente
se elas forem utilizadas para o mesmo objetivo. Em Java, como em qualquer outra
linguagem de programao, pode-se utilizar uma varivel para armazenar e manipular
uma lista de dados com maior eficincia. Este tipo de varivel chamado de array ou
vetor.
O array, nada mais , do que uma nica varivel, com um nico nome, porem,
capaz de armazenar N valores (de mesmo tipo). Por exemplo:

Exemplo de um array de inteiros


Um array armazena mltiplos itens de um mesmo tipo de dado em um bloco
contnuo de memria, dividindo-o em certa quantidade de posies. Imagine um array
como uma varivel esticada que tem um nome que a identifica e que pode conter mais
de um valor para esta mesma varivel. como se fosse um edifcio, onde: Nmeros o
nome do edifcio;

0, 1, 2, 3 so os nmeros dos apartamentos; e 23, 99, 38, 55 so os

moradores do edifcio.
14.1. Declarando, criando e atribuindo valores a um Array
O array precisa ser declarado, como qualquer varivel. Para declar-lo, defina seu
tipo de dados, seguido por colchetes [ ] e pelo nome que o identifica. Por exemplo:
int [ ] numeros;
ou colocando os colchetes depois do identificador. Por exemplo:
int numeros [ ];
Depois de declarar, precisamos criar o array e especificar seu tamanho. Este processo
chamado de construo (a palavra, em orientao a objetos, para a criao de objetos).
Para se construir um objeto, precisamos utilizar um construtor. Por exemplo:
int numeros[ ];

// Declarao

numeros = new int[100];


ou, simplesmente:

// Construo

int numeros[ ] = new int[100];

// Declarao e Construo

No exemplo, a declarao diz ao compilador Java que o identificador numeros ser usado
como um nome de um array contendo inteiros, usado para criar, ou construir, um novo
array contendo 100 elementos. Em vez de utilizar uma nova linha de instruo para
construir um array, tambm possvel automaticamente declarar, construir e adicionar
um valor uma nica vez.
Outros Exemplos:
// criando um array de valores lgicos em uma varivel
// resultado. Este array contm 4 elementos que so
// inicializados com os valores {true, false, true, false}
boolean resultado[ ] ={ true, false, true, false };
// criando um array de 4 variveis double inicializados
// com os valores {100, 90, 80, 75};
double [ ]numeros = {100, 90, 80, 75};
// criando um array de Strings com identificador days e
// tambm j inicializado. Este array contm 7 elementos
String dias[ ] = {"Segunda","Tera","Quarta","Quinta","Sexta","Sabado","Domingo"};
Uma vez que tenha sido inicializado, o tamanho de um array no pode ser modificado,
pois armazenado em um bloco contnuo de memria.
14.2. Acessando um elemento do Array
Para acessar um elemento do array, ou parte de um array, utiliza-se um nmero
inteiro chamado de ndice(Posio). Um ndice atribudo para cada membro de um

array, permitindo ao programa e ao programador acessar os valores individualmente


quando necessrio. Os nmeros dos ndices so sempre inteiros. Eles comeam com
zero e progridem seqencialmente por todas as posies at o fim do array. Lembre-se
que os elementos dentro do array possuem ndice de 0 a tamanhoDoArray-1.
Por exemplo, dado o array numeros que declaramos anteriormente, temos:
// atribuir 10 ao primeiro elemento do array
numeros[0] = 10;
// imprimir o ltimo elemento do array
System.out.print(numeros[99]);
Obs: Uma vez declarado e construdo, o array ter o valor de cada membro inicializado
automaticamente de acordo com seu tipo de dado conforme a seguinte tabela:
Tipo primitivo
boolean
byte, short e int
char
long
float
double

Iniciado com
false
0
'\u0000'
0L
0.0F
0.0

Valor de inicializao automatica para os tipos primitivos


Entretanto, tipos de dados por referncia, como as Strings, no sero inicializados
caracteres em branco ou com uma string vazia "", sero inicializados com o valor null.
O cdigo abaixo utiliza uma declarao for para mostrar todos os elementos de um array.
for (int i = 0; i < 99; i++) {
System.out.print ( numeros [ i ] ); }
14.3. Tamanho de Array

Para se obter a quantidade de posies de um array, pode-se utilizar o atributo


length. O atributo length de um array retorna seu tamanho, ou seja, a quantidade de
elementos. Utilizado como no cdigo abaixo:
nomeArray.length

Por exemplo, dado o cdigo anterior, podemos reescrev-lo como:


for (int i = 0; i < numeros.length; i++)

System.out.print( numeros [ i ] ); }
Dicas de programao:
1. Quando criar laos com for para o processamento de um array, utilize o campo length
como argumento da expresso lgica. Isto ir permitir ao lao ajustar-se,
automaticamente para tamanhos de diferentes arrays.
2. Declare o tamanho dos arrays utilizando variveis do tipo constante para facilitar
alteraes posteriores. Por exemplo:
final int tamanhoArray = 1000;
...........

//

declarando uma constante

int [ ] numeros = new int [ tamanhoArray ];


Introduo
14.4. Arrays Multidimensionais
Arrays multidimensionais so implementados como arrays dentro de arrays. So
declarados ao atribuir um novo conjunto de colchetes depois do nome do array. Por
exemplo:
// array inteiro de 3 x 5 elementos
String [ ][ ] nomes = new String [3] [5];

Carregando um array multidimensional:


nomes[ ][ ] = {{ Joo, Jos, Maria, Marcos, Josiane },
{ Ana , Paulo, Carlos, Mariana, Gustavo},
{ Pedro, Valeria, Amanda, Andr, Henrique }};
nomes
Joo
Ana
Pedro

Jos
Paulo
Valeria

Maria
Carlos
Amanda

Marcos
Mariana
Andr

Josiane
Gustavo
Henrique

Acessar um elemento em um array multidimensional semelhante a acessar elementos


em um array de uma dimenso. Por exemplo, para acessar o primeiro elemento da
primeira linha do array nomes, escreve-se nomes [2] [3]; Por exemplo:
System.out.print(nomes[2][3]);
Isso mostrar a String "Carlos" na sada padro. Caso queira mostrar todos os elementos
deste array, escreve-se:
for (int i = 0; i < nomes.length; i++) {
for (int j = 0; j < nomes[ i ].length; j++) {
System.out.print( nomes [ i ][ j ] + " ");
}
}

Outros exemplos:
// array de caracteres de 8 x 16 x 24
char [ ][ ][ ] Letras = new char [8] [16] [24];

Siglas
CEO - a sigla da expresso inglesa Chief Executive Officer e designa o mais alto
cargo executivo de uma organizao