Tipos Básicos de Dados
Prof. M.Sc. Ronnison Reges Vidal
Roteiro
Introdução
Declarando Variáveis
Tipos de Dados
Conversões entre Tipos
Constantes
Java – Orientação à Objetos
Introdução
Introdução
Sintaxe da linguagem
Formato de codificação da linguagem Java
Como códigos de computador devem ser escritas
Em um código-fonte Java, alguns símbolos são
utilizados pelo compilador para diferenciar
comandos, blocos de comandos, métodos, classes,
etc.
Introdução
Tais símbolos, chamados de delimitadores, são
enumerados abaixo:
Ponto e vírgula
Blocos
Espaços em branco
Em Java, todo comando é terminado por um ponto e
vírgula (;)
Exemplo: System.out.println("note o ponto e vírgula no
final");
Introdução
Um bloco é formado por um conjunto de instruções
delimitadas por chaves, como no exemplo abaixo:
/** Exemplo de bloco */
{
// Chamamos essa chave de início de bloco
int ano; // Note o ponto e vírgula
ano = 2002; // sempre ao final de um comando
Java
}
// Chamamos essa chave de final de bloco
Introdução
Comentários
Fundamentos de Programação: Comentários
É sempre interessante a colocação de comentários em
programas. Os comentários permitem que a
manutenção posterior do código seja mais rápida e
serve para indicar o que o programa faz. Os
comentários em java podem ser de dois tipos. Utiliza-se
de duas barras ( // ) em qualquer posição da linha. Tudo
o que aparecer à direita das duas barras será ignorado
pelo compilador.
Exemplo:
a++; //Incremento de variável
Introdução
Comentários
Fundamentos de Programação: Comentários
Existem ocasiões onde várias linhas de comentário são
necessárias. Nesse caso utilizamos os sinais de /* e */
para indicar início e fim de bloco de comentários, como
no compilador.
Exemplo:
/* Programa de Exemplo – Esse programa não faz nada
Criado por Ronnison Reges Vidal, para a aula de Linguagem de
Programação
Versão 1.0
*/
Introdução
O espaço em branco, quebra de linha e caracteres de
tabulação são permitidos em qualquer trecho do
código-fonte
Devendo ser utilizados para realçar o aspecto visual de
seu código
Apesar do aspecto visual do código-fonte não ter nenhum impacto no
desempenho de um programa Java, o uso de endentação é uma
característica de bons códigos-fonte. Lembre-se que você não será o único
a ler o código-fonte de seus programas, portanto escreva-o da maneira
mais organizada e legível possível.
Introdução
Identação inadequada
1
2
3
4
5
6
7
8
9
10
11
12
13
14
if (a< b) a++;
......................................
While(true) a+=a;
......................................
do{a+b; b+c; c++;}while (x != null);
......................................
If (y < x){
y+=x;
temp=y;
x=temp;
}
Introdução
Identação adequada
1
2
3
4
5
6
7
8
9
10
11
12
13
14
/* Testando Comentários
@author Ronnison
*/
public class TestDrive {
public static void main ( String[] args ) {
// Declaração de Variáveis
valor x;
Data aniversário;
String nome;
}
}
Introdução
Identificadores e Palavras-reservadas
um identificador é uma sequência de símbolos UNICODE
(64K símbolos) que começa com:
uma letra
um símbolo subscrito _
ou o caractere $
Os demais símbolos de um identificador podem conter
também números.
Identificadores são case-sensitive e não tem um
tamanho máximo estabelecido.
Introdução
Exemplo de identificadores válidos em Java:
? ? data
? ? _data
? ? $data
? ? data_do_mês
? ? data1
? ? uma_variável_pode_SER_bastante_extensa_e_conter_Numeros234876238476
? ? data_public_class_NoteQueEsseIdentificadorContemPalavrasReservadas
Introdução
Apesar desta "liberdade" de opções para nomes de
identificadores, algumas palavras não são permitidas.
palavras reservadas
Representam o conjunto de comandos que forma a
sintaxe da linguagem Java
Introdução
O conjunto de palavras reservadas em Java é o
seguinte:
Java – Orientação à Objetos
Declarando Variáveis
Declarando Variáveis
Uma variável é sempre declarada seguindo do
seguinte esquema:
<tipo> + <espaço> + identificador + ;
ou
<tipo> + <espaço> + identificador + = + valor + ;
Declarando Variáveis
onde:
<tipo> é um tipo primitivo de dados ou o nome de uma
classe ou interface
identificador é o nome da variável valor é o valor
atribuído à variável. Caso você declare uma variável e
não atribua nenhum
valor, ela não poderá ser utilizada em um código Java –
a tentativa de utilizar uma variável não inicializada em
Java gerará um erro de compilação.
Declarando Variáveis
Exemplo:
/**
Atenção!!!
* FIC - Faculdade Integrada do Ceará
* Sistemas Orientados a Objetos I
Veremos
mais adiante
que
possuiAloMundo.
um mecanismo de inicialização de
* Incluindo
variáveis
noJava
programa
variáveis
de seus tipos primitivos, mas deve-se evitar considerar essa
*/
inicialização
como
prática de
public class
AloMundo
{ programação. De fato, esta inicialização
automática
nãopublic
funciona
variáveis de
tipos
static
voidpara
main(String[]
args)
{ agregados ou abstratos de
dados e também
o escopo
das variáveis – de classe ou de instância - tem
boolean
obrigatorio;
influência na sua
inicialização.
int semestre
= 2; O aluno é fortemente recomendado a pensar
em variáveis como
alocados
memória RAM, inicialmente podendo
Stringespaços
mensagem
= "Alona
mundo.";
conter qualquer valor (conhecido como lixo na memória).
System.out.println(mensagem);
}
}
Java – Orientação à Objetos
Tipos de Dados
Tipos de Dados
Java é uma linguagem que necessita que todas as
Fortemente Tipado
variáveis tenham um tipo declarado
Existem 8 tipos primitivos declarados
6 são numéricos
1 é o caractere
1 é o booleano
Tipos de Dados
Java é uma linguagem que necessita que todas as
variáveis tenham um tipo declarado
Existem 8 tipos primitivos declarados
6 são numéricos
1 é o caractere
1 é o booleano
Tipos de Dados
Java é uma linguagem que necessita que todas as
variáveis tenham um tipo declarado
Existem 8 tipos primitivos declarados
6 são numéricos Int, short, long, float, double, byte
1 é o caractere
1 é o booleano
Java – Orientação à Objetos
Conversões entre Tipos
Conversões entre Tipos
Alguns valores são incompatíveis se você tentar fazer
uma atribuição direta
double
d = número
3.1415;
Enquanto
um
real costuma ser representado
int i = d; // não compila
em uma
variável do tipo double, tentar atribuir ele a
uma variável int não funciona
Porque é um código que diz: “i deve valer d”, mas não
se sabe se d realmente é um número inteiro ou não
Conversões entre Tipos
Alguns valores são incompatíveis se você tentar fazer
uma atribuição direta
Enquanto um número real costuma ser representado
em uma variável do tipo double, tentar atribuir ele a
uma variável int não funciona
Porque é um código que diz: “i deve valer d”, mas não
se sabe se d realmente é um número inteiro ou não
Conversões entre Tipos
Alguns valores são incompatíveis se você tentar fazer
uma atribuição direta
O mesmo
nessereal
trecho:
Enquanto
umocorre
número
costuma ser representado
em uma
variável do tipo double, tentar atribuir ele a
int i = 3.14;
uma variável int não funciona
Porque é um código que diz: “i deve valer d”, mas não
se sabe se d realmente é um número inteiro ou não
Conversões entre Tipos
Alguns valores são incompatíveis se você tentar fazer
uma atribuição direta
Enquanto um número real costuma ser representado
em uma variável do tipo double, tentar atribuir ele a
uma variável int não funciona
Porque é um código que diz: “i deve valer d”, mas não
se sabe se d realmente é um número inteiro ou não
Conversões entre Tipos
Alguns valores são incompatíveis se você tentar fazer
uma atribuição direta
O mais
interessante,
que nem mesmo
o seguinte código
compila:
Enquanto
uménúmero
real costuma
ser representado
em uma variável do tipo double, tentar atribuir ele a
double d = 5; // ok, o double pode conter um número inteiro
uma variável int não funciona
int i= d;
// não compila
Porque
é um código que diz: “i deve valer d”, mas não
se sabe se d realmente é um número inteiro ou não
Conversões entre Tipos
Apesar de 5 ser um bom valor para um int, o
compilador
tem como saber que valor estará
Já no
caso a seguir,não
é o contrário:
dentro desse double no momento da execução
int i = 5;
Esse valor pode ter sido digitado pelo usuário, e
ninguém
double
d2 = i; vai garantir que essa conversão ocorra sem
perda de valores
Conversões entre Tipos
O código acima compila sem problemas, já que um
double pode guardar um número com ou sem ponto
flutuante
Todos os inteiros representados por uma variável do
tipo int podem ser guardados em uma variável
double, então não existem problemas no código
acima
Conversões entre Tipos
Às vezes, precisamos que um número quebrado seja
arredondado e armazenado num número inteiro
Para fazer isso sem que haja o erro de compilação, é
preciso ordenar que o número quebrado seja moldado
(casted) como um número inteiro
Esse processo recebe o nome de casting
Conversões entre Tipos
Às vezes, precisamos que um número quebrado seja
arredondado e armazenado num número inteiro
Para fazer
doubleisso
d3 =sem
3.14; que haja o erro de compilação, é
intordenar
i = (int) d3;que o número quebrado seja moldado
preciso
(casted) como um número inteiro
Esse processo recebe o nome de casting
Conversões entre Tipos
O casting foi feito para moldar a variável d3 como um
int
O valor de i agora é 3
O mesmo ocorre entre valores int e long
long x = 10000;
int i = x; // não compila, pois pode estar perdendo informação
Conversões entre Tipos
E, se quisermos realmente fazer isso, fazemos o
casting
long x = 10000;
int i = (int) x;
Conversões entre Tipos
Casos não tão comuns
Alguns castings aparecem também:
Float x = 0.0;
O código acima não compila pois todos os literais com
ponto flutuante são considerados double pelo Java. E
float não pode receber um double sem perda de
informação, para fazer isso funcionar podemos escrever
o seguinte:
float x = 0.0f;
Conversões entre Tipos
Casos não tão comuns
A letra f, que pode ser maiuscula ou minúscula, indica que
aquele literal deve ser tratado como float
Outro caso, que é mais comum:
double d = 5;
float f = 3;
float x = f + (float) d;
Você precisa do casting porque o Java faz as contas e vai
armazenando sempre no maior tipo que apareceu durante as
operações, no caso o double
Conversões entre Tipos
Casos não tão comuns
E, uma observação: no mínimo, o Java armazena o
resultado em um int, na hora de fazer as contas
Até casting com variáveis do tipo char podem ocorrer
O único tipo primitivo que não pode ser atribuído a
nenhum outro tipo é o boolean
Conversões entre Tipos
Para:
Castings possíveis
Byte
Short
Char Int
Long Float Double
Byte
---
Impl.
(cha
r)
Impl. Impl. Impl. Impl.
Short
(byt
e)
---
(cha
r)
Impl. Impl. Impl. Impl.
Char
(byt
e)
(short --)
Impl. Impl. Impl. Impl.
Int
(byt
e)
(short (cha
)
r)
---
Impl. Impl. Impl.
Long
(byt
e)
(short (cha
)
r)
(int)
---
Impl. Impl.
Float
(byt
e)
(short (cha
)
r)
(int)
(lon
g)
---
Double
(byt
e)
(short (cha
)
r)
(int)
(lon
g)
(floa --t)
De:
Impl.
Conversões entre Tipos
Tamanho dos Tipos
Tipo
Tamanho
Boolean
1 bit
Byte
1 byte
Short
2 bytes
Char
2 bytes
Int
4 bytes
Float
4 bytes
Long
8 bytes
Double
8 bytes
Exercícios
Na empresa onde trabalhamos, há tabelas com o quanto foi
gasto em cada mês. Para fechar o balanço do primeiro trimestre,
precisamos somar o gasto total. Sabendo que, em Janeiro,
foram gastos 15000 reais, em Fevereiro, 23000 reais e em Março,
17000 reais, faça um programa que calcule e imprima o gasto
total no trimestre. Siga esses passos:
Crie uma classe chamada BalancoTrimestral com um bloco main,
como nos exemplos anteriores;
Dentro do main (o miolo do programa), declare uma variável inteira
chamada gastosJaneiro e inicialize-a com 15000;
Crie também as variáveis gastosFevereiro e gastosMarco,
inicializando-as com 23000 e 17000, respectivamente, utilize uma
linha para cada declaração;
Crie uma variável chamada gastosTrimestre e inicialize-a com a soma
das outras 3 variáveis: int gastosTrimestre = gastosJaneiro +
gastosFevereiro + gastosMarco;
Imprima a variável gastosTrimestre.
Exercícios
2) Adicione código (sem alterar as linhas que já
existem) na classe anterior para imprimir a média
mensal de gasto, criando uma variável mediaMensal
junto com uma mensagem. Para isso, concatene a
String com o valor, usando "Valor da média mensal =
"+ mediaMensal.