Escolar Documentos
Profissional Documentos
Cultura Documentos
Afonso Alcantara
Seed Technology Solutions
1
1
Objetivos
Palavras-chaves
Tipos primitivos
Conversões implícitas e explícitas
Literais inteiros
Literais de ponto flutuante
Literais booleanos
Literais caracteres
Valores padrões
Método main
Best Practices
2
Palavras-chaves
São 49 palavras-chaves:
byte – short – char – int – long – float – double
boolean – public – protected – private
static – abstract – final – strictfp – transient
synchronized – native – void – class – interface
implements – extends – if – else – do – while – for
default – switch – case – break – continue
assert – const – goto – throws – throw
new – catch – try – finally – return
this – super – package – import – instanceof
volatile
3
Tipos primitivos
Temos 8 tipos primitivos em Java, de 8 bits a 64 bits e
literais, com e sem sinal.
byte – inteiro de 8 bits com sinal.
short – inteiro de 16 bits com sinal.
char – caracter UNICODE com 16 bits.
int – inteiro com 32 bits com sinal.
long – inteiro com 64 bits com sinal.
float – ponto flutuante com 32 bits com sinal.
double – ponto flutuante com 64 bits com sinal.
boolean – literal com true e false.
4
Tipos primitivos
Capacidade(Range) em bytes de cada tipo primitivo.
5
Tipos primitivos
Exemplo: um byte tem 8 bits, então primeiro bit é usado
para guardar o sinal, então sobraram 7 bits para
representar nosso número. Se convertermos o número
+125 para a representação binária, teremos 1111101 e
ficaria representado 01111101, com o zero indicando
que é um número positivo. Agora se convertermos o
número +128 para a representação binária, teremos
10000000, como esse número é composto por 8 bits,
então não é possível adicionar o bit do sinal e o número
+128 não está no intervalo do tipo byte.
6
Conversões implícitas e
explícitas
Conversão de tipos primitivos
Chamado também de Casting
Ex.:
public class Conversão {
public static void main(String[] args) {
int i = 10;
long l = 20;
l=i // perfeitamente possível
i = l; // não é possível
i = (int)l; // É por minha conta e risco!
//To fazendo um casting
}
}
7
Conversões implícitas e
explícitas
byte (8 bits) boolean (true\false)
short (16 bits) char(16bits)
int (32 bits)
long (64 bits)
float (32 bits)
double (64 bits)
Precisa de
Cast
double d= 128.0;
byte b=(byte)d; Qual o resultado ?
b= 100.4; Correto ?
8
8
Conversões implícitas e
explícitas
Vamos sempre ter em mente um exemplo para
diferenciar conversão implícita de explícita. Imagine um
copo com a capacidade de 100 mlts e você tem 300
mlts em uma lata.
Agora imagine que você quer colocar o conteúdo da
lata no copo. Com toda certeza você não vai colocar
tudo de uma vez.
Quando isso acontecer, devemos usar conversão
explícita, mas iremos perder dados, ou seja, o líquido
que restou na lata.
9
Literais inteiros
É um valor escrito no código fonte e identificado como
um tipo primitivo.
Podem ser de três tipos: octal, decimal e hexadecimal.
Ex.:
int x = 10; // literal inteiro
char u = 'k'; // literal char
boolean b = false; // literal boolean
double d = 9832.11; // literal double
10
10
Literais inteiros
Exemplo de literal inteiro em octal.
public class Octal {
public static void main(String[] args) {
int seis = 06; // idem ao decimal 6
int sete = 07; // idem ao decimal 7
int oito = 010; // idem ao decimal 8
int nove = 011; // idem ao decimal 9
}
}
11
11
Literais interios
Exemplo de literal inteiro em hexadecimal.
public class Hexadecimal {
public static void main(String[] args) {
int quinze = 0xF; // 15 (decimal)
int vinte_e_nove = 0x1D; // 29 (decimal)
int valor = 0xBAFAFA; // 12253946 (decimal)
int valor = 0XBaFaFa; // 12253946 (decimal)
}
}
12
12
Literais de ponto flutuante
É por padrão definido como double, 64 bits.
Tem um sufixo “f” para tipo float (obrigatório).
Tem um sufixo “d” para tipo double (padrão).
public class Teste {
public static void main(String[] args) {
double a = 9223372036854775807.0; // ok tipo
// double
float b = 2147483647; // ok tipo int para float
// conversão implicita
float c = 2147483647.0; // erro! double -> float
float d = (float)2147483647.0; // ok - conversão
float e = 2147483647.0f; // ok
}
}
13
13
14
14
Literais booleanos
Pode receber ser true ou false.
public class LitBoo {
public static void main(String[] args) {
boolean a = true; // ok
boolean b = false; // ok
boolean c = 1; // erro de compilacao
}
}
15
15
Literais caracteres
Um único caractere entre apóstrofo
public class Carac {
public static void main(String[] args) {
char a = 'a'; // ok
char b = '@'; // ok
char c = '\u004E'; // refere-se a letra N
}
}
16
16
Valores padrões
Para tipos numéricos o valor é “0”
Para tipos de ponto flutuante o valor é “0.0”
Para tipos booleanos o valor é “false”
Para tipos caracteres o valor é “\u0000” e tipos objetos
o valor é “null”
17
17
Método main
Sempre será primeiro chamado quando a classe for
executada.
Formas:
public static void main(String[] args) {} //Recomendado
static public void main(String[] args) {}
public static void main(String[] a) {}
public static void main(String [] a) {}
public static void main(String a[]) {}
public static void main(String a []) {}
18
18
Método main
public class Test {
public static void main(String[] args) {
System.out.println("Meu nome é:
"+args[0]+args[1]);
}
}
c:\>java Test Java Spirit
c:\>java Test “Java Spirit”
//arg[0] <---> Java Spirit
19
19
Método main
Meu Nome é: Java Spirit.
O método é static para que ele seja carregado por um
programa a JVM chamado ClassLoader.
Nele estão todos os métodos e atributos que não tem e
não devem ter referência na pilha de memória.
20
20
Javadoc - Documentação
Javadoc é um eficiente gerador de documentação para suas
classes
Geração de documentos através de comentários inseridos no código
fonte
Facilita verificar se cada método está de acordo com o que foi
especificado
Permite o entendimento imediato do que cada método se propõe a
fazer, sem necessidade de verificar a implementação
21
21
Javadoc - Documentação
Exemplo:
22
22
Javadoc - Documentação
Use corretamente os comentários Javadoc
Os comentários para javadoc devem sempre aparecer imediatamente
acima do método, classe ou atributo a que se referem.
Seja objetivo na primeira sentença da descrição. Ela será usada na
tabela de sumário gerada.
No caso de sobrecarga de métodos, use a primeira sentença de modo
a deixar clara a diferença entre um método e outro.
23
23
Javadoc - Documentação
As tags Javadoc devem aparecer nesta ordem:
@author (obrigatória em classes e interfaces)
@version (obrigatória em classes e interfaces)
@param
@return
@exception ou @throws
@see
@since
@serial
@deprecated
24
24
Javadoc - Documentação
Quando usar @deprecated ?
Usado para marcar classes e métodos que não devem mais ser
usados, mas que ainda são mantidos por motivos de compatibilidade
de versões.
Use com sabedoria, sempre sirva os usuários da classe com
substitutos para permitir a migração do código para uma nova versão.
Razões válidas para seu uso: existência de bugs, implementação
ineficiente, falta de segurança.
25
25
Best Practices Comuns
Evite concatenar Strings.
Usando o operador + criam-se novos objetos em memória,
prejudicando a performance.
Prefira usar StringBuffer.append no lugar de concatenar usando o
operador +.
26
26
Best Practices Comuns
Atenção à portabilidade!
Não confie sua lógica às prioridades de Threads, pois seu
funcionamento pode variar dependendo do sistema operacional.
Evite usar métodos nativos.
Sempre use layout managers quando montar uma GUI, pois
posicionamento absoluto difere de sistema para sistema.
Use sempre Properties ou XML(DOM ou SAX) para definir ítens como
caminhos para arquivos, caracteres de quebra de linha, etc.
27
27
Best Practices Comuns
Use o método main para testes
Mesmo que sua classe não necessite de um método main, você
pode usá-lo para fazer testes.
Testes individuais ajudam a verificar se a classe está realmente se
comportando como o esperado.
Após os testes, simplesmente mude seu escopo para private para
isolá-lo.
Usar ferramentas de teste é uma ótima idéia. Ferramentas como o
JUnit ajudam muito no desenvolvimento e debug.
28
28
Best Practices Comuns
Exemplo:
29
29
Exercícios
30
Exercício:
1) Crie um programa que faça conversões implícitas e explícitas com os
tipos int e long, float e double.
2) Crie um programa que imprima os valores padrões de quatro atributos
com os tipos int e long, float e double.
30
Sumário
Nesta lição você aprendeu:
Quais as palavras-chaves
Os tipos-primitivos
As conversões permitidas
caracteres
Quais os valores padrões
31
31