A Tecnologia Java
1
Introdução à linguagem

Origens do JAVA

Projecto “Green”, programação para a electrónica de
Consumo (Dezembro 1990):





Primeira abordagem: Em C++




Pouca memória disponível
Processadores fracos
Arquitecturas muito diferentes
Baixos requisitos computacionais
a linguagem era inadequada
demasiada complexa
não era multi-plataforma
Segunda abordagem: Criar uma nova linguagem multiplataforma com o melhor do C++, mas mais simples.

Nasceu o OAK.
2
Introdução à Linguagem
(cont.)


O projecto foi um fracasso, a electrónica de consumo não
precisava de algo tão sofisticado.
Primeiros anos da WWW



Páginas estáticas
todos os programas eram corridos no lado do servidor.
Massificação da WWW


correr os programas do lado do cliente
Problemas:




Diversos tipos de máquinas ligados á rede
Problemas de segurança
Independente da plataforma
A Sun viu a oportunidade e adaptou o OAK à WWW

Surgiu assim o JAVA (1995).
3
Arquitectura Java
Write once,
Run anywhere !
4
Arquitectura JAVA (cont.)

Independente da arquitectura computacional


Simples e Poderosa:


portável
Derivada do C++
Segura:

Não existem chamadas directas ao SO



para esse feito usa-se o Java Native Interface (JNI)
Não existem ponteiros explícitos
Robusta:

Gestão automática de memoria.
5
Arquitectura JAVA (cont.)

Orientada a Objectos:


Linguagem Orientada a Objectos pura
(quase…).
Multitarefa

Permite fazer coisas diferentes ao mesmo
tempo (Threads)
6
Plataformas JAVA

J2ME – Java 2 Micro Edition


J2SE – Java 2 Standard Edition


Java para Paltops e Telemóveis
Java para desktops / workstations
J2EE - Java 2 Enterprise Edition

Java para servidores
7
8
Linguagem Java
9
Hello World
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World");
}
}

Todo o código é escrito dentro de classes


Uma Classe Executável (Main Class) tem o método


Class HelloWorld
public static void main(String[] args)
System.out.println

Escrita de mensagens no monitor
10
Executar um programa

Compilar o programa

Java compiler (javac)

Javac HelloWorld.java


HelloWorld.class
Correr o programa

Java Virtual Machine (java)

Java HelloWorld

“ola mundo”
11
Definição da linguagem
12
Tipos de dados básicos

Números Inteiros:

byte – 8 bits,


short – 16 bits


float – 32 bits


-3.40292347E+38 a +3.40292347E+38
double – 64 bits

-1.79769313486231570E+308 a +1.79769313486231570E+308
Caracteres:

char – 16 bits


-9.223.372.036.854.775.808 a 9.223.372.036.854.775.807
Números Reais:


-2.147.483.648 a 2.147.483.647
long – 64 bits,


-32.768 a 32.767
int – 32 bits


128 a 127
'\u0000' a '\uFFFF' (Valores em unicode)
Booleanos:

boolean – 1 bit

true ou false
13
Operadores

Aritméticos:






+ Adição
- Subtracção
* Multiplicação
/ Divisão
% Resto da Divisão
Comparação:







Atribuição:



= Atribuição
+= , -= , *= , /= , %=
Lógicos:




Incremento e Decremento:

++ , --

== igualdade
!= diferença
< menor que
> maior que
<= menor ou igual
>= maior ou igual
&& ( e )
|| ( ou )
! (não)
Bit a bit


>> , <<
&|^
14
Precedência e Associatividade
dos Operadores
Prioridade Operador
Associatividade
Alta
()
da esquerda para a direita
++ -- + - !
unários; da direita para a esquerda
*/%
da esquerda para a direita
+-
da esquerda para a direita
< <= > >=
da esquerda para a direita
== !=
da esquerda para a direita
&
da esquerda para a direita
^
da esquerda para a direita
|
da esquerda para a direita
&&
da esquerda para a direita
||
da esquerda para a direita
Baixa
= += -= *= /= %= da direita para a esquerda
15
Símbolos – declaração e
inicialização

Exemplos de declarações de variáveis:














