Escolar Documentos
Profissional Documentos
Cultura Documentos
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.
estatsticas
publicadas
constantemente
pelo
site
Tiobe
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
3.1. Para iniciar nossa aprendizagem vamos utilizar o JDK (Java SE Development
Kit):
3.1.1. Windows XP
- Feito isso d duplo clique no cone Sistema.
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
nosso
JDK,
que
normalmente
fica
no
Diretrio:
C:\Arquivos
de
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:
;%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:
}
Entendendo o programa:
public class OLA // Cria uma classe pblica chamada OLA (Nome do Programa)
{
}
}
// -
.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.
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
- Caracter:
- 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
- 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;
float
z = 2.718F;
// float
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
// Iniciando as Variveis
count++;
Operador
++
Uso
Cont++
Descrio
Incrementa Cont em 1; Avalia a expresso antes do
++Cont
--
Cont--
--
--Cont
++
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).
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:
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
X1
Verdadeiro
Verdadeiro
Falso
Falso
X2
Verdadeiro
Falso
Verdadeiro
Falso
Resultado
Falso
Verdadeiro
Verdadeiro
Falso
true
false
true
8.3.4. ! (negao)
X1
Verdadeiro
Falso
Resultado
Falso
Verdadeiro
{
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.
Mtodo
Finalidade
next()
nextInt()
nextByte()
nextLong()
nextFloat()
Byte
Short
Int
Byte.parseByte()
Short .parseShort()
Integer.parseInt()
Long
Float
Double
Long.parseLong()
Float.parseFloat()
Double.parseDouble()
}
}
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:
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
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.
}
else
{
if (expresso_lgica2)
{
instruo3;
instruo4;
}
else
{
instruo5;
instruo6;
}
}
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 ");
}
}
}
}
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.
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.
Exemplo 1:
Exemplo 2:
Exemplo 2:
int x = 0;
// lao infinito
do {
do {
vez
System.out.println(x);
System.out.println("hello");
do
x++;
} while(true);
System.out.println(hello);
} while (x<10);
while (false);
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:
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";
Array
At o presente momento, discutimos como declarar diferentes variveis usando 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
// Construo
// 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
Iniciado com
false
0
'\u0000'
0L
0.0F
0.0
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;
...........
//
Jos
Paulo
Valeria
Maria
Carlos
Amanda
Marcos
Mariana
Andr
Josiane
Gustavo
Henrique
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