Escolar Documentos
Profissional Documentos
Cultura Documentos
Introdução ao Java
Sistemas Informáticos
[http://www.oracle.com/technetwork/java]
1
O meu 1º programa
LEB/LEF/MIEBIOM/MIEF
public class FirstProgram
{
public static void main(String[] args)
{
Sistemas Informáticos
System.out.print("Hello, 2 + 3 = ");
System.out.println(2 + 3);
System.out.println("Goodbye");
}
}
2
FirstProgram.java Nome do programa.
Deve ser igual ao nome
do ficheiro.
LEB/LEF/MIEBIOM/MIEF
public class FirstProgram
{
public static void main(String[] args)
{
Sistemas Informáticos
System.out.print("Hello, 2 + 3 = ");
System.out.println(2 + 3);
System.out.println("Goodbye");
}
}
Código do programa
(zona vermelha) 3
Compilação & Execução
LEB/LEF/MIEBIOM/MIEF
FirstProgram.java FirstProgram.class Saída:
Código Hello, 2 + 3 = 5
Java Correr
Fonte Compilar Goodbye
bytecode
Java javac java
Sistemas Informáticos
4
Uma solução mais amigável:
Eclipse IDE for Java Developers
LEB/LEF/MIEBIOM/MIEF
Sistemas Informáticos
5
Escrever no ecrã/consola
LEB/LEF/MIEBIOM/MIEF
System.out.print("Hello, 2 + 3 = "); Mostra uma String
System.out.println(2 + 3);
System.out.println("Goodbye"); Mostra o valor da soma
Sistemas Informáticos
• Com exceção de instruções especiais, cada instrução termina
com ponto e vírgula.
LEB/LEF/MIEBIOM/MIEF
Código Saída
System.out.println("hello"); hello
System.out.println("there"); there
Sistemas Informáticos
System.out.print("one "); one two three
System.out.print("two "); four five
System.out.println("three ");
System.out.print("four ");
System.out.println("five ");
7
Variáveis em Java
LEB/LEF/MIEBIOM/MIEF
• Java é uma linguagem estaticamente tipada à O tipo de
dados de cada variável deve ser definido explicitamente
Sistemas Informáticos
memória
LEB/LEF/MIEBIOM/MIEF
• Atribuição de um valor a uma variável: VariableName = expression;
• Esta instrução leva o computador a :
1) Calcular o valor da expressão
2) Armazene o novo valor na variável indicada, substituindo o valor anterior
Sistemas Informáticos
int alunos = 240; alunos 240
alunos = 210;
alunos = 210;
alunos 210 9
Exemplo
LEB/LEF/MIEBIOM/MIEF
Código:
float saldo;
float ganho;
float taxa;
Sistemas Informáticos
saldo = 1000;
taxa = 0.09;
ganho = taxa * saldo;
saldo = saldo + ganho;
LEB/LEF/MIEBIOM/MIEF
int n;
n = 10;
8 + 1 = n;
n + 1 = n;
Sistemas Informáticos
• O que está errado no Código anterior?
11
Atribuição de valores
LEB/LEF/MIEBIOM/MIEF
int n;
n = 10;
8 + 1 = n;
n + 1 = n;
Sistemas Informáticos
• O que está errado no Código anterior?
LEB/LEF/MIEBIOM/MIEF
• Para referenciar uma variável, use p seu identificador (nome).
O valor atual da variável é usado.
Sistemas Informáticos
public class VarExemplo
{
public static void main(String args[])
{
int alunos = 20;
System.out.println(alunos);
alunos = 10;
System.out.println(alunos);
}
}
13
Tipos de dados
LEB/LEF/MIEBIOM/MIEF
• Tipos básicos
• The Java language has eight predefined data types, often called
basic (primitive) data types
Sistemas Informáticos
Inteiros: byte, int, short, long
Reals: float, double
Caracter: char
Booleanos: boolean
14
Tipos de dados
LEB/LEF/MIEBIOM/MIEF
Tipo primitivo Tamanho (bit)
(Tamanho em bytes)
boolean 1
char 16 (2 byte)
Sistemas Informáticos
byte 8 (1 byte)
short 16 (2 byte)
int 32 (4 byte)
long 64 (8 byte)
float 32 (4 byte)
double 64 (8 byte)
15
Tipos de dados para inteiros
LEB/LEF/MIEBIOM/MIEF
Espaço
Tipo em Valor mínimo Valor máximo
memória
Sistemas Informáticos
byte 8 bit -128 127
short 16 bit -32768 32767
int 32 bit -2 147 483 648 2 147 483 647
long 64 bit -9 223 372 036 854 775 808 9 223 372 036 854 775 807
int inteiro = 5;
16
Tipos de dados para reais
LEB/LEF/MIEBIOM/MIEF
• Números de virgula flutuante
• Valores com parte fracionária
Espaço
Sistemas Informáticos
Tipo em Valor mínimo Valor máximo
memória
float 32bit -3.4 x 10^38 3.4 x 10^38
double 64bit -1.7 x 10^308 1.7 x 10^308
LEB/LEF/MIEBIOM/MIEF
• Exemplos: 0.09 -0.034 345.6 .00
Sistemas Informáticos
• 2.0e2 (200.0)
• -7.321e-3 (-0.007321)
18
Em Java double é assumido por
defeito
LEB/LEF/MIEBIOM/MIEF
• Uma constante de virgula flutuante é de precisão dupla por
padrão.
• Por examplo, o Código seguinte gera um erro de compilação:
• float rate = 0.09;
• Para forçar uma constante numérica a ser float em vez de
Sistemas Informáticos
double, use o sufixo f:
• float rate = 0.09f;
• Quais das seguintes constantes numéricas são aceitáveis em
código Java?
• 9,87
• 0
• 3.57*E2
• 3.57E+2 19
Tipo Boolean
LEB/LEF/MIEBIOM/MIEF
• Uma variável do tipo boolean só pode assumir um de dois
valores: true or false
Sistemas Informáticos
Espaço em
Tipo Valor
memória
boolean 1bit true ou false
LEB/LEF/MIEBIOM/MIEF
• Java usa um conjunto de caracteres chamado Unicode, que é
uma extensão do código ASCII.
Sistemas Informáticos
lina,…)
Espaço em
Tipo Valor
memória
char 16bit Any Unicode
LEB/LEF/MIEBIOM/MIEF
• Uma variável do tipo String pode conter uma cadeia de caracteres.
Sistemas Informáticos
• Strings são definidas entre aspas e podem ser concatenadas usando
o sinal +
LEB/LEF/MIEBIOM/MIEF
public class ExemploStrings
{
public static void main(String[] args)
{
System.out.println("ola!"); // prints ola!
Sistemas Informáticos
System.out.println(cumprimento); // prints ola!
23
Constantes em Java
LEB/LEF/MIEBIOM/MIEF
• Uma constante armazena um valor que não pode ser alterado.
• Exemplo:
final int MAX_STUDENTS = 300;
Sistemas Informáticos
24
Constantes em Java
LEB/LEF/MIEBIOM/MIEF
• Uma constante armazena um valor que não pode ser alterado.
• Exemplo:
final int MAX_STUDENTS = 300;
Sistemas Informáticos
• A constante MAX_STUDENTS com o valor 300 é declarada
LEB/LEF/MIEBIOM/MIEF
• Um comentário é uma observação/nota em um programa
para esclarecer algo a um leitor humano.
• Os comentários são ignorados pelo compilador.
• Duas maneiras de indicar comentários:
Sistemas Informáticos
• Double slash: tudo até o final da linha é ignorado.
• /* and */: tudo entre /* e */ é ignorado.
/* this is a comment 26
still a comment */
Expressões aritméticas em Java
LEB/LEF/MIEBIOM/MIEF
• Operadores: ( ) * / % + -
Exemplo: 5 * (2 + 3) + 7 = 32
Sistemas Informáticos
• O operador % retorna o resto da divisão:
• 13 % 4 à 1
• 8.6 % 2.0 à 0.6
27
Precedências
LEB/LEF/MIEBIOM/MIEF
• Regras usuais de precedência da aritmética (* e / têm
precedência maior que + e -)
Sistemas Informáticos
• Quando os operadores têm a mesma precedência, a
expressão deve ser avaliada da esquerda para a direita.
LEB/LEF/MIEBIOM/MIEF
• Regras usuais de precedência da aritmética (* e / têm
precedência maior que + e -)
Sistemas Informáticos
• Quando os operadores têm a mesma precedência, a
expressão deve ser avaliada da esquerda para a direita.
LEB/LEF/MIEBIOM/MIEF
• Como em outras linguagens o operador divisão (/) dá:
• Resultados inteiros se usado com operandos inteiros (exemplo: 7/4
dá 1)
• Resultados reais se pelo menos um dos operandos for real
(exemplo: 7.0/4 dá 1.75)
Sistemas Informáticos
• Para evitar isso, podemos usar um operador casting e converter um
número inteiro em double ou float, por exemplo.
double x;
x = 5 / 2; // x is 2.0
x = (float) 5 / 2; // x is 2.5
x = 5 / (double) 2; // x is 2.5
30
• Alternativamente, podemos multiplicar um dos operandos inteiros
por 1.0
Expressões Booleanas
LEB/LEF/MIEBIOM/MIEF
• São avaliadas como true ou false
Sistemas Informáticos
• < “menor que”
• <= “menor ou igual que”
• > “maior que”
• > = “maior ou igual que”
• == “igual a”
• ! = “diferente de”
• Exemplo:
• 5 > 6 à false 31
• 7 == 7 à true
Expressões Booleanas
LEB/LEF/MIEBIOM/MIEF
• Operadores lógicos
• ! NÃO (¬)
• && E (Ù)
Sistemas Informáticos
• || OU (Ú)
• Exemplos:
• (10 > 5) à true
• (10 > 5 && 3 != 3) à false
32
Operatores lógicos
LEB/LEF/MIEBIOM/MIEF
P Q !P P && Q P || Q
False False True False False
Sistemas Informáticos
False True True False True
True False False False True
True True False True True
33
Exemplo
LEB/LEF/MIEBIOM/MIEF
int a = 1;
int b = 4;
int c = 2;
boolean resultado = true;
resultado = (b * b) < (4 * a * c); Verdadeiro / Falso?
Sistemas Informáticos
• É possível imprimir o valor de um booleano!
System.out.println(resultado);
System.out.println(2 * 2 == 4); // ß Imprime true
34
Precedências
LEB/LEF/MIEBIOM/MIEF
Operador Descrição
Baixa precedência || Disjunção
&& Conjunção
Sistemas Informáticos
! Negação
<, <=, >, >=, !=, == Comparações
+, - Adição e Subtração
Produto, Divisão e Resto
*, /, %
da divisão
Alta precedência () Parêntesis
35
Operadores de Incremento e
Decremento
LEB/LEF/MIEBIOM/MIEF
• O operador de incremento (++) é uma forma abreviada de
aumentar uma variável em 1, por exemplo:
• c++; // equivalente a c = c + 1
• O operador de decremento (--) é uma forma abreviada de diminuir
uma variável em 1.
Sistemas Informáticos
• x--; // equivalente a x = x – 1
• Esses operadores podem ser usados para aumentar ou diminuir
antes ou depois do valor ser usado, por exemplo:
• a = b++;// copiar o valor de “b” para “a”, e depois incrementar “b”
• a = ++b;// incrementar b, e depois atribuir o valor de “b” a “a”
• ++ e -- have higher têm maior precedência que os operadores 36
aritméticos
Qual o resultado?
public class DataTypes
LEB/LEF/MIEBIOM/MIEF
{
public static void main(String[] args)
{
int j, k, m;
int d= 122;
j = d++; // j=122, d=123
System.out.println("j= " + j); //j=122
Sistemas Informáticos
k = ++d; //d=124, k=124
System.out.println("k= " + k); //k=124
m = --d; //d=123, m=123
System.out.println("m= " + m); //m=123
m = k % j; //m=124%122, =2
System.out.println("m= " + m);
j = 5;
k = 3;
m = j/k; //m=5/3, =1
37
System.out.println("m= " + m);
}
}
Incremento/Decremento (2)
LEB/LEF/MIEBIOM/MIEF
• O operador de incremento (++) é uma forma abreviada de
aumentar uma variável em 1, de outra forma:
• x+=1; // igual a x = x + 1 ou x++
• O operador de decremento (--) é uma forma abreviada de
Sistemas Informáticos
diminuir uma variável em 1, de outra forma:
• x-=1; // igual a c = c - 1 or c--
• Forma geral:
• x+=y
• x-=y
38
Mais em …
LEB/LEF/MIEBIOM/MIEF
• The Java Tutorials – Language Basics
• http://docs.oracle.com/javase/tutorial/java/nutsandbolts/index.html
Sistemas Informáticos
39