SlideShare ist ein Scribd-Unternehmen logo
1 von 116
PROGRAMAÇÃO
ORIENTADA A OBJETOS
INTRODUÇÃO À
LINGUAGEM JAVA
03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto
DesenvolvimentodeSoftwarepareaWeb2016
TIPOS DE DADOS
03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto
DesenvolvimentodeSoftwarepareaWeb2016
TIPOS DE DADOS
• Java é uma linguagem fortemente tipada
• FORTEMENTE TIPADA:
– Característica de uma linguagem de
programação em relação aos seus tipos de
dados;
– Permite que todas as operações tenham
compatibilidade de seus tipos verificada
pelo compilador
– Operações inválidas não são compiladas
03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto
DesenvolvimentodeSoftwarepareaWeb2016
TIPOS DE DADOS
• Verificação minuciosa e cuidadosa dos tipos de
dados
– Diminui a ocorrência de erros
– Melhora a confiabilidade
• Todas as variáveis tem tipos
• Todas as expressões tem tipos
• Todos os valores tem tipo
• O tipo de um valor determina as operações que
podem ser executadas nele
03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto
DesenvolvimentodeSoftwarepareaWeb2016
TIPOS DE DADOS
• Cada tipo de dado – de qualquer linguagem de
programação – exige um espaço adequado para
seu armazenamento.
• PORTABILIDADE DE TIPOS DE DADOS:
– em JAVA os tipos de dados tem sempre a
mesma dimensão de armazenamento
(intervalo de bits), independente da
arquitetura do conjunto de instruções do
microprocessador a qual está sendo
executada
03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto
DesenvolvimentodeSoftwarepareaWeb2016
TIPOS DE DADOS
• DESVANTAGEM DA PORTABILIDADE DE TIPOS DE
DADOS:
– Em alguns ambientes de execução, o desempenho pode
ser um pouco mais baixo, por conta da especificação
rígida dos intervalos, que é inflexível em Java.
• Dois tipos de dados internos gerais:
– Orientado a objetos
– Não orientado a objetos:
• Oito tipos de dados primitivos ou dados elementares
ou dados simples
• São valores binários comuns
03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto
DesenvolvimentodeSoftwarepareaWeb2016
TIPOS DE DADOS
TIPOS DE DADOS PRIMITIVOS INTERNOS
TIPO SIGNIFICADO
Boolean Representa valores verdadeiro ou falso
Byte Representa um valor inteiro de 8 bits
Char Representa um caractere (uma letra, símbolo, pontuação, etc)
Double Representa um valor de ponto flutuante de precisão dupla
Float Representa um valor de ponto flutuante de precisão simples
Int Representa um valor inteiro
Long Representa um valor inteiro longo
Short Representa um valor inteiro curto
03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto
DesenvolvimentodeSoftwarepareaWeb2016
TIPOS DE DADOS
03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto
DesenvolvimentodeSoftwarepareaWeb2016
TIPOS DE DADOS INTEIROS
TIPO BITS INTERVALO
byte 8 -128 a +127
short 16 32.768 a +32.767
int 32 -2.147.483.648 a +2.147.483.648
long 64 -9.223.372.036.854.775.808 a +9.223.372.036.854.775.808
Java não suporta inteiros sem sinal
BYTE  dados binários brutos, nem sempre compatíveis com outros tipos
internos Java
TIPOS DE DADOS
03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto
DesenvolvimentodeSoftwarepareaWeb2016
TIPOS DE DADOS DE PONTO FLUTUANTE
TIPO BITS INTERVALO
float 32 1.40239846e-46 a é 3.40282347e+38
Tamanho do maior literal float: 3,4x1038
Norma IEEE 754
Ponto flutuante com sinal de precisão simples
Números positivos e negativos
double 64 4.94065645841246544e-324 a 1.7976931348623157e+308
Tamanho do maior literal double: 1,8x10308
Norma IEEE 754
Ponto flutuante com sinal com precisão dupla
Números positivos e negativos
DOUBLE é o tipo mais usado
DOUBLE é usado na biblioteca matemática MATH
TIPOS DE DADOS
03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto
DesenvolvimentodeSoftwarepareaWeb2016
TIPOS DE DADOS CARACTERE
TIPO BITS INTERVALO
char 16 0 a 65.536
Pode ser usado como tipo inteiro de 16 bits sem sinal
‘u0000’ a ‘uFFFF’
Java suporta caracteres UNICODE
UNICODE: todos os caracteres de todos os idiomas
ASCII é um subconjunto de UNICODE (8 BITS)
Operações aritméticas podem ser aplicadas ao tipo CHAR
TIPOS DE DADOS
03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto
DesenvolvimentodeSoftwarepareaWeb2016
TIPOS DE DADOS BOOLEAN
TIPO BITS INTERVALO
boolean 8 True ou false
Verdadeiro ou falso
Operações lógicas e relacionais podem ser usadas com o tipo boolean
LITERAIS
03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto
DesenvolvimentodeSoftwarepareaWeb2016
LITERAIS
03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto
DesenvolvimentodeSoftwarepareaWeb2016
• São valores fixos representados em sua forma
legível
• Literais = constantes
• Podem ser de qualquer tipo primitivo
• Literais caracteres: ‘a’, ‘b’, ‘c’
• Literais inteiros: 10, -100, 200, -1
• Literais double: 11,23; 52,7
• Literais float: 51,4f; 78,9F
• Literais long int: 12L; 14l
• Literais string: “isto é uma string”
LITERAIS
03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto
DesenvolvimentodeSoftwarepareaWeb2016
• Notação Científica:
– 1,2345E2 = 123,4
– 1,2345E-2 = 0,01234
• Literais inteiros hexadecimais
– começa com 0x ou 0X
– 0xFF; 0X1A
• Literais inteiros octais
– começa com zero
– 011; 087
• Literais inteiros binários:
– Começa com 0b ou 0B
– 0b1100; 0B0101
SEQUENCIAS DE ESCAPE
03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto
DesenvolvimentodeSoftwarepareaWeb2016
SEQUENCIAS DE ESCAPE
SEQUENCIA DESCRIÇÃO
’ Aspas simples
” Aspas duplas
 Barra invertida