int x;
int x = 10;
int x = 20, y, z = 30;
int a = x+y;
char um = ‘1’;
char c = ‘A’;
char newline = ‘\n’;
boolean fim;
boolean fechado = true;
long diametro;
long raio = -1.7E+5
double j = .000000123
double pi = 3.141559273269
Caso Geral


id_tipo id_variavel [ = valor ];
id_tipo id_variavel [ = valor ] , [id_variavel [ = valor ] … ];
16
Simbolos (cont.)

Constantes:
final id_tipo id_variavel
= valor [, id_variavel [ = valor ] … ];
NOTA: As constantes têm de ser inicializadas quando são declaradas

final double PI = 3.14;

Conversões entre tipos (Casting):
int x = 12;
double d;
d = (double) x; // d = 12.0
double x = 12;
int i;
i = (int) x;
// i = 12
double x = 12.5;
int i;
i = (int) x;
// i = 12
char c1 = ‘a’
c1 = (char) ((int) c1 + 1) // c1 = ‘b’
17
Funções matemáticas

Biblioteca

Java.lang.Math

double s = java.lang.math.sin(3.14)


Seno de PI
double r = java.lang.math.random()

Aleatorio ente 0..1
18
Input / output

Output




System.out.println(“mensagem”)
System.out.print(“mensagem”)
JOptionPane.showMessageDialog(null,"Este é um diálogo simples");
Input



System.in.read();
JOptionPane.showInputDialog("Digite o seu nome");
Teclado.java





readInteger()
readLong()
readDouble()
readFloat()
readString();
int i;
i = Teclado.readInteger()
19
Comentários

Comentar uma linha de código: //
int x;
//int x = 10;
int x = 20, y, z = 30;
int a = x+y;

Comentar um bloco de código: /* */
int x;
/*int x = 10;
int x = 20, y, z = 30;*/
int a = x+y;
20
Estruturas de Controlo

Condicionais:

if/else
if (numer %2 == 0)
System.out.println(“numero par”);
else
System.out.println(“numero impar”);
if ( expressão booleana)
instruções;
[else
instruções;]
21
Estruturas de Controlo (cont.)

switch
switch (expressão inteira) {
case valor_1: instruções; break;
case valor_2: instruções; break;
case valor_3: instruções; break;
…
case valor_n: instruções; break;
default: instruções;
};
switch (mes) {
case 2: dias = 28;
break;
case 4:
case 6:
case 9:
case 11: dias = 30;
break;
default: dias = 31;
}
22
Estruturas de Controlo (cont.)

Repetitivas:

for ( inicialização; condição_de_saída; iteração )
instruções
int a = 0;
for (int i = 0; i <= 10; i++)
a = a + i;
23
Estruturas de Controlo (cont.)

while
while ( condição_de_iteração ) {
instruções
}
int a = 0;
int i = 0;
while (i <= 10) {
a = a + i;
i++;
}
24
Estruturas de Controlo (cont.)

do/while
do {
instruções
} while ( condição_de_iteração ) ;
int a = 0;
int i = 0;
do {
a = a + i;
i++;
} while (i < 10);
25
Estruturas de Controlo (cont.)

break/continue


A instrução
break força a
saída do ciclo.
A instrução
continue
avança para a
proxima iteração
do cliclo.
26
Estruturas de Controlo (cont.)
int i = 0;
While (true) {
i++;
if (i % 2 == 0 )
continue;
if (i > 10)
break;
System.out.print(i);
}
27
Exercício


Construa um programa que imprima
seis números inteiros, aleatórios entre 1
e 49.
Construa um programa que solicite ao
utilizador dois números inteiros, um
operador e apresente o resultado do
operador sobre os dois números
28
Referencias
29
Referencia e objectos

Objectos


Exemplo






(todas os simbolos que não são do tipo básico)
Point p1;
p1 = new Point();
Point P2;
P2 = p1;
Point p3 = new Point(1,2);
p2
p1
p3
0,0
Operadores




new
=
==
!=
Todas as variaveis de tipos primitivos contêm valores
Todas as variaveis do tipo “Object” contêm referência
1,2
30
Garbage Collector

Em C++:
// Cria um objecto
TObject *Objecto = new TObject;
…
// Liberta o espaço ocupado em memória
// ocupado por esse objecto
delete Objecto;

Em Java:
// Cria um objecto
Object Objecto = new Object();
…

