Post on 14-Apr-2017
Módulo IIIOs Fundamentos I
Francisco Souza
Márcio de Paula
Tipos de Dados
Primitivos
São tipos de dados que representam tipos básicos da linguagem.
Não são objetos!
Project MARK - Orientação a Obejtos com Java 2
Exemplo 01
Project MARK - Orientação a Obejtos com Java 3
char boolean byte short
int long double float
Exemplo 01
Project MARK - Orientação a Obejtos com Java 4
byte 8 bits
short 16 bits float 32 bits
int 32 bits double 64 bits
long 64 bits
Exemplo 01
Project MARK - Orientação a Obejtos com Java 5
byte 27 − 1
short 215 − 1
int 231 − 1
long 263 − 1
Tipos de Dados
Referencial
Todo e qualquer tipo de classe criada em Java.
Project MARK - Orientação a Obejtos com Java 6
Exemplo 02
Object
Scanner
Integer
String
ArrayList
Project MARK - Orientação a Obejtos com Java 7
Tipos de Dados
Conversão de Tipos
Em Java, um tipo pode ser convertido em outro.
Devem ser compatíveis.
Project MARK - Orientação a Obejtos com Java 8
Exemplo 03
byte → int → long
byte → float → double
Project MARK - Orientação a Obejtos com Java 9
Fonte de Bugs
Conversão de Tipos
Deve-se ter muito cuidado ao se converter tipos de maior precisão para tipos de menor precisão.
Perda de informação.
Project MARK - Orientação a Obejtos com Java 10
Exemplo 04
long → int → short
float → int
Project MARK - Orientação a Obejtos com Java 11
Variáveis
O que são variáveis?
“São abstrações de endereços de memória, onde valores absolutos (ou referências para outras posições de memória) são armazenadas.”
Project MARK - Orientação a Obejtos com Java 12
Exemplo 05
int code = 44;
Project MARK - Orientação a Obejtos com Java 13
44
0x0021String name = “Francis”;
Literais
Conceito
Simplesmente falando, são representações de dados dentro do código-fonte.
Project MARK - Orientação a Obejtos com Java 14
Literais
Booleanos e Lógicos
Valores true ou false.
Variáveis booleanas ou expressões lógicas
Project MARK - Orientação a Obejtos com Java 15
Literais
Inteiros
Representam números inteiros e podem ser de natureza octal, decimal ou hexadecimal.
Project MARK - Orientação a Obejtos com Java 16
Exemplo 06
int code = 44;
Project MARK - Orientação a Obejtos com Java 17
int codeHex = 0x2C;
int codeOctal = 054;
Literais
Fracionários
Representam números racionais. A parte inteira e fracionária são separadas por um ponto [ . ]
Project MARK - Orientação a Obejtos com Java 18
Exemplo 07
Project MARK - Orientação a Obejtos com Java 19
float goldenRatio = 1.618f;
double half = 0.5d;
Literais
Strings e Caracteres
Strings são cadeias de caracteres inseridos entre “ ”.
Símbolo alfanumérico entre ‘ ’.
Project MARK - Orientação a Obejtos com Java 20
Exemplo 08
Project MARK - Orientação a Obejtos com Java 21
char letter = ‘z’;
String str = “hello”;
Literais
Nulo
Representa um objeto nulo, ou seja a variável não é capaz de apontar para uma região de memória válida.
Project MARK - Orientação a Obejtos com Java 22
Exemplo 09
Project MARK - Orientação a Obejtos com Java 23
Object obj = null;
Tipos de Variáveis
Variáveis Finais
Variável a que só pode se realizar uma única operação de atribuição.
Project MARK - Orientação a Obejtos com Java 24
Exemplo 10
Project MARK - Orientação a Obejtos com Java 25
final float altura = 1.68f;
altura = 1.80f;
Exemplo 10
Project MARK - Orientação a Obejtos com Java 26
final float altura = 1.68f;
altura = 1.80f;
Exemplo 11
Project MARK - Orientação a Obejtos com Java 27
final Person another = new Person();
me = another;
final Person me = new Person();
Exemplo 11
Project MARK - Orientação a Obejtos com Java 28
final Person another = new Person();
me = another;
final Person me = new Person();
Exemplo 12
Project MARK - Orientação a Obejtos com Java 29
final Person me = new Person();
me.setName(“Francis”);
Tipos de Variáveis
Variáveis Transientes
A variável será ignorada pela JVM, quando for necessário persistir o estado do objeto na memória.
Project MARK - Orientação a Obejtos com Java 30
Tipos de Variáveis
Variáveis Transientes
Utiliza-se a palavra reservada transient.
Usada somente para atributos da classe.
Project MARK - Orientação a Obejtos com Java 31
Exemplo 13
class User {
String name;
String email;
String password;
transient int loginCounter;
...
}Project MARK - Orientação a Obejtos com Java 32
Tipos de Variáveis
Variáveis Estáticas
Independentes da instanciação de um objeto.
Todas as instâncias compartilham o mesmo valor.
Project MARK - Orientação a Obejtos com Java 33
Tipos de Variáveis
Variáveis Estáticas
Utilizada na definição de atributos de uma classe.
Utiliza-se a palavra reservada static.
Project MARK - Orientação a Obejtos com Java 34
Exemplo 14
class Foo {
static int fooCount;
...
}
Project MARK - Orientação a Obejtos com Java 35
Tipos de Variáveis
Constantes
static + final
Project MARK - Orientação a Obejtos com Java 36
Exemplo 15
class Bar {
static final int BAR_SECRET = 0x4E00B7;
...
}
Project MARK - Orientação a Obejtos com Java 37
Fonte de Bugs
Variáveis Sombreadas
Acontece quando uma variável local é declarada com mesmo nome de um atributo.
Project MARK - Orientação a Obejtos com Java 38
Exemplo 16
class Foo {
int size;
public void setSize(int size) {
size = size;
}
}Project MARK - Orientação a Obejtos com Java 39
Exemplo 16
class Foo {
int size;
public void setSize(int size) {
this.size = size;
}
}Project MARK - Orientação a Obejtos com Java 40
Operadores em Java
Operadores Aritméticos
Quatro operações
+ - * /
Project MARK - Orientação a Obejtos com Java 41
Exemplo 17
int sum = 23 + 9;
int sub = 15 – 4;
int mul = 2 * 5;
float div = 12 / 6;
Project MARK - Orientação a Obejtos com Java 42
Operadores em Java
Operadores Aritméticos
Resto
%
Project MARK - Orientação a Obejtos com Java 43
Exemplo 18
int mod = 10 % 3;
Project MARK - Orientação a Obejtos com Java 44
Operadores em Java
Operadores de Atribuição
Project MARK - Orientação a Obejtos com Java 45
Operadores em Java
Operador de Atribuição
int size = 23;
String name = “Ykaro”;
Project MARK - Orientação a Obejtos com Java 46
Operadores em Java
Operadores Atribuição
++ += *= /=-- -= %=
Project MARK - Orientação a Obejtos com Java 47
Operadores em Java
Project MARK - Orientação a Obejtos com Java 48
a++ ++a a = a + 1
a-- --a a = a - 1
a += b a = a + b
a -= b a = a - b
a *= b a = a * b
a /= b a = a / b
a %= b a = a % b
Fonte de Bugs
Operadores Atribuição
Project MARK - Orientação a Obejtos com Java 49
++x --x
x++ x--
Exemplo 19
int x = 20;
int y = x++;
System.out.println(String.valueOf(x))
System.out.println(String.valueOf(y))
------------------------------------------
21
20Project MARK - Orientação a Obejtos com Java 50
Exemplo 20
int x = 20;
int y = ++x;
System.out.println(String.valueOf(x))
System.out.println(String.valueOf(y))
------------------------------------------
21
21Project MARK - Orientação a Obejtos com Java 51
Fonte de Bugs
Operadores Atribuição
Project MARK - Orientação a Obejtos com Java 52
++xPrimeiroincrementa, depois atribui.
x++Primeiro atribui,depois incrementa.
Operadores em Java
Operadores de Comparação
São operadores utilizados para a realização de comparações entre dois objetos.
Resultam em um valor booleano.
Project MARK - Orientação a Obejtos com Java 53
Operadores em Java
Operadores de Comparação
== != < ><= >=
Project MARK - Orientação a Obejtos com Java 54
Exemplo 21
System.out.println(String.valueOf(2 == 3))
System.out.println(String.valueOf(2 != 3))
------------------------------------------
true
false
Project MARK - Orientação a Obejtos com Java 55
Exemplo 22
System.out.println(String.valueOf(2 > 3))
System.out.println(String.valueOf(2 < 3))
------------------------------------------
false
true
Project MARK - Orientação a Obejtos com Java 56
Exemplo 23
System.out.println(String.valueOf(2 <= 3))
System.out.println(String.valueOf(2 >= 3))
------------------------------------------
true
false
Project MARK - Orientação a Obejtos com Java 57
Operadores em Java
Operadores Lógicos
São operadores destinados a valores booleanos
Curto-Circuitado
Não Curto-Circuitado
Negação
Project MARK - Orientação a Obejtos com Java 58
Operadores em Java
Operadores Lógicos Curto-Circuitados
“O segundo operando de uma expressão lógica só é avaliado se o primeiro não for suficiente para determinar o valor da expressão lógica.”
Project MARK - Orientação a Obejtos com Java 59
Operadores em Java
Operadores Lógicos Curto-Circuitados
&&||
Project MARK - Orientação a Obejtos com Java 60
Exemplo 24
boolean a = true;
boolean b = false;
//O valor de a não será checado.
boolean andResult = b && a
Project MARK - Orientação a Obejtos com Java 61
Exemplo 25
boolean a = true;
boolean b = false;
//O valor de b não será checado.
boolean orResult = a || b
Project MARK - Orientação a Obejtos com Java 62
Operadores em Java
Operadores Lógicos Não Curto-Circuitados
Funcionamento similar aos operadores && e ||.
Ambos os operandos são checados para se calcular o resultado da expressão.
Project MARK - Orientação a Obejtos com Java 63
Operadores em Java
Operadores Lógicos Não Curto-Circuitados
&|
Project MARK - Orientação a Obejtos com Java 64
Operadores em Java
Operadores Lógicos Não Curto-Circuitados
Nega um valor lógico.
Project MARK - Orientação a Obejtos com Java 65
Operadores em Java
Operador Lógico Negação
!
Project MARK - Orientação a Obejtos com Java 66
Exemplo 26
boolean a = true;
System.out.println(String.valueOf( !a ))
------------------------------------------
false
Project MARK - Orientação a Obejtos com Java 67
Operadores em Java
Operador Ternário
Usado para atribuições.
Não suporta blocos de código.
Project MARK - Orientação a Obejtos com Java 68
Operadores em Java
Operador Ternário
<exp> ? <caso_positivo> : <caso_negativo>
Project MARK - Orientação a Obejtos com Java 69
Exemplo 27
int a = 10;
int b = 12;
int maior = a > b ? a : b;
Project MARK - Orientação a Obejtos com Java 70