r Retorno de carro
n Nova linha
f Avanço de página
t Tabulação horizontal
b Retrocesso
ddd Constante octal
uxxxx Constante hexadecimal
03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto
DesenvolvimentodeSoftwarepareaWeb2016
PALAVRAS RESERVADAS
03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto
DesenvolvimentodeSoftwarepareaWeb2016
PALAVRAS RESERVADAS
• Modificadores de acesso:
– Private: Um método ou variável só pode ser
acessado de dentro da própria classe;
– Protected: Um método ou variável só pode ser
acessado por classes do mesmo pacote ou
subclasses da classe;
– Public: Uma classe, método ou variável pode ser
acessado a partir de qualquer outra classe.
03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto
DesenvolvimentodeSoftwarepareaWeb2016
PALAVRAS RESERVADAS
• Controle de fluxo:
– Break: Força o fluxo do programa a sair do bloco
do código onde a palavra foi inserida;
– Case: Executa um bloco de código que é
dependente da instrução switch;
– Continue: Força o código existente, após essa
instrução, a não ser executado em um loop,
indicando a próxima interação do loop;
03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto
DesenvolvimentodeSoftwarepareaWeb2016
PALAVRAS RESERVADAS
• Controle de fluxo:
– Default: Executa o bloco de código se nenhuma
das instruções switch/case for atendida;
– Do: Executa um bloco de código um vez e, em
seguida, junto com a instrução while, processa
um teste para determinar se o bloco deve ser
executado novamente;
– For: Executa um loop condicional em um bloco
de código;
03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto
DesenvolvimentodeSoftwarepareaWeb2016
PALAVRAS RESERVADAS
• Controle de fluxo:
– Return: Força o fluxo do programa a sair de um
método sem executar nenhum código que esteja
após a instrução podendo retornar uma variável;
– Switch: Indica a variável a ser comparada com
as instruções case;
– While: Executa um bloco de código
repetidamente, enquanto um certa condição for
verdadeira;
03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto
DesenvolvimentodeSoftwarepareaWeb2016
PALAVRAS RESERVADAS
• Controle de fluxo:
– Else: Executa um bloco de código alternativo se
uma condição if for falsa;
– If: Executa um teste lógico verdadeiro ou falso;
– Instanceof: Determina se um objeto é a instancia
de uma classe, superclasse ou interface.
03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto
DesenvolvimentodeSoftwarepareaWeb2016
PALAVRAS RESERVADAS
• Modificadores de classe, método e variável:
– Abstract: Usada para declarar uma classe que não
pode ser instanciada ou um método que deve ser
implementado por subclasses concretas;
– Implements: Usada para indicar a uma interface
que uma classe a implementará;
– Extends: Usada para estender uma classe a outra.
Indica uma superclasse que uma subclasse está
estendendo (herança);
03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto
DesenvolvimentodeSoftwarepareaWeb2016
PALAVRAS RESERVADAS
• Modificadores de classe, método e variável:
– Final: usada para tornar impossível estender
uma classe, sobrepor um método ou reiniciar
uma variável;
– Class: Usada para identificar uma classe;
– Interface: Usada para identificar uma interface;
– Transient: Impede que os campos sejam
03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto
DesenvolvimentodeSoftwarepareaWeb2016
PALAVRAS RESERVADAS
• Modificadores de classe, método e variável:
– Native: Indica que um método foi escrito em uma
linguagem que só pode ser usada em uma
plataforma, exemplo: C#;
– New: Usada para instanciar um objeto;
– Static: Indica que o método ou a variável
pertence à classe e não à instancia;
03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto
DesenvolvimentodeSoftwarepareaWeb2016
PALAVRAS RESERVADAS
• Modificadores de classe, método e variável:
– Strictfp: Usada na frente de um método para
indicar que os números de ponto flutuante
seguirão regras restritas de ponto flutuante em
todas as expressões;
– Syncronized: Indica que um método só pode ser
acessado por um seguimento de cada vez;
– Volatile: Indica que a variável pode não ficar
sincronizada por ser usada em fragmentos.
03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto
DesenvolvimentodeSoftwarepareaWeb2016
PALAVRAS RESERVADAS
• Controle de Pacotes:
– Import: importação de pacotes ou classes
para o código;
– Package: Especifica a que pacote todas as
classes de um arquivo fonte pertence.
03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto
DesenvolvimentodeSoftwarepareaWeb2016
PALAVRAS RESERVADAS
• Palavra void para tipos retornados:
– Void: Indica que não há um tipo de retorno para o
método.
• Palavras reservadas não utilizadas:
– Const: Não use esta palavra para declarar
constantes use public static final;
– Goto: Não foi implementada na linguagem Java por
ser considerada perigosa.
03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto
DesenvolvimentodeSoftwarepareaWeb2016
PALAVRAS RESERVADAS
• Tratamento de Erros:
– Throws: Indica o método que passará uma
execução para o método que o chamou;
– Try: Bloco de código que será executado,
podendo, porém, causar uma exceção;
– Assert: Avalia uma expressão condicional para
verificar as alternativas do programador;
03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto
DesenvolvimentodeSoftwarepareaWeb2016
PALAVRAS RESERVADAS
• Tratamento de Erros:
– Catch: Declara o bloco de código usado para tratar
uma execução;
– Finally: Bloco de código, geralmente após uma
instrução try-catch, que vai ser executado
independente de que fluxo do programa for usado
no tratamento de uma exceção;
– Throw: Usada para passar uma execução para o
método que chamou o método atual.
03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto
DesenvolvimentodeSoftwarepareaWeb2016
PALAVRAS RESERVADAS
• Palavras chaves de variáveis:
– Super: Variável de referência que diz respeito
a superclasse imediata;
– This: Variável de referência que diz respeito a
instancia atual de um objeto;
– Null: Rrepresenta “algo” sem valor definido;
referência de um objeto nulo.
03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto
DesenvolvimentodeSoftwarepareaWeb2016
VARIÁVEIS
03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto
DesenvolvimentodeSoftwarepareaWeb2016
DEFINIÇÃO DE VARIÁVEIS
• É um tipo de identificador;
• É um nome dado pelo programador para um tipo de
dado o qual deseja armazenar;
• Um identificador é a LOCALIZAÇÃO na memória capaz
de armazenar o valor de um certo tipo de dado;
• Pode ter um ou mais endereços na memória;
• Todo identificador deve ser declarado antes de ser
utilizado.
03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto
DesenvolvimentodeSoftwarepareaWeb2016
DECLARAÇÃO DE VARIÁVEIS
• Nomes de variáveis podem começar com
– LETRA: preco, nome;
– SUBLINHADO (_): _preco, _nome;
– CIFRÃO ($): $preco, $nome.
• PADRÃO DE NOMENCLATURA:
– Nome de variável simples: preco, nome, etc.
– Nome de variável composto: valorVenda,
codigoFornecedor, etc.
03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto
DesenvolvimentodeSoftwarepareaWeb2016
DECLARAÇÃO DE VARIÁVEIS
SINTAXE: TIPO NOME;
int idade;
float valor;
boolean teste;
char sexo;
double preco;
03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto
DesenvolvimentodeSoftwarepareaWeb2016
INICIALIZAÇÃO DE
VARIÁVEIS
• Valores padrão são atribuídos às variáveis declaradas:
– CHAR, BYTE, SHORT, INT, LONG, FLOT e DOUBLE:
valor zero é o padrão;
– BOOLEAN: false é o valor padrão;
• Quando uma variável é declarada, uma instância de seu tipo
é criada;
• Boa prática: inicializar as variáveis no momento da
declaração
• LEMBRE-SE: JAVA É CASE SENSITIVE!
• O comando de atribuição é usado para atribui um valor à uma
variável: o sinal de igual é este comando!
03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto
DesenvolvimentodeSoftwarepareaWeb2016
INICIALIZAÇÃO DE
VARIÁVEIS
SINTAXE: TIPO NOME = VALOR;
int idade = 20;
float valor = 10f;
boolean teste = true;
char sexo = ‘f’;
double preco = 20;
String nome = “Joana”;
03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto
DesenvolvimentodeSoftwarepareaWeb2016
INICIALIZAÇÃO DINÂMICA DE
VARIÁVEIS
SINTAXE: TIPO NOME = VALOR;
A inicialização dinâmica permite que seja
atribuído um valor, a uma variável, em tempo
de execução
Double volume = 3.14 * height;
03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto
DesenvolvimentodeSoftwarepareaWeb2016
CONSTANTES
• É um tipo de variável que não pode alterar
seu conteúdo depois de ter sido
inicializada;
• O conteúdo deve permanecer o mesmo
durante toda a execução do programa;
• Em JAVA não existe constante, existe um
tipo de variável com um comportamento
parecido
03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto
DesenvolvimentodeSoftwarepareaWeb2016
CONSTANTES
• Usa-se a palavra chave FINAL no inicio da
declaração da variável para se obter uma
constante em Java
final double pi = 3.145;
03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto
DesenvolvimentodeSoftwarepareaWeb2016
ESCOPO E TEMPO DE VIDA
• Variáveis podem ser declaradas dentro de
qualquer bloco;
• Cada bloco de programa, em JAVA, é
determinado pelas chaves { } ;
• Cada bloco é um escopo;
• Um escopo determinada que objetos estarão
visíveis para outras partes de seu programa,
assim como o tempo de vida desses objetos;
03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto
DesenvolvimentodeSoftwarepareaWeb2016
ESCOPO E TEMPO DE VIDA
• Escopos em JAVA: classes e métodos;
• Regra geral: as variáveis declaradas
dentro de um escopo NÃO podem ser
acessadas por um código do programa
fora deste escopo;
• Regras de escopo: são a base do conceito
de ENCAPSULAMENTO;
03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto
DesenvolvimentodeSoftwarepareaWeb2016
ESCOPO E TEMPO DE VIDA
• Dentro de um bloco, variáveis podem ser
declaradas em qualquer ponto, entretanto
só serão válidas após a declaração;
• Variáveis são destruídas fora do seu
escopo, elas só mantem o seu valor,
enquanto estiverem dentro do seu escopo
• O tempo de vida de uma variável está
atrelado ao seu escopo
03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto
DesenvolvimentodeSoftwarepareaWeb2016
ESCOPO E TEMPO DE VIDA
• ATENÇÃO: Se dentro do bloco, a variável
for inicializada, então, toda vez que se
entrar nesse bloco, a variável sempre será
inicializada
• Nenhuma variável declarada dentro de um
escopo interno pode ter o mesmo nome
de uma variável declarada por um escopo
externo
03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto
DesenvolvimentodeSoftwarepareaWeb2016
COMENTÁRIOS
03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto
DesenvolvimentodeSoftwarepareaWeb2016
COMENTÁRIOS
• Comentários de uma linha: //
• Comentários de mais de uma linha: /* */
03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto
DesenvolvimentodeSoftwarepareaWeb2016
OPERADORES
03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto
DesenvolvimentodeSoftwarepareaWeb2016
OPERADORES
• DEFINIÇÃO: é um símbolo que solicita ao
compilador que execute uma operação
matemática ou lógica específica
• Quatro classes gerais de operadores em JAVA:
– Aritmético
– Bitwise
– Relacional
– Lógico
03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto
DesenvolvimentodeSoftwarepareaWeb2016
OPERADORES ARITMÉTICOS
OPERADOR SIGNIFICADO
+ Adição
- Subtração
* Multiplicação
/ Divisão
% Módulo
++ Incremento (soma um)
-- Decremento (tira um)
03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto
DesenvolvimentodeSoftwarepareaWeb2016
Observações:
DIVISÃO: quando aplicado a um inteiro, o resto gerado é truncado. O resto da
divisão pode ser obtido usando o %
% pode ser usado para tipos inteiros ou de ponto flutuante
INCREMENTO E
DECREMENTO
03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto
DesenvolvimentodeSoftwarepareaWeb2016
OPERAÇÃO OPERADOR EM JAVA
a++ Pré-incremento
Soma o valor de a com 1 e utiliza o novo valor
de a na expressão em que está
++a Pós-incremento
Utiliza o valor de a na expressão em que está
e só depois soma o valor de a com 1
a-- Pré-decremento
Subtrai o valor de a com 1 e utiliza o novo
valor de a na expressão em que está
--a Pós-decremento
Utiliza o valor de a na expressão em que está
e só depois subtrai o valor de a com 1
OPERADORES RELACIONAIS
OPERADOR SIGNIFICADO
== Igual
!= Diferente
> Maior que
< Menor que
>= Maior ou igual que
<= Menor ou igual que
03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto
DesenvolvimentodeSoftwarepareaWeb2016
Respostas dos operadores relacionais: verdadeiro ou falso
Relacional: refere-se aos relacionamentos que os valores podem ter uns
com os outros
Podem ser aplicados a todos os tipos numéricos e também o char
OPERADORES LÓGICOS
OPERADOR SIGNIFICADO
& And
| Or
^ Xor
! Not
03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto
DesenvolvimentodeSoftwarepareaWeb2016
Respostas dos operadores lógicos: verdadeiro ou falso
Lógicos: refere-se às maneiras como os valores boolean podem estar
conectados
Os operandos devem ser do tipo boolean
OPERADORES LÓGICOS
03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto
DesenvolvimentodeSoftwarepareaWeb2016
P Q P & Q P | Q P ^ Q ! P
F F F F F V
V F F V V F
F V F V V V
V V V V F F
Tabela verdade para as operações lógicas
OPERADORES LÓGICOS DE
CURTO CIRCUITO
03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto
DesenvolvimentodeSoftwarepareaWeb2016
• A versão de AND e OR comum sempre avalia cada operando
da operação
• A versão AND e OR de curto circuito avalia somente o
segundo operando quando necessário
OPERADOR SIGNIFICADO
|| Or (curto-circuito)
&& And (curto-circuito)
PRECEDÊNCIA DE
OPERADORES
X ++ X --
++ x -- x ~ Unário + Unário - coerção
* / %
+ -
>> >>> <<
> >= < <= instanceof
== !=
&
^
|
&&
||
?:
=
03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto
DesenvolvimentodeSoftwarepareaWeb2016
ATRIBUIÇÃO
03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto
DesenvolvimentodeSoftwarepareaWeb2016
ATRIBUIÇÕES ABREVIADAS
+ =
- =
* =
/ +
% =
& =
| =
^=
03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto
DesenvolvimentodeSoftwarepareaWeb2016
CONVERSÕES
03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto
DesenvolvimentodeSoftwarepareaWeb2016
CONVERSÕES EM
ATRIBUIÇÕES
• Um tipo de variável pode ser atributo a outro
int a;
float b;
a =120;
b= a;
• Nesse caso, a conversão ocorre de forma
IMPLICITA pois os tipos de dados são
compatíveis
• O valor do lado direito da atribuição é
03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto
DesenvolvimentodeSoftwarepareaWeb2016
CONVERSÕES EM
ATRIBUIÇÕES
• Uma conversão automática de tipos ocorrerá se:
– Os dois tipos de dados forem compatíveis;
– O tipo de dado de destino for maior que o tipo de
dado da origem;
• Conversão ampliadora:
– Int é grande o suficiente para conter a faixa de
valores do tipo byte;
– Int e byte são tipos inteiros;
– Tipos numéricos e de ponto flutuante são
compatíveis;
– Não há conversão de double para long.
03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto
DesenvolvimentodeSoftwarepareaWeb2016
COERÇÃO - CAST
• É uma instrução dada ao compilador para a
conversão de um tipo em outro;
• Conversão de tipos EXPLICITA;
• SINTAXE: (tipo-destino) expressão;
03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto
DesenvolvimentodeSoftwarepareaWeb2016
COERÇÃO - CAST
Exemplo Converter para Conversão
Int x = 10; Float Float y = (float) x;
Int x = 10; Double Double y = (double) x;
Float x = 10.5; Int Int y = (int) x;
String x = “10”; Int int y = Integer.parseInt(x);
String x = “20.54”; Float Float y = Float.parseFloat(x);
String x = “Java”; Double Double y = Double.parseDouble(x);
String x = “Java”; Vetor de bytes Byte b[] = x.getBytes();
Int x = 10; String String y = String.valueOf(x);
Float x = 10.35; String String y = String.valueOf(x);
Double x = 254.34; String String y = String.valueOf(x);
Byte x[]; String String y = new String(x);
03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto
DesenvolvimentodeSoftwarepareaWeb2016
EXPRESSÕES
03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto
DesenvolvimentodeSoftwarepareaWeb2016
EXPRESSÕES
• Operadores, variáveis e literais são
componentes de expressões;
• Toda expressão é avaliada;
• Dois ou mais tipos de dados diferentes
podem ser usados dentro de uma
expressão, desde que sejam compatíveis.
03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto
DesenvolvimentodeSoftwarepareaWeb2016
EXPRESSÕES
• Regras de promoção de tipos:
– Char, byte e short são promovidos a INT;
– Se um dos operandos da expressão for LONG,
então toda a expressão será promovida para
LONG;
– Se um dos operandos da expressão for FLOAT,
a expressão toda será promovida para FLOAT;
– Se algum dos operandos da expressão for
03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto
DesenvolvimentodeSoftwarepareaWeb2016
EXPRESSÕES
• A promoção de tipos só afeta a avaliação da
expressão;
• Cuidados:
– Alguns resultados inesperados podem ser
gerados na promoção de tipos na avalição da
expressão;
– Nesses casos é necessário usar coersão;
03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto
DesenvolvimentodeSoftwarepareaWeb2016
EXPRESSÕES
byte b;
int i;
b = 10;
i = b * b; //promoção de tipo para int –
sem coersão
b = 10;
b = (byte) ( b * b ) //precisa de
coersão para atribuir um int a um byte
03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto
DesenvolvimentodeSoftwarepareaWeb2016
EXPRESSÕES
Char ch1 = ‘a’, ch2=‘b’;
Ch1 = (char) (ch1 + ch2);
//ch1 e ch2 são promovidos a INT
//coersão necessária de volta para byte
03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto
DesenvolvimentodeSoftwarepareaWeb2016
OBSERVAÇÕES SOBRE O
MÉTODO MAIN
03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto
DesenvolvimentodeSoftwarepareaWeb2016
OBSERVAÇÕES SOBRE O
MÉTODO MAIN
• MAIN:
– É o nome do método que indica ao
compilador o ponto inicial da execução da
classe. É o método principal, em que todas
as variáveis, argumentos e instruções são
interpretados e processados para a
execução do programa
03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto
DesenvolvimentodeSoftwarepareaWeb2016
OBSERVAÇÕES SOBRE O
MÉTODO MAIN
• STRING [] ARGS:
– É o argumento do método principal;
– É um vetor de strings responsável por
receber valores que podem ser processados
internamente à classe;
– ARGS é a porta de entrada a partir da qual as
classes podem se comunicar com outras
classes;
03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto
DesenvolvimentodeSoftwarepareaWeb2016
OBTENDO DADOS COM
SCANNER
03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto
DesenvolvimentodeSoftwarepareaWeb2016
OBTENDO DADOS COM
SCANNER
• https://docs.oracle.com/javase/8/docs/api/
Scanner sc = new Scanner(System.in);
int i = sc.nextInt();
03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto
DesenvolvimentodeSoftwarepareaWeb2016
OBTENDO DADOS COM
SCANNER
03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto
DesenvolvimentodeSoftwarepareaWeb2016
Comando Objetivo
nextShort() Para ler tipos SHORT
nextLong() Para ler tipos LONG
nextLine() Para pular uma linha
nextInt() Para ler tipos INT
nextDouble() Para ler tipos DOUBLE
nextFloat() Para ler tipos FLOAT
nextByte() Para ler tipos BYTE
nextBoolean() Para ler tipos BOOLEAN
nextBigInteger() Para ler tipos BIG INTEGER
nextBigDecimal() Para ler tipos BIG DECIMAL
next() Para Strings
INSTRUÇÕES DE CONTROLE
DE PROGRAMA
03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto
DesenvolvimentodeSoftwarepareaWeb2016
INSTRUÇÕES DE SELEÇÃO
03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto
DesenvolvimentodeSoftwarepareaWeb2016
INSTRUÇÕES DE CONTROLE:
INSTRUÇÕES DE SELEÇÃO
SIMPLES
if(condição) {
comandos;
}
COMPOSTA SIMPLES
if(condição) {
comandos;
}
else {
comandos;
}
03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto
DesenvolvimentodeSoftwarepareaWeb2016
INSTRUÇÕES DE CONTROLE:
INSTRUÇÕES DE SELEÇÃO
COMPOSTA
ANINHADA
if(condição) {
comandos;
}
else if(condição) {
comandos;
}
else {
comandos;
SWITCH/CASE
int i;
switch(i) {
case 1: lista de
comandos;
break;
case 2: lista de
comandos;
break;
default: lista de
comandos;
03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto
DesenvolvimentodeSoftwarepareaWeb2016
INSTRUÇÕES DE ITERAÇÃO
03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto
DesenvolvimentodeSoftwarepareaWeb2016
INSTRUÇÕES DE CONTROLE:
INSTRUÇÕES DE ITERAÇÃO
FOR
for ( i = valor_inicial;
condição; incremento
ou decremento de i ) {
comandos;
}
WHILE
while (condição) {
comandos;
}
03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto
DesenvolvimentodeSoftwarepareaWeb2016
INSTRUÇÕES DE CONTROLE:
INSTRUÇÕES DE ITERAÇÃO
DO-WHILE
do {
comandos;
}
while(condição);
WHILE
while (condição) {
comandos;
}
03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto
DesenvolvimentodeSoftwarepareaWeb2016
ARRAYS
03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto
DesenvolvimentodeSoftwarepareaWeb2016
CONCEITO E DEFINIÇÃO DE
ARRAYS
• Variável composta homogênea
multidimensional;
• Conjunto de variáveis de mesmo tipo;
• Índice: referencia sua localização dentro
da estrutura. No caso de matrizes,
precisamos de tantos índices quantos
forem seu dimensionamento.
03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto
DesenvolvimentodeSoftwarepareaWeb2016
DECLARAÇÃO E INICIALIZAÇÃO
DE ARRAYS
float x[ ][ ];
f = new float[2][10];
char [ ][ ]MAT;
MAT = new char[4][3];
int [ ][ ]Y[ ];
Y = new char[2][4][3];
float x[ ][ ] = new float[2][6];
char [ ][ ]MAT = new char[4][3];
03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto
DesenvolvimentodeSoftwarepareaWeb2016
DECLARAÇÃO E INICIALIZAÇÃO
DE ARRAYS
int [ ][ ]Y[ ] = new int[2][4][3];
int y[][];
y = new int[2][];
y[0] = new int[5];
y[1] = new int[2];
int y[][]; //matriz bidimensional
y = new int[2][];
y[0] = new int[5];
y[1] = new int[2];
03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto
DesenvolvimentodeSoftwarepareaWeb2016
ATRIBUINDO VALORES AO
ARRAY
x[ 1 ][ 4 ] = 5;
MAT[ 3 ][ 2 ] = ‘D’;
y[ 0 ][ 3 ][ 1 ] = 12;
y[ 0 ][ 3 ][ 1 ] = 12;
MAT[ 3 ][ 2 ] = ‘D’;
03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto
DesenvolvimentodeSoftwarepareaWeb2016
POPULANDO UM ARRAY
int x[ ][ ] = new int[7][3];
Scanner e = new Scanner(System.in);
//preenche a linha
for( i = 0; i<7; i++ ) {
//preenche a coluna
for( j=0; j<3; j++ ) {
//preenche a célula
x[ i ][ j ] = e.nextInt();
}
}
03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto
DesenvolvimentodeSoftwarepareaWeb2016
POPULANDO UM ARRAY
int MAT[ ][ ];
MAT = new int[ 3 ][ ] ;
MAT[ 0 ] = new int[ 2 ];
MAT[ 1 ] = new int[ 5 ];
MAT[ 2 ] = new int[ 3 ];
Scanner e = new Scanner(System.in);
//preenche a linha
for( i = 0; i<MAT.length; i++ ) {
//preenche a coluna
for( j=0; j<MAT[i].length; j++ ) {
//preenche a célula
x[ i ][ j ] = e.nextInt();
}
}
03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto
DesenvolvimentodeSoftwarepareaWeb2016
IMPRIMINDO UM ARRAY
//obtem índice da linha
for( i=0; i<10; i++) {
//obtem índice da coluna
for( j=0; j<6; j++) {
//imprime o conteúdo da célula que está
na
linha-coluna obtida
System.out.println( x[ i ][ j ] );
}
03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto
DesenvolvimentodeSoftwarepareaWeb2016
IMPRIMINDO UM ARRAY
//obtem o tamanho da dimensão
for( i=0; i<MAT.length; i++) {
//obtem o tamanho da linha
for( j=0; j<MAT[ i ].length; j++) {
//imprime o conteúdo da linha-
coluna
System.out.println( MAT[ i ][ j ] );
}
}
03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto
DesenvolvimentodeSoftwarepareaWeb2016
PERCORRENDO UM ARRAY
//quantidade de linhas é 3
for ( i=0; i<3; i++) {
System.out.println( “Elementos da linha” +
i );
//quantidade de colunas é 4
for( j=0; j<4; j++) {
System.out.println( x[ i , j ] );
}
}
03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto
DesenvolvimentodeSoftwarepareaWeb2016
PERCORRENDO UM ARRAY
for ( j=0; j<4; j++) {
//quantidade de colunas é 4
System.out.println( “Elementos da coluna”
+ i );
for( i=0; i<3; i++) {
//quantidade de linhas é 4
System.out.println( x[ j , i ] );
}
}
03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto
DesenvolvimentodeSoftwarepareaWeb2016
FOR EACH: CONCEITO
• Usado para examinar um array do início ao fim,
elemento a elemento;
• Exemplos:
– Somar todos os elementos do array;
– Calcular a média
– Buscar um valor
– Copiar um array
– Etc
03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto
DesenvolvimentodeSoftwarepareaWeb2016
FOR EACH: DEFINIÇÃO
• FOR-EACH é um FOR melhorado, otimizado
• Esse LAÇO percorre um conjunto de objetos
de maneira rigorosamente sequencial
• Recurso adicionado no JDK 5.0
• FORMA (SINTAXE):
for(tipo var-iter: conjunto)
Bloco de instruções
03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto
DesenvolvimentodeSoftwarepareaWeb2016
FOR EACH: SINTAXE
for(tipo var-iter: conjunto)
Bloco de instruções
• TIPO: especifica o tipo
• VAR-ITER: especifica o nome de uma
variável d eiteração que receberá os
elementos de um conjunto, um de cada vez,
do inicio ao fim
• Neste caso, o conjunto é o ARRAY
03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto
DesenvolvimentodeSoftwarepareaWeb2016
FOR EACH
• A cada ITERAÇÃO do laço, o próximo elemento do
conjunto é recuperado e armazenado em VAR-
ITER;
• O LAÇO se repete até todos os elementos do
conjunto terem sido usados;
• FOR-EACH elimina a necessidade de um contador
de laço, de determinar o valor inicial e final e de
indexar manualmente o array;
• Percorre o array inteiro automaticamente, obtendo
03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto
DesenvolvimentodeSoftwarepareaWeb2016
FOR EACH: COMPARAÇÃO COM
O FOR
COM O FOR:
int[] nums = {1,2,3,4,5,6,7,8,9,10};
int sum = 0;
for(int i; i<10; i++) sum += nums[i];
COM FOR-EACH:
int[] nums = {1,2,3,4,5,6,7,8,9,10};
int sum = 0;
for(int x : nums) sum += x;
03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto
DesenvolvimentodeSoftwarepareaWeb2016
• A cada passagem do laço,
X recebe
automaticamente um
valor igual ao próximo
elemento de NUMS.
• Na primeira iteração, X
contém 1
• Na segunda iteração, X
contém 2
• E assim por diante
FOR EACH: EXEMPLO 1
class ForEach(){
public static void main(Strings[] args){
int[] nums = {1,2,3,4,5,6,7,8,9,10};
int sum = 0;
//exibe e soma os elementos do vetor
for(int x : nums){
system.out.println(“ O valor é: ” + x);
sum += nums;
}
}
System.out.pritnln(“Soma: ” + sum);
}
03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto
DesenvolvimentodeSoftwarepareaWeb2016
FOR EACH: EXEMPLO 2
class ForEach(){
public static void main(Strings[] args){
int[][] nums = new int[3][r];
int sum = 0;
//fornece alguns valores a nums
for( int i=0; i<3; i++)
for( int j=0; i<5; j++)
nums[i][j] = (i+1)+(j+1);
//exibe e soma os elementos da matriz
for(int[] x : nums){
for(int y : x) {
System.out.println(“Valor é: ” + y);
sum += y;
} } } System.out.println(“ Soma: ” + sum);}
03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto
DesenvolvimentodeSoftwarepareaWeb2016
BUSCANDO UM ELEMENTO NO
ARRAY COM FOR EACH
class ForEach(){
public static void main(Strings[] args){
int[] nums = {6,8,3,7,5,6,1,4};
int val = 5;
boolean found = false;
//procura um valor – VAL – em nums
for(int[] x : nums){
if(x == val){
found = true;
break;
} }
if(found) System.out.println(“Valor encontrado”); }}
03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto
DesenvolvimentodeSoftwarepareaWeb2016
ARRAYLIST
03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto
DesenvolvimentodeSoftwarepareaWeb2016
ARRAYLIST
• Biblioteca de coleções
• Substituiu o vector
• Usar a importação da classe para utilizar
esta biblioteca:
import java.util.ArrayList;
03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto
DesenvolvimentodeSoftwarepareaWeb2016
DECLARANDO E INICIALIZAÇÃO
ARRAYLIST
ArrayList<String> a = new
ArrayList<String>();
A declaração acima cria um objeto da classe
ArrayList vazio que pode armazenar strings
String é o tipo de dado que será
armazenado no conteiner
Não é necessário mencionar o tamanho
03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto
DesenvolvimentodeSoftwarepareaWeb2016
MÉTODO ADD ARRAYLIST
• Elementos podem ser adicionados
posteriormente, bastante indicar a posição em
que se deseja inseri-los:
a.add(1, “TESTE”);
• O elemento na posição especificada já deve
existir. Add aumenta o tamanho da lista. Com
isso, todos os elementos que já estão
armazenados são deslocados em uma posição
à sua direita.
03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto
DesenvolvimentodeSoftwarepareaWeb2016
MÉTODO ADD ARRAYLIST
• Depois que o ArrayList é criado, valores podem
ser adicionados usando ADD
ArrayList<String> a = new ArrayList<String>();
a.add(“Olá”);
a.add(“bom dia”);
• Os elementos são adicionados ao final do objeto
03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto
DesenvolvimentodeSoftwarepareaWeb2016
MÉTODOS GET E SET
ARRAYLIST
• Os valores armazenados em um ArrayList podem
ser obtidos usando GET
String s = a.get(0);
• A linha acima obtém o valor armazenado na posição
zero do array list e o atribui à variável s
• Um valor de um elemento pode ser alterado usando
SET
a.set(1, “MUNDO”);
• Na linha acima, texto MUNDO está sendo inserido
na posição 1 do ArrayList, isto é, apaga o que
03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto
DesenvolvimentodeSoftwarepareaWeb2016
MÉTODOS REMOVE
ARRAYLIST
• Um elemento pode ser removido usando
REMOVE
a.remove(“1”);
• A linha acima remove o elemento que está na
posição 1 e diminui o tamanho do arraylist
• Os elementos que já estão armazenados são
deslocados uma posição para a esquerda
03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto
DesenvolvimentodeSoftwarepareaWeb2016
TAMANHO DO ARRAYLIST
• SIZE pode ser usado para saber o tamanho do
arraylist
int tamanho = a.size();
• O método size retorna o tamanho do arraylist
como um número inteiro e esse valor é
armazenado na variável TAMANHO
03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto
DesenvolvimentodeSoftwarepareaWeb2016
IMPRIMINDO UM ARRAYLIST
import java.util.ArrayList;
public class Program {
public static void main(String[] args) {
ArrayList<Integer> list = new ArrayList<>();
list.add(10);
list.add(20);
list.add(30);
for (int value : list) {
System.out.println(value);
}
}
}
03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto
DesenvolvimentodeSoftwarepareaWeb2016
PESQUISANDO UM VALOR
INTEIRO NO ARRAYLIST
import java.util.ArrayList;
public class Estudos{
public static void main(String[] args){
// cria uma ArrayList que conterá inteiros
ArrayList<Integer> valores = new ArrayList<Integer>();
// adiciona itens na lista
valores.add(34);
valores.add(12);
valores.add(8);
valores.add(23);
if(valores.contains(12)){
System.out.println("O valor pesquisado foi encontrado.");
}
else{
System.out.println("O valor pesquisado não foi encontrado.");
}
}
}
03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto
DesenvolvimentodeSoftwarepareaWeb2016
ARRAYLIST COM OBJETOS DE
CLASSE
List<Autores> listaAutor = new
ArrayList<Autores>();
Autores a1 = new Autores();
a1.setIdAutores(1234);
a1.setPrimeiroNome(“Elaine”);
a1.setSegundoNome(“Gatto”);
listaAutor.add(a1);
for (Autores a1 : list) {
System.out.println(p);
}
03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto
DesenvolvimentodeSoftwarepareaWeb2016
INDEXOF, LASTINDEXOF
import java.util.ArrayList;
public class Program {
public static void main(String[] args) {
ArrayList<Integer> list = new ArrayList<>();
list.add(101);
list.add(100);
list.add(99);
list.add(100);
list.add(99);
int index = list.indexOf(100);
int lastIndex = list.lastIndexOf(100);
int notFound = list.indexOf(200);
System.out.println(index); // 1
System.out.println(lastIndex); // 3
System.out.println(notFound); // -1
}
}
03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto
DesenvolvimentodeSoftwarepareaWeb2016
VERIFICANDO SE A LISTA ESTÁ
VAZIA
import java.util.ArrayList;
public class Program {
public static void main(String[] args) {
ArrayList<Integer> list = new ArrayList<>();
list.add(1);
//imprimirá se a lista está vazia
System.out.println(list.isEmpty());
// limpa o arraylist
list.clear();
//está vazia agora?
if (list.isEmpty()) {
System.out.println("Empty");
}
}
}
03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto
DesenvolvimentodeSoftwarepareaWeb2016
ORDENANDO OS VALORES EM
UM ARRAYLIST
import java.util.Collections;
import java.util.ArrayList;
public class Program {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
list.add("cat");
list.add("bird");
list.add("ant");
list.add("dog");
// organiza os elementos em ordem alfabética
Collections.sort(list);
for (String value : list) {
System.out.println(value);
}
}
}
03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto
DesenvolvimentodeSoftwarepareaWeb2016
REFERÊNCIAS
03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto
DesenvolvimentodeSoftwarepareaWeb2016
REFERENCIAS
• VICENTE, Angelo. O que significa cada palavra reservada.
Disponível em: http://www.devmedia.com.br/o-que-significa-
cada-palavra-reservada/8320. Acessado em: 06/05/2016.
• FURGERI, Sérgio. Java 7: Ensino Didático. São Paulo: Érica,
2010.
• SCHILDT, Hebert; SKRIEN, Dale. Programação com Java:
Uma Introdução Abrangente. Porto Alegre: AMGH, 2013.
• DEITEL, Harvey M.; DEITEL, PAUL J. Java Como Programar.
Prentice Hall, 2010.
• http://www.dotnetperls.com/arraylist-java
03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto
DesenvolvimentodeSoftwarepareaWeb2016

Weitere ähnliche Inhalte

Was ist angesagt?

Tutorial Django + Python
Tutorial Django + PythonTutorial Django + Python
Tutorial Django + Python
Mateus Padua
 
Testando Aplicações Django: Quando, Como e Onde?
Testando Aplicações Django: Quando, Como e Onde?Testando Aplicações Django: Quando, Como e Onde?
Testando Aplicações Django: Quando, Como e Onde?
Bernardo Fontes
 
Python e Django na Globo.com
Python e Django na Globo.comPython e Django na Globo.com
Python e Django na Globo.com
ricobl
 
Java 02 Iniciando Uso Java
Java 02 Iniciando Uso JavaJava 02 Iniciando Uso Java
Java 02 Iniciando Uso Java
Regis Magalhães
 

Was ist angesagt? (20)

Curso de C# - Introdução
Curso de C# - IntroduçãoCurso de C# - Introdução
Curso de C# - Introdução
 
Tutorial java script orientado à objeto e jquery
Tutorial java script orientado à objeto e jqueryTutorial java script orientado à objeto e jquery
Tutorial java script orientado à objeto e jquery
 
Abordagem Funcional para Gerenciamento de Erros em .NET
Abordagem Funcional para Gerenciamento de Erros em .NETAbordagem Funcional para Gerenciamento de Erros em .NET
Abordagem Funcional para Gerenciamento de Erros em .NET
 
Linguagem de programação C# 4 e 5
Linguagem de programação C# 4 e 5Linguagem de programação C# 4 e 5
Linguagem de programação C# 4 e 5
 
Frameworks PHP
Frameworks PHPFrameworks PHP
Frameworks PHP
 
C# 6.0 - Novos Recursos (Agosto/2015)
C# 6.0 - Novos Recursos (Agosto/2015)C# 6.0 - Novos Recursos (Agosto/2015)
C# 6.0 - Novos Recursos (Agosto/2015)
 
Tutorial Django + Python
Tutorial Django + PythonTutorial Django + Python
Tutorial Django + Python
 
Java generics-basics
Java generics-basicsJava generics-basics
Java generics-basics
 
POO2-Pre-32-PadroesProjetos_.pdf
POO2-Pre-32-PadroesProjetos_.pdfPOO2-Pre-32-PadroesProjetos_.pdf
POO2-Pre-32-PadroesProjetos_.pdf
 
Testando Aplicações Django: Quando, Como e Onde?
Testando Aplicações Django: Quando, Como e Onde?Testando Aplicações Django: Quando, Como e Onde?
Testando Aplicações Django: Quando, Como e Onde?
 
lista de exercícios de estrutura de dados Básico primeira prova
lista de exercícios de estrutura de dados Básico primeira prova lista de exercícios de estrutura de dados Básico primeira prova
lista de exercícios de estrutura de dados Básico primeira prova
 
Apostila de C# & Asp.Net
Apostila de C# & Asp.NetApostila de C# & Asp.Net
Apostila de C# & Asp.Net
 
Python e Django na Globo.com
Python e Django na Globo.comPython e Django na Globo.com
Python e Django na Globo.com
 
Java 02 Iniciando Uso Java
Java 02 Iniciando Uso JavaJava 02 Iniciando Uso Java
Java 02 Iniciando Uso Java
 
Linguagem Java
Linguagem JavaLinguagem Java
Linguagem Java
 
Gisele
GiseleGisele
Gisele
 
Programação Orientada a Objetos com Java
Programação Orientada a Objetos com JavaProgramação Orientada a Objetos com Java
Programação Orientada a Objetos com Java
 
Educação e certificação na Plataforma .NET
Educação e certificação na Plataforma .NETEducação e certificação na Plataforma .NET
Educação e certificação na Plataforma .NET
 
Java aula 04
Java aula 04Java aula 04
Java aula 04
 
Be React. Do Tests!
Be React. Do Tests!Be React. Do Tests!
Be React. Do Tests!
 

Andere mochten auch

Andere mochten auch (20)

Aula 3 introducao a orientação a objetos
Aula 3   introducao a orientação a objetosAula 3   introducao a orientação a objetos
Aula 3 introducao a orientação a objetos
 
Aula01 - POO
Aula01 - POOAula01 - POO
Aula01 - POO
 
TUTORIAL JAVA
TUTORIAL JAVATUTORIAL JAVA
TUTORIAL JAVA
 
Java primeiros-passos
Java primeiros-passosJava primeiros-passos
Java primeiros-passos
 
Linguagem de Programação Java
Linguagem de Programação JavaLinguagem de Programação Java
Linguagem de Programação Java
 
POO - Aula 1 introducao
POO - Aula 1   introducaoPOO - Aula 1   introducao
POO - Aula 1 introducao
 
Lista de Prioridades
Lista de PrioridadesLista de Prioridades
Lista de Prioridades
 
Arquitetura de Computadores: Memórias Ram
Arquitetura de Computadores: Memórias RamArquitetura de Computadores: Memórias Ram
Arquitetura de Computadores: Memórias Ram
 
Arquitetura de Computadores: Memórias - Nível lógico
Arquitetura de Computadores: Memórias - Nível lógicoArquitetura de Computadores: Memórias - Nível lógico
Arquitetura de Computadores: Memórias - Nível lógico
 
Clock
ClockClock
Clock
 
Java - Básico
Java - BásicoJava - Básico
Java - Básico
 
Hierarquia de níveis
Hierarquia de níveisHierarquia de níveis
Hierarquia de níveis
 
Memórias Ram
Memórias RamMemórias Ram
Memórias Ram
 
Conceitos e arquitetura do sistema de banco de dados
Conceitos e arquitetura do sistema de banco de dadosConceitos e arquitetura do sistema de banco de dados
Conceitos e arquitetura do sistema de banco de dados
 
Programação Orientada a Objetos - Conceitos básicos da linguagem JAVA
Programação Orientada a Objetos - Conceitos básicos da linguagem JAVAProgramação Orientada a Objetos - Conceitos básicos da linguagem JAVA
Programação Orientada a Objetos - Conceitos básicos da linguagem JAVA
 
Processadores intel 8008 e 8080
Processadores intel 8008 e 8080Processadores intel 8008 e 8080
Processadores intel 8008 e 8080
 
Filas
FilasFilas
Filas
 
Recursão
RecursãoRecursão
Recursão
 
Pilhas
PilhasPilhas
Pilhas
 
Pitagoras - Introdução a Programação Orientada a Objetos - Encapsulamento, Ac...
Pitagoras - Introdução a Programação Orientada a Objetos - Encapsulamento, Ac...Pitagoras - Introdução a Programação Orientada a Objetos - Encapsulamento, Ac...
Pitagoras - Introdução a Programação Orientada a Objetos - Encapsulamento, Ac...
 

Ähnlich wie Programação Orientada a Objetos parte 3

Oficina de Web Design Lecom - PHP e JavaScript
Oficina de Web Design Lecom - PHP e JavaScriptOficina de Web Design Lecom - PHP e JavaScript
Oficina de Web Design Lecom - PHP e JavaScript
Raphael Donaire Albino
 

Ähnlich wie Programação Orientada a Objetos parte 3 (20)

Comandos gerais do PHP
Comandos gerais do PHPComandos gerais do PHP
Comandos gerais do PHP
 
Desvendando a linguagem JavaScript
Desvendando a linguagem JavaScriptDesvendando a linguagem JavaScript
Desvendando a linguagem JavaScript
 
Curso Java Básico - Aula 01
Curso Java Básico - Aula 01Curso Java Básico - Aula 01
Curso Java Básico - Aula 01
 
Desenvolvendo aplicações web com python e web2py
Desenvolvendo aplicações web com python e web2pyDesenvolvendo aplicações web com python e web2py
Desenvolvendo aplicações web com python e web2py
 
Fascículo1java
Fascículo1javaFascículo1java
Fascículo1java
 
Programação desktop - apresentação
Programação desktop -  apresentaçãoProgramação desktop -  apresentação
Programação desktop - apresentação
 
Ferramenta Flow - Análise estática de códigos javascript
Ferramenta Flow - Análise estática de códigos javascriptFerramenta Flow - Análise estática de códigos javascript
Ferramenta Flow - Análise estática de códigos javascript
 
Curso básico de Algoritmos com Python
Curso básico de Algoritmos com PythonCurso básico de Algoritmos com Python
Curso básico de Algoritmos com Python
 
JAVA - Introdução
JAVA - IntroduçãoJAVA - Introdução
JAVA - Introdução
 
Oficina de Web Design Lecom - PHP e JavaScript
Oficina de Web Design Lecom - PHP e JavaScriptOficina de Web Design Lecom - PHP e JavaScript
Oficina de Web Design Lecom - PHP e JavaScript
 
Palestra TDD Javou! #08 2016
Palestra TDD Javou! #08 2016Palestra TDD Javou! #08 2016
Palestra TDD Javou! #08 2016
 
TDC 2014 POA - Clean Code para Testers
TDC 2014 POA - Clean Code para TestersTDC 2014 POA - Clean Code para Testers
TDC 2014 POA - Clean Code para Testers
 
Java cert programmer
Java cert programmerJava cert programmer
Java cert programmer
 
M5-Desenvolvimento-Paginas-Web
M5-Desenvolvimento-Paginas-WebM5-Desenvolvimento-Paginas-Web
M5-Desenvolvimento-Paginas-Web
 
Aula 08.1 - ALP - Linguagem C (Primeiros passos)
Aula 08.1 - ALP - Linguagem C (Primeiros passos)Aula 08.1 - ALP - Linguagem C (Primeiros passos)
Aula 08.1 - ALP - Linguagem C (Primeiros passos)
 
O futuro do elephante: as promessas do php para 2019
O futuro do elephante: as promessas do php para 2019O futuro do elephante: as promessas do php para 2019
O futuro do elephante: as promessas do php para 2019
 
Importância de Testes Automatizados para Continuous Delivery & DevOps
Importância de Testes Automatizados para Continuous Delivery & DevOpsImportância de Testes Automatizados para Continuous Delivery & DevOps
Importância de Testes Automatizados para Continuous Delivery & DevOps
 
Samanta Cicilia - MTC - Importância de Testes Automatizados para Continuous D...
Samanta Cicilia - MTC - Importância de Testes Automatizados para Continuous D...Samanta Cicilia - MTC - Importância de Testes Automatizados para Continuous D...
Samanta Cicilia - MTC - Importância de Testes Automatizados para Continuous D...
 
Palestra TDD - TDC - 2016
Palestra TDD - TDC - 2016Palestra TDD - TDC - 2016
Palestra TDD - TDC - 2016
 
Introdução a Linguagem de Programação
Introdução a Linguagem de ProgramaçãoIntrodução a Linguagem de Programação
Introdução a Linguagem de Programação
 

Mehr von Elaine Cecília Gatto

Mehr von Elaine Cecília Gatto (20)

A influência da Tecnologia em cada faixa etaria
A influência da Tecnologia em cada faixa etariaA influência da Tecnologia em cada faixa etaria
A influência da Tecnologia em cada faixa etaria
 
Inteligência Artificial Aplicada à Medicina
Inteligência Artificial Aplicada à MedicinaInteligência Artificial Aplicada à Medicina
Inteligência Artificial Aplicada à Medicina
 
Além do Aprendizado Local e Global: Particionando o espaço de classes em prob...
Além do Aprendizado Local e Global: Particionando o espaço de classes em prob...Além do Aprendizado Local e Global: Particionando o espaço de classes em prob...
Além do Aprendizado Local e Global: Particionando o espaço de classes em prob...
 
Apresentação da minha tese de doutorado no EPPC
Apresentação da minha tese de doutorado no EPPCApresentação da minha tese de doutorado no EPPC
Apresentação da minha tese de doutorado no EPPC
 
entrevista r7.pdf
entrevista r7.pdfentrevista r7.pdf
entrevista r7.pdf
 
Como a pesquisa científica impacta o mundo real.pptx
Como a pesquisa científica impacta o mundo real.pptxComo a pesquisa científica impacta o mundo real.pptx
Como a pesquisa científica impacta o mundo real.pptx
 
Empoderamento Feminino
Empoderamento FemininoEmpoderamento Feminino
Empoderamento Feminino
 
Explorando correlações entre rótulos para o particionamento do espaço de rótu...
Explorando correlações entre rótulos para o particionamento do espaço de rótu...Explorando correlações entre rótulos para o particionamento do espaço de rótu...
Explorando correlações entre rótulos para o particionamento do espaço de rótu...
 
Community Detection for Multi-Label Classification - Seminários UFSCar
Community Detection for Multi-Label Classification - Seminários UFSCarCommunity Detection for Multi-Label Classification - Seminários UFSCar
Community Detection for Multi-Label Classification - Seminários UFSCar
 
Classificação Multirrótulo: Aprendizado de Correlações
Classificação Multirrótulo: Aprendizado de CorrelaçõesClassificação Multirrótulo: Aprendizado de Correlações
Classificação Multirrótulo: Aprendizado de Correlações
 
EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...
EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...
EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...
 
Community Detection Method for Multi-Label Classification
Community Detection Method for Multi-Label ClassificationCommunity Detection Method for Multi-Label Classification
Community Detection Method for Multi-Label Classification
 
Mulheres na Campus Party assumir o feminismo ou não – Blogueiras Feministas.pdf
Mulheres na Campus Party assumir o feminismo ou não – Blogueiras Feministas.pdfMulheres na Campus Party assumir o feminismo ou não – Blogueiras Feministas.pdf
Mulheres na Campus Party assumir o feminismo ou não – Blogueiras Feministas.pdf
 
Curtinhas de sábado.pdf
Curtinhas de sábado.pdfCurtinhas de sábado.pdf
Curtinhas de sábado.pdf
 
Explorando Correlações entre Rótulos usando Métodos de Detecção de Comu...
Explorando Correlações entre Rótulos usando Métodos de Detecção de Comu...Explorando Correlações entre Rótulos usando Métodos de Detecção de Comu...
Explorando Correlações entre Rótulos usando Métodos de Detecção de Comu...
 
EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...
EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...
EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...
 
Pipeline desdobramento escalonamento
Pipeline desdobramento escalonamentoPipeline desdobramento escalonamento
Pipeline desdobramento escalonamento
 
Cheat sheet Mips 32 bits
Cheat sheet Mips 32 bitsCheat sheet Mips 32 bits
Cheat sheet Mips 32 bits
 
Resumo das Instruções de Desvio Incondicionais MIPS 32 bits
Resumo das Instruções de Desvio Incondicionais MIPS 32 bitsResumo das Instruções de Desvio Incondicionais MIPS 32 bits
Resumo das Instruções de Desvio Incondicionais MIPS 32 bits
 
Como descobrir e classificar coisas usando machine learning sem compilcação
Como descobrir e classificar coisas usando machine learning sem compilcaçãoComo descobrir e classificar coisas usando machine learning sem compilcação
Como descobrir e classificar coisas usando machine learning sem compilcação
 

Kürzlich hochgeladen

O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
azulassessoria9
 
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
PatriciaCaetano18
 
Sistema articular aula 4 (1).pdf articulações e junturas
Sistema articular aula 4 (1).pdf articulações e junturasSistema articular aula 4 (1).pdf articulações e junturas
Sistema articular aula 4 (1).pdf articulações e junturas
rfmbrandao
 
atividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdf
atividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdfatividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdf
atividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdf
Autonoma
 

Kürzlich hochgeladen (20)

Camadas da terra -Litosfera conteúdo 6º ano
Camadas da terra -Litosfera  conteúdo 6º anoCamadas da terra -Litosfera  conteúdo 6º ano
Camadas da terra -Litosfera conteúdo 6º ano
 
Cartão de crédito e fatura do cartão.pptx
Cartão de crédito e fatura do cartão.pptxCartão de crédito e fatura do cartão.pptx
Cartão de crédito e fatura do cartão.pptx
 
Quiz | Dia da Europa 2024 (comemoração)
Quiz | Dia da Europa 2024  (comemoração)Quiz | Dia da Europa 2024  (comemoração)
Quiz | Dia da Europa 2024 (comemoração)
 
Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...
Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...
Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...
 
GUIA DE APRENDIZAGEM 2024 9º A - História 1 BI.doc
GUIA DE APRENDIZAGEM 2024 9º A - História 1 BI.docGUIA DE APRENDIZAGEM 2024 9º A - História 1 BI.doc
GUIA DE APRENDIZAGEM 2024 9º A - História 1 BI.doc
 
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
 
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
 
Sistema articular aula 4 (1).pdf articulações e junturas
Sistema articular aula 4 (1).pdf articulações e junturasSistema articular aula 4 (1).pdf articulações e junturas
Sistema articular aula 4 (1).pdf articulações e junturas
 
MESTRES DA CULTURA DE ASSARÉ Prof. Francisco Leite.pdf
MESTRES DA CULTURA DE ASSARÉ Prof. Francisco Leite.pdfMESTRES DA CULTURA DE ASSARÉ Prof. Francisco Leite.pdf
MESTRES DA CULTURA DE ASSARÉ Prof. Francisco Leite.pdf
 
Currículo - Ícaro Kleisson - Tutor acadêmico.pdf
Currículo - Ícaro Kleisson - Tutor acadêmico.pdfCurrículo - Ícaro Kleisson - Tutor acadêmico.pdf
Currículo - Ícaro Kleisson - Tutor acadêmico.pdf
 
Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!
Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!
Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!
 
Monoteísmo, Politeísmo, Panteísmo 7 ANO2.pptx
Monoteísmo, Politeísmo, Panteísmo 7 ANO2.pptxMonoteísmo, Politeísmo, Panteísmo 7 ANO2.pptx
Monoteísmo, Politeísmo, Panteísmo 7 ANO2.pptx
 
apostila filosofia 1 ano 1s (1).pdf 1 ANO DO ENSINO MEDIO . CONCEITOSE CARAC...
apostila filosofia 1 ano  1s (1).pdf 1 ANO DO ENSINO MEDIO . CONCEITOSE CARAC...apostila filosofia 1 ano  1s (1).pdf 1 ANO DO ENSINO MEDIO . CONCEITOSE CARAC...
apostila filosofia 1 ano 1s (1).pdf 1 ANO DO ENSINO MEDIO . CONCEITOSE CARAC...
 
AULÃO de Língua Portuguesa para o Saepe 2022
AULÃO de Língua Portuguesa para o Saepe 2022AULÃO de Língua Portuguesa para o Saepe 2022
AULÃO de Língua Portuguesa para o Saepe 2022
 
aprendizagem significatica, teórico David Ausubel
aprendizagem significatica, teórico David Ausubelaprendizagem significatica, teórico David Ausubel
aprendizagem significatica, teórico David Ausubel
 
atividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdf
atividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdfatividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdf
atividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdf
 
Sopa de letras | Dia da Europa 2024 (nível 2)
Sopa de letras | Dia da Europa 2024 (nível 2)Sopa de letras | Dia da Europa 2024 (nível 2)
Sopa de letras | Dia da Europa 2024 (nível 2)
 
O desenvolvimento é um conceito mais amplo, pode ter um contexto biológico ou...
O desenvolvimento é um conceito mais amplo, pode ter um contexto biológico ou...O desenvolvimento é um conceito mais amplo, pode ter um contexto biológico ou...
O desenvolvimento é um conceito mais amplo, pode ter um contexto biológico ou...
 
LENDA DA MANDIOCA - leitura e interpretação
LENDA DA MANDIOCA - leitura e interpretaçãoLENDA DA MANDIOCA - leitura e interpretação
LENDA DA MANDIOCA - leitura e interpretação
 
Historia de Portugal - Quarto Ano - 2024
Historia de Portugal - Quarto Ano - 2024Historia de Portugal - Quarto Ano - 2024
Historia de Portugal - Quarto Ano - 2024
 

Programação Orientada a Objetos parte 3

  • 1. PROGRAMAÇÃO ORIENTADA A OBJETOS INTRODUÇÃO À LINGUAGEM JAVA 03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto DesenvolvimentodeSoftwarepareaWeb2016
  • 3. TIPOS DE DADOS • Java é uma linguagem fortemente tipada • FORTEMENTE TIPADA: – Característica de uma linguagem de programação em relação aos seus tipos de dados; – Permite que todas as operações tenham compatibilidade de seus tipos verificada pelo compilador – Operações inválidas não são compiladas 03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto DesenvolvimentodeSoftwarepareaWeb2016
  • 4. TIPOS DE DADOS • Verificação minuciosa e cuidadosa dos tipos de dados – Diminui a ocorrência de erros – Melhora a confiabilidade • Todas as variáveis tem tipos • Todas as expressões tem tipos • Todos os valores tem tipo • O tipo de um valor determina as operações que podem ser executadas nele 03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto DesenvolvimentodeSoftwarepareaWeb2016
  • 5. TIPOS DE DADOS • Cada tipo de dado – de qualquer linguagem de programação – exige um espaço adequado para seu armazenamento. • PORTABILIDADE DE TIPOS DE DADOS: – em JAVA os tipos de dados tem sempre a mesma dimensão de armazenamento (intervalo de bits), independente da arquitetura do conjunto de instruções do microprocessador a qual está sendo executada 03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto DesenvolvimentodeSoftwarepareaWeb2016
  • 6. TIPOS DE DADOS • DESVANTAGEM DA PORTABILIDADE DE TIPOS DE DADOS: – Em alguns ambientes de execução, o desempenho pode ser um pouco mais baixo, por conta da especificação rígida dos intervalos, que é inflexível em Java. • Dois tipos de dados internos gerais: – Orientado a objetos – Não orientado a objetos: • Oito tipos de dados primitivos ou dados elementares ou dados simples • São valores binários comuns 03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto DesenvolvimentodeSoftwarepareaWeb2016
  • 7. TIPOS DE DADOS TIPOS DE DADOS PRIMITIVOS INTERNOS TIPO SIGNIFICADO Boolean Representa valores verdadeiro ou falso Byte Representa um valor inteiro de 8 bits Char Representa um caractere (uma letra, símbolo, pontuação, etc) Double Representa um valor de ponto flutuante de precisão dupla Float Representa um valor de ponto flutuante de precisão simples Int Representa um valor inteiro Long Representa um valor inteiro longo Short Representa um valor inteiro curto 03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto DesenvolvimentodeSoftwarepareaWeb2016
  • 8. TIPOS DE DADOS 03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto DesenvolvimentodeSoftwarepareaWeb2016 TIPOS DE DADOS INTEIROS TIPO BITS INTERVALO byte 8 -128 a +127 short 16 32.768 a +32.767 int 32 -2.147.483.648 a +2.147.483.648 long 64 -9.223.372.036.854.775.808 a +9.223.372.036.854.775.808 Java não suporta inteiros sem sinal BYTE  dados binários brutos, nem sempre compatíveis com outros tipos internos Java
  • 9. TIPOS DE DADOS 03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto DesenvolvimentodeSoftwarepareaWeb2016 TIPOS DE DADOS DE PONTO FLUTUANTE TIPO BITS INTERVALO float 32 1.40239846e-46 a é 3.40282347e+38 Tamanho do maior literal float: 3,4x1038 Norma IEEE 754 Ponto flutuante com sinal de precisão simples Números positivos e negativos double 64 4.94065645841246544e-324 a 1.7976931348623157e+308 Tamanho do maior literal double: 1,8x10308 Norma IEEE 754 Ponto flutuante com sinal com precisão dupla Números positivos e negativos DOUBLE é o tipo mais usado DOUBLE é usado na biblioteca matemática MATH
  • 10. TIPOS DE DADOS 03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto DesenvolvimentodeSoftwarepareaWeb2016 TIPOS DE DADOS CARACTERE TIPO BITS INTERVALO char 16 0 a 65.536 Pode ser usado como tipo inteiro de 16 bits sem sinal ‘u0000’ a ‘uFFFF’ Java suporta caracteres UNICODE UNICODE: todos os caracteres de todos os idiomas ASCII é um subconjunto de UNICODE (8 BITS) Operações aritméticas podem ser aplicadas ao tipo CHAR
  • 11. TIPOS DE DADOS 03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto DesenvolvimentodeSoftwarepareaWeb2016 TIPOS DE DADOS BOOLEAN TIPO BITS INTERVALO boolean 8 True ou false Verdadeiro ou falso Operações lógicas e relacionais podem ser usadas com o tipo boolean
  • 13. LITERAIS 03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto DesenvolvimentodeSoftwarepareaWeb2016 • São valores fixos representados em sua forma legível • Literais = constantes • Podem ser de qualquer tipo primitivo • Literais caracteres: ‘a’, ‘b’, ‘c’ • Literais inteiros: 10, -100, 200, -1 • Literais double: 11,23; 52,7 • Literais float: 51,4f; 78,9F • Literais long int: 12L; 14l • Literais string: “isto é uma string”
  • 14. LITERAIS 03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto DesenvolvimentodeSoftwarepareaWeb2016 • Notação Científica: – 1,2345E2 = 123,4 – 1,2345E-2 = 0,01234 • Literais inteiros hexadecimais – começa com 0x ou 0X – 0xFF; 0X1A • Literais inteiros octais – começa com zero – 011; 087 • Literais inteiros binários: – Começa com 0b ou 0B – 0b1100; 0B0101
  • 16. SEQUENCIAS DE ESCAPE SEQUENCIA DESCRIÇÃO ’ Aspas simples ” Aspas duplas Barra invertida r Retorno de carro n Nova linha f Avanço de página t Tabulação horizontal b Retrocesso ddd Constante octal uxxxx Constante hexadecimal 03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto DesenvolvimentodeSoftwarepareaWeb2016
  • 18. PALAVRAS RESERVADAS • Modificadores de acesso: – Private: Um método ou variável só pode ser acessado de dentro da própria classe; – Protected: Um método ou variável só pode ser acessado por classes do mesmo pacote ou subclasses da classe; – Public: Uma classe, método ou variável pode ser acessado a partir de qualquer outra classe. 03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto DesenvolvimentodeSoftwarepareaWeb2016
  • 19. PALAVRAS RESERVADAS • Controle de fluxo: – Break: Força o fluxo do programa a sair do bloco do código onde a palavra foi inserida; – Case: Executa um bloco de código que é dependente da instrução switch; – Continue: Força o código existente, após essa instrução, a não ser executado em um loop, indicando a próxima interação do loop; 03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto DesenvolvimentodeSoftwarepareaWeb2016
  • 20. PALAVRAS RESERVADAS • Controle de fluxo: – Default: Executa o bloco de código se nenhuma das instruções switch/case for atendida; – Do: Executa um bloco de código um vez e, em seguida, junto com a instrução while, processa um teste para determinar se o bloco deve ser executado novamente; – For: Executa um loop condicional em um bloco de código; 03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto DesenvolvimentodeSoftwarepareaWeb2016
  • 21. PALAVRAS RESERVADAS • Controle de fluxo: – Return: Força o fluxo do programa a sair de um método sem executar nenhum código que esteja após a instrução podendo retornar uma variável; – Switch: Indica a variável a ser comparada com as instruções case; – While: Executa um bloco de código repetidamente, enquanto um certa condição for verdadeira; 03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto DesenvolvimentodeSoftwarepareaWeb2016
  • 22. PALAVRAS RESERVADAS • Controle de fluxo: – Else: Executa um bloco de código alternativo se uma condição if for falsa; – If: Executa um teste lógico verdadeiro ou falso; – Instanceof: Determina se um objeto é a instancia de uma classe, superclasse ou interface. 03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto DesenvolvimentodeSoftwarepareaWeb2016
  • 23. PALAVRAS RESERVADAS • Modificadores de classe, método e variável: – Abstract: Usada para declarar uma classe que não pode ser instanciada ou um método que deve ser implementado por subclasses concretas; – Implements: Usada para indicar a uma interface que uma classe a implementará; – Extends: Usada para estender uma classe a outra. Indica uma superclasse que uma subclasse está estendendo (herança); 03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto DesenvolvimentodeSoftwarepareaWeb2016
  • 24. PALAVRAS RESERVADAS • Modificadores de classe, método e variável: – Final: usada para tornar impossível estender uma classe, sobrepor um método ou reiniciar uma variável; – Class: Usada para identificar uma classe; – Interface: Usada para identificar uma interface; – Transient: Impede que os campos sejam 03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto DesenvolvimentodeSoftwarepareaWeb2016
  • 25. PALAVRAS RESERVADAS • Modificadores de classe, método e variável: – Native: Indica que um método foi escrito em uma linguagem que só pode ser usada em uma plataforma, exemplo: C#; – New: Usada para instanciar um objeto; – Static: Indica que o método ou a variável pertence à classe e não à instancia; 03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto DesenvolvimentodeSoftwarepareaWeb2016
  • 26. PALAVRAS RESERVADAS • Modificadores de classe, método e variável: – Strictfp: Usada na frente de um método para indicar que os números de ponto flutuante seguirão regras restritas de ponto flutuante em todas as expressões; – Syncronized: Indica que um método só pode ser acessado por um seguimento de cada vez; – Volatile: Indica que a variável pode não ficar sincronizada por ser usada em fragmentos. 03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto DesenvolvimentodeSoftwarepareaWeb2016
  • 27. PALAVRAS RESERVADAS • Controle de Pacotes: – Import: importação de pacotes ou classes para o código; – Package: Especifica a que pacote todas as classes de um arquivo fonte pertence. 03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto DesenvolvimentodeSoftwarepareaWeb2016
  • 28. PALAVRAS RESERVADAS • Palavra void para tipos retornados: – Void: Indica que não há um tipo de retorno para o método. • Palavras reservadas não utilizadas: – Const: Não use esta palavra para declarar constantes use public static final; – Goto: Não foi implementada na linguagem Java por ser considerada perigosa. 03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto DesenvolvimentodeSoftwarepareaWeb2016
  • 29. PALAVRAS RESERVADAS • Tratamento de Erros: – Throws: Indica o método que passará uma execução para o método que o chamou; – Try: Bloco de código que será executado, podendo, porém, causar uma exceção; – Assert: Avalia uma expressão condicional para verificar as alternativas do programador; 03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto DesenvolvimentodeSoftwarepareaWeb2016
  • 30. PALAVRAS RESERVADAS • Tratamento de Erros: – Catch: Declara o bloco de código usado para tratar uma execução; – Finally: Bloco de código, geralmente após uma instrução try-catch, que vai ser executado independente de que fluxo do programa for usado no tratamento de uma exceção; – Throw: Usada para passar uma execução para o método que chamou o método atual. 03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto DesenvolvimentodeSoftwarepareaWeb2016
  • 31. PALAVRAS RESERVADAS • Palavras chaves de variáveis: – Super: Variável de referência que diz respeito a superclasse imediata; – This: Variável de referência que diz respeito a instancia atual de um objeto; – Null: Rrepresenta “algo” sem valor definido; referência de um objeto nulo. 03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto DesenvolvimentodeSoftwarepareaWeb2016
  • 33. DEFINIÇÃO DE VARIÁVEIS • É um tipo de identificador; • É um nome dado pelo programador para um tipo de dado o qual deseja armazenar; • Um identificador é a LOCALIZAÇÃO na memória capaz de armazenar o valor de um certo tipo de dado; • Pode ter um ou mais endereços na memória; • Todo identificador deve ser declarado antes de ser utilizado. 03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto DesenvolvimentodeSoftwarepareaWeb2016
  • 34. DECLARAÇÃO DE VARIÁVEIS • Nomes de variáveis podem começar com – LETRA: preco, nome; – SUBLINHADO (_): _preco, _nome; – CIFRÃO ($): $preco, $nome. • PADRÃO DE NOMENCLATURA: – Nome de variável simples: preco, nome, etc. – Nome de variável composto: valorVenda, codigoFornecedor, etc. 03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto DesenvolvimentodeSoftwarepareaWeb2016
  • 35. DECLARAÇÃO DE VARIÁVEIS SINTAXE: TIPO NOME; int idade; float valor; boolean teste; char sexo; double preco; 03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto DesenvolvimentodeSoftwarepareaWeb2016
  • 36. INICIALIZAÇÃO DE VARIÁVEIS • Valores padrão são atribuídos às variáveis declaradas: – CHAR, BYTE, SHORT, INT, LONG, FLOT e DOUBLE: valor zero é o padrão; – BOOLEAN: false é o valor padrão; • Quando uma variável é declarada, uma instância de seu tipo é criada; • Boa prática: inicializar as variáveis no momento da declaração • LEMBRE-SE: JAVA É CASE SENSITIVE! • O comando de atribuição é usado para atribui um valor à uma variável: o sinal de igual é este comando! 03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto DesenvolvimentodeSoftwarepareaWeb2016
  • 37. INICIALIZAÇÃO DE VARIÁVEIS SINTAXE: TIPO NOME = VALOR; int idade = 20; float valor = 10f; boolean teste = true; char sexo = ‘f’; double preco = 20; String nome = “Joana”; 03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto DesenvolvimentodeSoftwarepareaWeb2016
  • 38. INICIALIZAÇÃO DINÂMICA DE VARIÁVEIS SINTAXE: TIPO NOME = VALOR; A inicialização dinâmica permite que seja atribuído um valor, a uma variável, em tempo de execução Double volume = 3.14 * height; 03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto DesenvolvimentodeSoftwarepareaWeb2016
  • 39. CONSTANTES • É um tipo de variável que não pode alterar seu conteúdo depois de ter sido inicializada; • O conteúdo deve permanecer o mesmo durante toda a execução do programa; • Em JAVA não existe constante, existe um tipo de variável com um comportamento parecido 03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto DesenvolvimentodeSoftwarepareaWeb2016
  • 40. CONSTANTES • Usa-se a palavra chave FINAL no inicio da declaração da variável para se obter uma constante em Java final double pi = 3.145; 03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto DesenvolvimentodeSoftwarepareaWeb2016
  • 41. ESCOPO E TEMPO DE VIDA • Variáveis podem ser declaradas dentro de qualquer bloco; • Cada bloco de programa, em JAVA, é determinado pelas chaves { } ; • Cada bloco é um escopo; • Um escopo determinada que objetos estarão visíveis para outras partes de seu programa, assim como o tempo de vida desses objetos; 03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto DesenvolvimentodeSoftwarepareaWeb2016
  • 42. ESCOPO E TEMPO DE VIDA • Escopos em JAVA: classes e métodos; • Regra geral: as variáveis declaradas dentro de um escopo NÃO podem ser acessadas por um código do programa fora deste escopo; • Regras de escopo: são a base do conceito de ENCAPSULAMENTO; 03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto DesenvolvimentodeSoftwarepareaWeb2016
  • 43. ESCOPO E TEMPO DE VIDA • Dentro de um bloco, variáveis podem ser declaradas em qualquer ponto, entretanto só serão válidas após a declaração; • Variáveis são destruídas fora do seu escopo, elas só mantem o seu valor, enquanto estiverem dentro do seu escopo • O tempo de vida de uma variável está atrelado ao seu escopo 03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto DesenvolvimentodeSoftwarepareaWeb2016
  • 44. ESCOPO E TEMPO DE VIDA • ATENÇÃO: Se dentro do bloco, a variável for inicializada, então, toda vez que se entrar nesse bloco, a variável sempre será inicializada • Nenhuma variável declarada dentro de um escopo interno pode ter o mesmo nome de uma variável declarada por um escopo externo 03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto DesenvolvimentodeSoftwarepareaWeb2016
  • 46. COMENTÁRIOS • Comentários de uma linha: // • Comentários de mais de uma linha: /* */ 03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto DesenvolvimentodeSoftwarepareaWeb2016
  • 48. OPERADORES • DEFINIÇÃO: é um símbolo que solicita ao compilador que execute uma operação matemática ou lógica específica • Quatro classes gerais de operadores em JAVA: – Aritmético – Bitwise – Relacional – Lógico 03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto DesenvolvimentodeSoftwarepareaWeb2016
  • 49. OPERADORES ARITMÉTICOS OPERADOR SIGNIFICADO + Adição - Subtração * Multiplicação / Divisão % Módulo ++ Incremento (soma um) -- Decremento (tira um) 03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto DesenvolvimentodeSoftwarepareaWeb2016 Observações: DIVISÃO: quando aplicado a um inteiro, o resto gerado é truncado. O resto da divisão pode ser obtido usando o % % pode ser usado para tipos inteiros ou de ponto flutuante
  • 50. INCREMENTO E DECREMENTO 03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto DesenvolvimentodeSoftwarepareaWeb2016 OPERAÇÃO OPERADOR EM JAVA a++ Pré-incremento Soma o valor de a com 1 e utiliza o novo valor de a na expressão em que está ++a Pós-incremento Utiliza o valor de a na expressão em que está e só depois soma o valor de a com 1 a-- Pré-decremento Subtrai o valor de a com 1 e utiliza o novo valor de a na expressão em que está --a Pós-decremento Utiliza o valor de a na expressão em que está e só depois subtrai o valor de a com 1
  • 51. OPERADORES RELACIONAIS OPERADOR SIGNIFICADO == Igual != Diferente > Maior que < Menor que >= Maior ou igual que <= Menor ou igual que 03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto DesenvolvimentodeSoftwarepareaWeb2016 Respostas dos operadores relacionais: verdadeiro ou falso Relacional: refere-se aos relacionamentos que os valores podem ter uns com os outros Podem ser aplicados a todos os tipos numéricos e também o char
  • 52. OPERADORES LÓGICOS OPERADOR SIGNIFICADO & And | Or ^ Xor ! Not 03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto DesenvolvimentodeSoftwarepareaWeb2016 Respostas dos operadores lógicos: verdadeiro ou falso Lógicos: refere-se às maneiras como os valores boolean podem estar conectados Os operandos devem ser do tipo boolean
  • 53. OPERADORES LÓGICOS 03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto DesenvolvimentodeSoftwarepareaWeb2016 P Q P & Q P | Q P ^ Q ! P F F F F F V V F F V V F F V F V V V V V V V F F Tabela verdade para as operações lógicas
  • 54. OPERADORES LÓGICOS DE CURTO CIRCUITO 03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto DesenvolvimentodeSoftwarepareaWeb2016 • A versão de AND e OR comum sempre avalia cada operando da operação • A versão AND e OR de curto circuito avalia somente o segundo operando quando necessário OPERADOR SIGNIFICADO || Or (curto-circuito) && And (curto-circuito)
  • 55. PRECEDÊNCIA DE OPERADORES X ++ X -- ++ x -- x ~ Unário + Unário - coerção * / % + - >> >>> << > >= < <= instanceof == != & ^ | && || ?: = 03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto DesenvolvimentodeSoftwarepareaWeb2016
  • 57. ATRIBUIÇÕES ABREVIADAS + = - = * = / + % = & = | = ^= 03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto DesenvolvimentodeSoftwarepareaWeb2016
  • 59. CONVERSÕES EM ATRIBUIÇÕES • Um tipo de variável pode ser atributo a outro int a; float b; a =120; b= a; • Nesse caso, a conversão ocorre de forma IMPLICITA pois os tipos de dados são compatíveis • O valor do lado direito da atribuição é 03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto DesenvolvimentodeSoftwarepareaWeb2016
  • 60. CONVERSÕES EM ATRIBUIÇÕES • Uma conversão automática de tipos ocorrerá se: – Os dois tipos de dados forem compatíveis; – O tipo de dado de destino for maior que o tipo de dado da origem; • Conversão ampliadora: – Int é grande o suficiente para conter a faixa de valores do tipo byte; – Int e byte são tipos inteiros; – Tipos numéricos e de ponto flutuante são compatíveis; – Não há conversão de double para long. 03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto DesenvolvimentodeSoftwarepareaWeb2016
  • 61. COERÇÃO - CAST • É uma instrução dada ao compilador para a conversão de um tipo em outro; • Conversão de tipos EXPLICITA; • SINTAXE: (tipo-destino) expressão; 03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto DesenvolvimentodeSoftwarepareaWeb2016
  • 62. COERÇÃO - CAST Exemplo Converter para Conversão Int x = 10; Float Float y = (float) x; Int x = 10; Double Double y = (double) x; Float x = 10.5; Int Int y = (int) x; String x = “10”; Int int y = Integer.parseInt(x); String x = “20.54”; Float Float y = Float.parseFloat(x); String x = “Java”; Double Double y = Double.parseDouble(x); String x = “Java”; Vetor de bytes Byte b[] = x.getBytes(); Int x = 10; String String y = String.valueOf(x); Float x = 10.35; String String y = String.valueOf(x); Double x = 254.34; String String y = String.valueOf(x); Byte x[]; String String y = new String(x); 03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto DesenvolvimentodeSoftwarepareaWeb2016
  • 64. EXPRESSÕES • Operadores, variáveis e literais são componentes de expressões; • Toda expressão é avaliada; • Dois ou mais tipos de dados diferentes podem ser usados dentro de uma expressão, desde que sejam compatíveis. 03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto DesenvolvimentodeSoftwarepareaWeb2016
  • 65. EXPRESSÕES • Regras de promoção de tipos: – Char, byte e short são promovidos a INT; – Se um dos operandos da expressão for LONG, então toda a expressão será promovida para LONG; – Se um dos operandos da expressão for FLOAT, a expressão toda será promovida para FLOAT; – Se algum dos operandos da expressão for 03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto DesenvolvimentodeSoftwarepareaWeb2016
  • 66. EXPRESSÕES • A promoção de tipos só afeta a avaliação da expressão; • Cuidados: – Alguns resultados inesperados podem ser gerados na promoção de tipos na avalição da expressão; – Nesses casos é necessário usar coersão; 03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto DesenvolvimentodeSoftwarepareaWeb2016
  • 67. EXPRESSÕES byte b; int i; b = 10; i = b * b; //promoção de tipo para int – sem coersão b = 10; b = (byte) ( b * b ) //precisa de coersão para atribuir um int a um byte 03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto DesenvolvimentodeSoftwarepareaWeb2016
  • 68. EXPRESSÕES Char ch1 = ‘a’, ch2=‘b’; Ch1 = (char) (ch1 + ch2); //ch1 e ch2 são promovidos a INT //coersão necessária de volta para byte 03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto DesenvolvimentodeSoftwarepareaWeb2016
  • 69. OBSERVAÇÕES SOBRE O MÉTODO MAIN 03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto DesenvolvimentodeSoftwarepareaWeb2016
  • 70. OBSERVAÇÕES SOBRE O MÉTODO MAIN • MAIN: – É o nome do método que indica ao compilador o ponto inicial da execução da classe. É o método principal, em que todas as variáveis, argumentos e instruções são interpretados e processados para a execução do programa 03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto DesenvolvimentodeSoftwarepareaWeb2016
  • 71. OBSERVAÇÕES SOBRE O MÉTODO MAIN • STRING [] ARGS: – É o argumento do método principal; – É um vetor de strings responsável por receber valores que podem ser processados internamente à classe; – ARGS é a porta de entrada a partir da qual as classes podem se comunicar com outras classes; 03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto DesenvolvimentodeSoftwarepareaWeb2016
  • 73. OBTENDO DADOS COM SCANNER • https://docs.oracle.com/javase/8/docs/api/ Scanner sc = new Scanner(System.in); int i = sc.nextInt(); 03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto DesenvolvimentodeSoftwarepareaWeb2016
  • 74. OBTENDO DADOS COM SCANNER 03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto DesenvolvimentodeSoftwarepareaWeb2016 Comando Objetivo nextShort() Para ler tipos SHORT nextLong() Para ler tipos LONG nextLine() Para pular uma linha nextInt() Para ler tipos INT nextDouble() Para ler tipos DOUBLE nextFloat() Para ler tipos FLOAT nextByte() Para ler tipos BYTE nextBoolean() Para ler tipos BOOLEAN nextBigInteger() Para ler tipos BIG INTEGER nextBigDecimal() Para ler tipos BIG DECIMAL next() Para Strings
  • 75. INSTRUÇÕES DE CONTROLE DE PROGRAMA 03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto DesenvolvimentodeSoftwarepareaWeb2016
  • 77. INSTRUÇÕES DE CONTROLE: INSTRUÇÕES DE SELEÇÃO SIMPLES if(condição) { comandos; } COMPOSTA SIMPLES if(condição) { comandos; } else { comandos; } 03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto DesenvolvimentodeSoftwarepareaWeb2016
  • 78. INSTRUÇÕES DE CONTROLE: INSTRUÇÕES DE SELEÇÃO COMPOSTA ANINHADA if(condição) { comandos; } else if(condição) { comandos; } else { comandos; SWITCH/CASE int i; switch(i) { case 1: lista de comandos; break; case 2: lista de comandos; break; default: lista de comandos; 03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto DesenvolvimentodeSoftwarepareaWeb2016
  • 80. INSTRUÇÕES DE CONTROLE: INSTRUÇÕES DE ITERAÇÃO FOR for ( i = valor_inicial; condição; incremento ou decremento de i ) { comandos; } WHILE while (condição) { comandos; } 03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto DesenvolvimentodeSoftwarepareaWeb2016
  • 81. INSTRUÇÕES DE CONTROLE: INSTRUÇÕES DE ITERAÇÃO DO-WHILE do { comandos; } while(condição); WHILE while (condição) { comandos; } 03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto DesenvolvimentodeSoftwarepareaWeb2016
  • 83. CONCEITO E DEFINIÇÃO DE ARRAYS • Variável composta homogênea multidimensional; • Conjunto de variáveis de mesmo tipo; • Índice: referencia sua localização dentro da estrutura. No caso de matrizes, precisamos de tantos índices quantos forem seu dimensionamento. 03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto DesenvolvimentodeSoftwarepareaWeb2016
  • 84. DECLARAÇÃO E INICIALIZAÇÃO DE ARRAYS float x[ ][ ]; f = new float[2][10]; char [ ][ ]MAT; MAT = new char[4][3]; int [ ][ ]Y[ ]; Y = new char[2][4][3]; float x[ ][ ] = new float[2][6]; char [ ][ ]MAT = new char[4][3]; 03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto DesenvolvimentodeSoftwarepareaWeb2016
  • 85. DECLARAÇÃO E INICIALIZAÇÃO DE ARRAYS int [ ][ ]Y[ ] = new int[2][4][3]; int y[][]; y = new int[2][]; y[0] = new int[5]; y[1] = new int[2]; int y[][]; //matriz bidimensional y = new int[2][]; y[0] = new int[5]; y[1] = new int[2]; 03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto DesenvolvimentodeSoftwarepareaWeb2016
  • 86. ATRIBUINDO VALORES AO ARRAY x[ 1 ][ 4 ] = 5; MAT[ 3 ][ 2 ] = ‘D’; y[ 0 ][ 3 ][ 1 ] = 12; y[ 0 ][ 3 ][ 1 ] = 12; MAT[ 3 ][ 2 ] = ‘D’; 03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto DesenvolvimentodeSoftwarepareaWeb2016
  • 87. POPULANDO UM ARRAY int x[ ][ ] = new int[7][3]; Scanner e = new Scanner(System.in); //preenche a linha for( i = 0; i<7; i++ ) { //preenche a coluna for( j=0; j<3; j++ ) { //preenche a célula x[ i ][ j ] = e.nextInt(); } } 03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto DesenvolvimentodeSoftwarepareaWeb2016
  • 88. POPULANDO UM ARRAY int MAT[ ][ ]; MAT = new int[ 3 ][ ] ; MAT[ 0 ] = new int[ 2 ]; MAT[ 1 ] = new int[ 5 ]; MAT[ 2 ] = new int[ 3 ]; Scanner e = new Scanner(System.in); //preenche a linha for( i = 0; i<MAT.length; i++ ) { //preenche a coluna for( j=0; j<MAT[i].length; j++ ) { //preenche a célula x[ i ][ j ] = e.nextInt(); } } 03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto DesenvolvimentodeSoftwarepareaWeb2016
  • 89. IMPRIMINDO UM ARRAY //obtem índice da linha for( i=0; i<10; i++) { //obtem índice da coluna for( j=0; j<6; j++) { //imprime o conteúdo da célula que está na linha-coluna obtida System.out.println( x[ i ][ j ] ); } 03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto DesenvolvimentodeSoftwarepareaWeb2016
  • 90. IMPRIMINDO UM ARRAY //obtem o tamanho da dimensão for( i=0; i<MAT.length; i++) { //obtem o tamanho da linha for( j=0; j<MAT[ i ].length; j++) { //imprime o conteúdo da linha- coluna System.out.println( MAT[ i ][ j ] ); } } 03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto DesenvolvimentodeSoftwarepareaWeb2016
  • 91. PERCORRENDO UM ARRAY //quantidade de linhas é 3 for ( i=0; i<3; i++) { System.out.println( “Elementos da linha” + i ); //quantidade de colunas é 4 for( j=0; j<4; j++) { System.out.println( x[ i , j ] ); } } 03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto DesenvolvimentodeSoftwarepareaWeb2016
  • 92. PERCORRENDO UM ARRAY for ( j=0; j<4; j++) { //quantidade de colunas é 4 System.out.println( “Elementos da coluna” + i ); for( i=0; i<3; i++) { //quantidade de linhas é 4 System.out.println( x[ j , i ] ); } } 03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto DesenvolvimentodeSoftwarepareaWeb2016
  • 93. FOR EACH: CONCEITO • Usado para examinar um array do início ao fim, elemento a elemento; • Exemplos: – Somar todos os elementos do array; – Calcular a média – Buscar um valor – Copiar um array – Etc 03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto DesenvolvimentodeSoftwarepareaWeb2016
  • 94. FOR EACH: DEFINIÇÃO • FOR-EACH é um FOR melhorado, otimizado • Esse LAÇO percorre um conjunto de objetos de maneira rigorosamente sequencial • Recurso adicionado no JDK 5.0 • FORMA (SINTAXE): for(tipo var-iter: conjunto) Bloco de instruções 03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto DesenvolvimentodeSoftwarepareaWeb2016
  • 95. FOR EACH: SINTAXE for(tipo var-iter: conjunto) Bloco de instruções • TIPO: especifica o tipo • VAR-ITER: especifica o nome de uma variável d eiteração que receberá os elementos de um conjunto, um de cada vez, do inicio ao fim • Neste caso, o conjunto é o ARRAY 03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto DesenvolvimentodeSoftwarepareaWeb2016
  • 96. FOR EACH • A cada ITERAÇÃO do laço, o próximo elemento do conjunto é recuperado e armazenado em VAR- ITER; • O LAÇO se repete até todos os elementos do conjunto terem sido usados; • FOR-EACH elimina a necessidade de um contador de laço, de determinar o valor inicial e final e de indexar manualmente o array; • Percorre o array inteiro automaticamente, obtendo 03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto DesenvolvimentodeSoftwarepareaWeb2016
  • 97. FOR EACH: COMPARAÇÃO COM O FOR COM O FOR: int[] nums = {1,2,3,4,5,6,7,8,9,10}; int sum = 0; for(int i; i<10; i++) sum += nums[i]; COM FOR-EACH: int[] nums = {1,2,3,4,5,6,7,8,9,10}; int sum = 0; for(int x : nums) sum += x; 03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto DesenvolvimentodeSoftwarepareaWeb2016 • A cada passagem do laço, X recebe automaticamente um valor igual ao próximo elemento de NUMS. • Na primeira iteração, X contém 1 • Na segunda iteração, X contém 2 • E assim por diante
  • 98. FOR EACH: EXEMPLO 1 class ForEach(){ public static void main(Strings[] args){ int[] nums = {1,2,3,4,5,6,7,8,9,10}; int sum = 0; //exibe e soma os elementos do vetor for(int x : nums){ system.out.println(“ O valor é: ” + x); sum += nums; } } System.out.pritnln(“Soma: ” + sum); } 03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto DesenvolvimentodeSoftwarepareaWeb2016
  • 99. FOR EACH: EXEMPLO 2 class ForEach(){ public static void main(Strings[] args){ int[][] nums = new int[3][r]; int sum = 0; //fornece alguns valores a nums for( int i=0; i<3; i++) for( int j=0; i<5; j++) nums[i][j] = (i+1)+(j+1); //exibe e soma os elementos da matriz for(int[] x : nums){ for(int y : x) { System.out.println(“Valor é: ” + y); sum += y; } } } System.out.println(“ Soma: ” + sum);} 03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto DesenvolvimentodeSoftwarepareaWeb2016
  • 100. BUSCANDO UM ELEMENTO NO ARRAY COM FOR EACH class ForEach(){ public static void main(Strings[] args){ int[] nums = {6,8,3,7,5,6,1,4}; int val = 5; boolean found = false; //procura um valor – VAL – em nums for(int[] x : nums){ if(x == val){ found = true; break; } } if(found) System.out.println(“Valor encontrado”); }} 03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto DesenvolvimentodeSoftwarepareaWeb2016
  • 102. ARRAYLIST • Biblioteca de coleções • Substituiu o vector • Usar a importação da classe para utilizar esta biblioteca: import java.util.ArrayList; 03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto DesenvolvimentodeSoftwarepareaWeb2016
  • 103. DECLARANDO E INICIALIZAÇÃO ARRAYLIST ArrayList<String> a = new ArrayList<String>(); A declaração acima cria um objeto da classe ArrayList vazio que pode armazenar strings String é o tipo de dado que será armazenado no conteiner Não é necessário mencionar o tamanho 03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto DesenvolvimentodeSoftwarepareaWeb2016
  • 104. MÉTODO ADD ARRAYLIST • Elementos podem ser adicionados posteriormente, bastante indicar a posição em que se deseja inseri-los: a.add(1, “TESTE”); • O elemento na posição especificada já deve existir. Add aumenta o tamanho da lista. Com isso, todos os elementos que já estão armazenados são deslocados em uma posição à sua direita. 03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto DesenvolvimentodeSoftwarepareaWeb2016
  • 105. MÉTODO ADD ARRAYLIST • Depois que o ArrayList é criado, valores podem ser adicionados usando ADD ArrayList<String> a = new ArrayList<String>(); a.add(“Olá”); a.add(“bom dia”); • Os elementos são adicionados ao final do objeto 03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto DesenvolvimentodeSoftwarepareaWeb2016
  • 106. MÉTODOS GET E SET ARRAYLIST • Os valores armazenados em um ArrayList podem ser obtidos usando GET String s = a.get(0); • A linha acima obtém o valor armazenado na posição zero do array list e o atribui à variável s • Um valor de um elemento pode ser alterado usando SET a.set(1, “MUNDO”); • Na linha acima, texto MUNDO está sendo inserido na posição 1 do ArrayList, isto é, apaga o que 03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto DesenvolvimentodeSoftwarepareaWeb2016
  • 107. MÉTODOS REMOVE ARRAYLIST • Um elemento pode ser removido usando REMOVE a.remove(“1”); • A linha acima remove o elemento que está na posição 1 e diminui o tamanho do arraylist • Os elementos que já estão armazenados são deslocados uma posição para a esquerda 03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto DesenvolvimentodeSoftwarepareaWeb2016
  • 108. TAMANHO DO ARRAYLIST • SIZE pode ser usado para saber o tamanho do arraylist int tamanho = a.size(); • O método size retorna o tamanho do arraylist como um número inteiro e esse valor é armazenado na variável TAMANHO 03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto DesenvolvimentodeSoftwarepareaWeb2016
  • 109. IMPRIMINDO UM ARRAYLIST import java.util.ArrayList; public class Program { public static void main(String[] args) { ArrayList<Integer> list = new ArrayList<>(); list.add(10); list.add(20); list.add(30); for (int value : list) { System.out.println(value); } } } 03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto DesenvolvimentodeSoftwarepareaWeb2016
  • 110. PESQUISANDO UM VALOR INTEIRO NO ARRAYLIST import java.util.ArrayList; public class Estudos{ public static void main(String[] args){ // cria uma ArrayList que conterá inteiros ArrayList<Integer> valores = new ArrayList<Integer>(); // adiciona itens na lista valores.add(34); valores.add(12); valores.add(8); valores.add(23); if(valores.contains(12)){ System.out.println("O valor pesquisado foi encontrado."); } else{ System.out.println("O valor pesquisado não foi encontrado."); } } } 03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto DesenvolvimentodeSoftwarepareaWeb2016
  • 111. ARRAYLIST COM OBJETOS DE CLASSE List<Autores> listaAutor = new ArrayList<Autores>(); Autores a1 = new Autores(); a1.setIdAutores(1234); a1.setPrimeiroNome(“Elaine”); a1.setSegundoNome(“Gatto”); listaAutor.add(a1); for (Autores a1 : list) { System.out.println(p); } 03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto DesenvolvimentodeSoftwarepareaWeb2016
  • 112. INDEXOF, LASTINDEXOF import java.util.ArrayList; public class Program { public static void main(String[] args) { ArrayList<Integer> list = new ArrayList<>(); list.add(101); list.add(100); list.add(99); list.add(100); list.add(99); int index = list.indexOf(100); int lastIndex = list.lastIndexOf(100); int notFound = list.indexOf(200); System.out.println(index); // 1 System.out.println(lastIndex); // 3 System.out.println(notFound); // -1 } } 03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto DesenvolvimentodeSoftwarepareaWeb2016
  • 113. VERIFICANDO SE A LISTA ESTÁ VAZIA import java.util.ArrayList; public class Program { public static void main(String[] args) { ArrayList<Integer> list = new ArrayList<>(); list.add(1); //imprimirá se a lista está vazia System.out.println(list.isEmpty()); // limpa o arraylist list.clear(); //está vazia agora? if (list.isEmpty()) { System.out.println("Empty"); } } } 03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto DesenvolvimentodeSoftwarepareaWeb2016
  • 114. ORDENANDO OS VALORES EM UM ARRAYLIST import java.util.Collections; import java.util.ArrayList; public class Program { public static void main(String[] args) { ArrayList<String> list = new ArrayList<>(); list.add("cat"); list.add("bird"); list.add("ant"); list.add("dog"); // organiza os elementos em ordem alfabética Collections.sort(list); for (String value : list) { System.out.println(value); } } } 03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto DesenvolvimentodeSoftwarepareaWeb2016
  • 116. REFERENCIAS • VICENTE, Angelo. O que significa cada palavra reservada. Disponível em: http://www.devmedia.com.br/o-que-significa- cada-palavra-reservada/8320. Acessado em: 06/05/2016. • FURGERI, Sérgio. Java 7: Ensino Didático. São Paulo: Érica, 2010. • SCHILDT, Hebert; SKRIEN, Dale. Programação com Java: Uma Introdução Abrangente. Porto Alegre: AMGH, 2013. • DEITEL, Harvey M.; DEITEL, PAUL J. Java Como Programar. Prentice Hall, 2010. • http://www.dotnetperls.com/arraylist-java 03/06/2016Prof.ªM.ªEng.ªElaineCecíliaGatto DesenvolvimentodeSoftwarepareaWeb2016