Chamar o Garbage Collector:
System.gc();
31
Garbage Collector (Cont.)
public void Cria() {
Object Objecto1 = new Object();
Object Objecto2 = new Object();
Object Objecto3 = new Object();
}
Objecto1
Objecto2
Objecto3
Objecto1
Objecto2
Objecto3
public void Funcao() {
Cria();
System.gc();
}
A linguagem Java possui recolha
automática de Lixo
System.gc()
Forçar a recolha de Lixo
32
Métodos
public [static] <tipo_retorno> nome_método ( <lista_parametros> )
{
instruções;
}
public class HelloWorld {
public static void mostraMensagem(String s) {
System.out.println(s)
}
public static int soma(int n1, int n2) {
int n = n1+n2;
return n;
}
public static void main(String[] args) {
mostraMensagem ("Hello Word");
System.out.println(soma(2,3));
}
}
NOTA:
• Todos os parâmetros do
tipo básico são passados
por valor
•Todos os objectos são
passados com referencia
33
Strings
34
Strings

Classe String

Objectos imutaveis



s1
String s1 = “uma string”
String s2 = “Outra string”
String s3 =s2
Uma string
s2
Outra string
s3
35
Strings - concatenação

Operador de concatenação

+ e +=




String s1 = “uma string”
String s2 = “Outra string”
String s3 =s2
S2 += “ concatenada” + “!”
s2
s1
Uma string
s2
Outra string Concatenada!
Outra string
s3
36
Conversão entre numeros e
string

Para String

Classe StringValueOf(…)


Expressões que calculam Strings



String s = String.valueOf(10);
String s = 2 + “”
String s = 2 + 3 + “!”
De String

Classe Integer


int i = Integer.parseInt("2");
Classe Double

double i = Double.parseDouble(“1.7");
37
Métodos de String







lenght()
equals()
equalsToIgnoreCase
compareTo
compareToIgnoreCase
indexOf
hashCode()









substring()
startsWith()
endsWith()
toUpperCase()
toLowerCase()
replace()
concat
charAt()
trim
String.java
38
Exercício



Construa um programa que solicite o nome e
o apelido de uma pessoa e de seguida
escreva o nome completo de forma invertida.
Construa uma função que transforme uma
string para minúsculas utilizando o alfabeto
português.
Construa um programa que solicite ao
utilizador um número real, uma função
apresente o resultado da função sobre o
numero
39
Arrays
40
Arrays

São objectos

Declaração


Int [] v2 = { 1,2,3,4};
Método lenght()


v1 = new int[9];
0 0 0
0 0 0
0 0 0
Inicialização


int [] v1
Construção


v1
1 2 3
v2
Retorna a dimensão do array
Acesso indexado

V[0] = 10
41
Arrays

Arrays Unidimensionais
int[] lista = {1, 2, 3, 4};
lista[3] = lista[1]; // {1, 2, 3, 1}
int lista[] = new int[4];
lista[0] = 1;
lista[1] = 2;
int lista[4];
// erro
int lista[4] = {1, 2, 3, 4}; // erro
int lista[];
lista[0] = 1;
// erro
42
Arrays (cont.)
Arrays Bidimensionais (matrizes)

char galo[][]={{‘ ’,‘ ’,‘ ’},
{‘ ’,‘ ’,‘ ’},
{‘ ’,‘ ’,‘ ’}};
galo[1][1]=‘X’; // {{‘ ’,‘ ’,‘ ’},
// {‘ ’,‘X’,‘ ’},
// {‘ ’,‘ ’,‘ ’}}
galo[0][0]=‘O’; // {{‘O’,‘ ’,‘ ’},
{‘ ’,‘X’,‘ ’},
{‘ ’,‘ ’,‘ ’}}

Arrays de dimensão n
int array[][][]…[n]= new int[10][10][10]…[10];
array[1][3][2]…[6] = 1;
43
Arrays (cont.)

Calcular o tamanho de um
array;
int a[] = new int[4];
System.out.println(a.length); // mostra 4
int a[][] = new int[4][2];
System.out.println(a.length); // mostra 4
System.out.println(a[1].length); // mostra 2
44
Exercício

Construa um programa que calcule
imprima uma chave de totoloto.
45
Download

ppt