1
A Tecnologia Java
2
Introdução à linguagem Origens do JAVA
Projecto “Green”, programação para a electrónica de Consumo (Dezembro 1990):
Pouca memória disponível Processadores fracos Arquitecturas muito diferentes Baixos requisitos computacionais
Primeira abordagem: Em C++ a linguagem era inadequada demasiada complexa não era multi-plataforma
Segunda abordagem: Criar uma nova linguagem multi-plataforma com o melhor do C++, mas mais simples.
Nasceu o OAK.
3
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).
4
Arquitectura Java
Write once,Run anywhere !
5
Arquitectura JAVA (cont.) Independente da arquitectura computacional
portável Simples e Poderosa:
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.
6
Arquitectura JAVA (cont.)
Orientada a Objectos: Linguagem Orientada a Objectos pura
(quase…).
Multitarefa Permite fazer coisas diferentes ao
mesmo tempo (Threads)
7
Plataformas JAVA
J2ME – Java 2 Micro Edition Java para Paltops e Telemóveis
J2SE – Java 2 Standard Edition Java para desktops / workstations
J2EE - Java 2 Enterprise Edition Java para servidores
8
9
Linguagem Java
10
Hello World
public class HelloWorld {public static void main(String[] args) {
System.out.println("Hello World");}
}
public class HelloWorld {public static void main(String[] args) {
System.out.println("Hello World");}
}
Todo o código é escrito dentro de classes Class HelloWorld
Uma Classe Executável (Main Class) tem o método public static void main(String[] args)
System.out.println Escrita de mensagens no monitor
11
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”
12
Definição da linguagem
13
Tipos de dados básicos Números Inteiros:
byte – 8 bits, 128 a 127
short – 16 bits -32.768 a 32.767
int – 32 bits -2.147.483.648 a 2.147.483.647
long – 64 bits, -9.223.372.036.854.775.808 a 9.223.372.036.854.775.807
Números Reais: float – 32 bits
-3.40292347E+38 a +3.40292347E+38 double – 64 bits
-1.79769313486231570E+308 a +1.79769313486231570E+308 Caracteres:
char – 16 bits '\u0000' a '\uFFFF' (Valores em unicode)
Booleanos: boolean – 1 bit
true ou false
14
Operadores Aritméticos:
+ Adição - Subtracção * Multiplicação / Divisão % Resto da Divisão
Atribuição: = Atribuição += , -= , *= , /= , %=
Incremento e Decremento:
++ , --
Comparação: == igualdade != diferença < menor que > maior que <= menor ou igual >= maior ou igual
Lógicos: && ( e ) || ( ou ) ! (não)
Bit a bit >> , << & | ^
15
Precedência e Associatividade dos OperadoresPrioridade
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
16
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 ] … ];
17
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’
18
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
19
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()
int i;i = Teclado.readInteger()
20
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;
21
Estruturas de Controlo
Condicionais: if/else
if ( expressão booleana) instruções; [else instruções;]
if (numer %2 == 0) System.out.println(“numero par”);else System.out.println(“numero impar”);
22
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;}
23
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;
24
Estruturas de Controlo (cont.)
whilewhile ( condição_de_iteração ) { instruções}
int a = 0;int i = 0;while (i <= 10) { a = a + i; i++;}
25
Estruturas de Controlo (cont.)
do/whiledo { instruções } while ( condição_de_iteração ) ;
int a = 0;int i = 0;do { a = a + i; i++;} while (i < 10);
26
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.
27
Estruturas de Controlo (cont.)
int i = 0;While (true) { i++; if (i % 2 == 0 ) continue; if (i > 10) break; System.out.print(i);}
28
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
29
Referencias
30
Referencia e objectos Objectos
(todas os simbolos que não são do tipo básico) Exemplo
Point p1; p1 = new Point(); Point P2; P2 = p1; Point p3 = new Point(1,2);
Operadores new = == !=
p1
0,0
p2
1,2
p3
Todas as variaveis de tipos primitivos contêm valoresTodas as variaveis do tipo “Object” contêm referência
Todas as variaveis de tipos primitivos contêm valoresTodas as variaveis do tipo “Object” contêm referência
31
Garbage Collector Em C++:
// Cria um objectoTObject *Objecto = new TObject;…// Liberta o espaço ocupado em memória// ocupado por esse objectodelete Objecto;
Em Java:// Cria um objectoObject Objecto = new Object();…
Chamar o Garbage Collector:System.gc();
32
Garbage Collector (Cont.)
public void Cria() { Object Objecto1 = new Object(); Object Objecto2 = new Object(); Object Objecto3 = new Object();}
public void Funcao() { Cria(); System.gc();}
Objecto1
Objecto2
Objecto3
Objecto1
Objecto2
Objecto3
A linguagem Java possui recolha automática de Lixo
A linguagem Java possui recolha automática de Lixo
System.gc() Forçar a recolha de Lixo
System.gc() Forçar a recolha de Lixo
33
Métodos
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));
}}
public [static] <tipo_retorno> nome_método ( <lista_parametros> ) { instruções;}
NOTA:
• Todos os parâmetros do tipo básico são passados por valor
•Todos os objectos são passados com referencia
34
Strings
35
Strings
Classe String Objectos imutaveis
String s1 = “uma string” String s2 = “Outra string” String s3 =s2
Uma strings1 Outra strings2 s3
36
Strings - concatenação Operador de concatenação
+ e += String s1 = “uma string” String s2 = “Outra string” String s3 =s2 S2 += “ concatenada” + “!”
Uma strings1 Outra strings2 s3
Outra string Concatenada!s2
37
Conversão entre numeros e string
Para String Classe String ValueOf(…)
String s = String.valueOf(10); Expressões que calculam Strings
String s = 2 + “” String s = 2 + 3 + “!”
De String Classe Integer
int i = Integer.parseInt("2"); Classe Double
double i = Double.parseDouble(“1.7");
38
Métodos de String lenght() equals() equalsToIgnoreCase compareTo compareToIgnoreCase indexOf
hashCode()
substring() startsWith() endsWith() toUpperCase() toLowerCase() replace() concat charAt() trim
String.java
39
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
40
Arrays
41
Arrays São objectos
Declaração int [] v1
Construção v1 = new int[9];
Inicialização Int [] v2 = { 1,2,3,4};
Método lenght() Retorna a dimensão do array
Acesso indexado V[0] = 10
v1
0 0 0 0 0 0 0 0 0
1 2 3
v2
42
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
43
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;
44
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
45
Exercício
Construa um programa que calcule imprima uma chave de totoloto.
Top Related