Upload
nguyenanh
View
215
Download
0
Embed Size (px)
Citation preview
IFSC/Florianópolis - Programação Orientada a Objetos com Java - prof. Herval Daminelli
Tipo Faixa Espaço ocupado
byte -128 a 127 1 byte
short -32768 a 32767 2 bytes
int –2147483648 a 2147483647 4 bytes
long –9223372036854775808 a 9223372036854775807 8 bytes
floatFaixa negativa: de -3,4028235E + 38 até -1,4E - 45
Faixa positiva: de 1,4E - 45 até 3,4028235E + 38 4 bytes IEEE 754
doubleFaixa negativa: de -1,7976931348623157E + 308 até -4,9E - 324
Faixa positiva: de 4,9E - 324 até 1,7976931348623157E + 308 8 bytes IEEE 754
char Qualquer caracter Unicode entre '\u0000' (ou 0) e '\uffff' (ou 65.535) 2 bytes
boolean true ou falseDependente da
arquitetura da MVJ
● Java é uma linguagem fortemente tipada. Qualquer variável ou constante deve ser declarada. Uma variável só pode pertencer a um único tipo.
IFSC/Florianópolis - Programação Orientada a Objetos com Java - prof. Herval Daminelli
● Declarar uma variável em Java inclui:
Definir o tipo de dado que a variável utilizará;
Definir o nome da variável;
Opcionalmente, definir um operador de associação (=) e associar um valor à variável;
Terminar a declaração com um ponto-e-vírgula.
● Exemplo:
int contaBancaria;
boolean possoVotar = false; //variável inicializada
● Nota: uma variável deve ser sempre inicializada antes de ser usada. Emsituações especiais, se você não inicializá-la, o Java pode fazer isso por você.
IFSC/Florianópolis - Programação Orientada a Objetos com Java - prof. Herval Daminelli
● Você pode declarar múltiplas variáveis de um mesmo tipo numa única linha:
double temperatura = -5.76, peso = 78.7, saldoBancario =
1_765_466.12
● Quando diversas variáveis de UM MESMO TIPO necessitarem ser inicializadas COM O MESMO VALOR, podemos fazer:
int i, j, k; //declara
i = j = k = 1; //inicializa
● Ou, em um só comando:
int i = 1, j = 1, k = 1;
● Quando diversas variável de UM MESMO TIPO necessitarem ser inicializadas, mas COM VALORES DIFERENTES, podemos fazer:
char inicial = 'K', código = 'M', estado = 'S'; //declara e inicializa
IFSC/Florianópolis - Programação Orientada a Objetos com Java - prof. Herval Daminelli
● Uma constante nominada é similar a uma variável em vários aspectos:
Ela precisa ter associado um tipo de dado;
Ela deve ter um nome;
Ela deve ter um valor.
● O valor de uma constante nunca muda;
● A constante deve ser precedida pela palavra-chave final;
● Não é obrigatório, mas, por convenção, nomes de constantes são maiúsculas e usa-se o sublinhado _ para separar nomes compostos.
final int NUMERO_DE_DEPARTAMENTOS = 15;
final byte IDADE;
final string TELEFONE_RESIDENCIAL = "4830127700";
IFSC/Florianópolis - Programação Orientada a Objetos com Java - prof. Herval Daminelli
● Use letras minúsculas para variáveis, métodos e propriedades. Se houver nomes compostos, escreva o primeiro todo em minúsculo e escreva somente a primeira letra das palavras adicionais em maiúsculo. Assim: raio, contaCorrente ou dataDoPrimeiroAniversario;
● Para nomes de classes, escreva somente a primeira letra de cada palavra em maiúsculo. Assim: System, MensagensJava, VeiculosComPrecoEmDolar;
● Para constantes, como já dito antes, use maiúsculas e o sublinhado para separar nomes compostos, desta forma: TAXA_DE_CAMBIO;
IFSC/Florianópolis - Programação Orientada a Objetos com Java - prof. Herval Daminelli
● O sinal + é usado pela linguagem tanto para somar valores numéricos quanto para juntar (concatenar) strings com números ou strings com char;
● Quando a declaração usa somente valores numéricos, o operador + realiza a soma destes valores. Quando ele soma números + char, o caractere é transformado em um inteiro e a soma é efetuada.
int soma = 3 + 'A'; //soma contém 68
● Quando a declaração combina este operador com números, strings e char, a operação final é a concatenação. Use parênteses para que a soma seja respeitada. Exemplo:
int soma = 3 + 4 + 10.5; //soma contém 17.5
String soma = 3 + 4 + "10.5"; //soma contém a string "3410.5"
String soma = (3 + 4) + "10.5"; //soma contém a string "710.5"
IFSC/Florianópolis - Programação Orientada a Objetos com Java - prof. Herval Daminelli
● Permitem realizar operações matemáticas com variáveis e dados numéricos;
● NOTA: quando ambos os operandos de uma divisão são inteiros, o resultado é sempre um inteiro, isto é, 7/2 resulta 3. Para resolver isso, use um dos operandos como um número real. Assim, 7.0/2 resulta 3.5;
Operador Significado Exemplo Resultado
+ Adição 34 + 1 35
- Subtração 34.0 – 0.1 33.9
* Multiplicação 300 * 1.5 450.0
/ Divisão real 1.0 / 2.0 0.5
% Resto 20 % 3 2
IFSC/Florianópolis - Programação Orientada a Objetos com Java - prof. Herval Daminelli
● Java fornece o método pow(base, expoente) da classe Math, que permite elevar uma base b a qualquer expoente x. Lembre-se de que a raiz de qualquer número pode ser extraída aplicando-se o artifício matemático em que o radicando se torna a base e o expoente será uma fração, onde o numerador é o expoente original do radicando e o denominador é o índice da raiz. Exemplos:
-65 resulta em Math.pow(-6, 5);
4.7-2 resulta em Math.pow(4.7, -2);
𝟑𝟖𝟓 equivale a 𝟖
𝟓
𝟑 que resulta em Math.pow(8, 5.0/3);
IFSC/Florianópolis - Programação Orientada a Objetos com Java - prof. Herval Daminelli
Operador Significado Exemplo Equivalência
+= Adiciona e atribui j += 2 j = j + 2
-= Subtrai e atribui j -= 2 j = j – 2
*= Multiplica e atribui j *= 2 j = j * 2
/= Divide e atribui j /= 2 j = j / 2
%= Calcula o resto e atribui j %= 2 j = j % 2
++ Soma 1 à variável j++ ou ++j j = j + 1
-- Diminui 1 da variável j-- ou --j j = j - 1
IFSC/Florianópolis - Programação Orientada a Objetos com Java - prof. Herval Daminelli
● Permitem realizar comparações entre valores. O resultado sempre será um valor booleano verdadeiro ou falso. Evite comparar números decimais. A representação de decimais no computador é imprecisa. Portanto, é sempre bom transformar números reais em inteiros antes de fazermos comparações;
Operador Significado Exemplo
verdadeiroExemplo
falso
< menor 3 < 8 8 > 3
> maior 8 > 3 3 < 8
<= menor ou igual 5 <= 5 10 <= 7
>= maior ou igual 10 >= 7 7 >= 10
== igual 3 == 3 5 == 3
!= diferente 2 != 4 2 != 2
● Sempre que uma expressão contiver um operador relacional, o resultado desta expressão é o valor lógico trueou false. Veja:
boolean eMaior = 6 > 5; //true
boolean eDif = 7 != 3; //true
boolean eFalso = 2 >= 1; //false
IFSC/Florianópolis - Programação Orientada a Objetos com Java - prof. Herval Daminelli
● Variáveis do tipo char armazenam apenas um único caractere. Java utiliza o conjunto de caracteres Unicode. Cada caractere é representado por um número inteiro na faixa de 0 até 65535. Tabela Unicode em http://unicode.coeurlumiere.com/ e http://unicode-table.com/en/#control-character
● Um valor char é associado a uma variável usando-se apóstrofos, e não aspas, como com strings. Assim: char inicialMeuNome = 'H'; String inicial = "H";
● Uma variável char pode receber a ação de operadores matemáticos (+, -, *, etc...) junto com valores numéricos. Neste caso, Java sempre converte o char para seu código Unicode inteiro correspondente e aplica a operação matemática sobre as variáveis, retornando um inteiro:
int converte = 10 + 'A'; //converte armazena 75
● Uma variável do tipo char pode armazenar caracteres que não estão representados no teclado ou caracteres não-imprimíveis, como tabulação, delete, backspace, etc...
● Para isso, usamos um código especial que representa tais caracteres, por meio da barra invertida \. Estes códigos especiais são chamados de sequência de escape.
IFSC/Florianópolis - Programação Orientada a Objetos com Java - prof. Herval Daminelli
Sequência de escape Significado
\b Backspace – remove uma posição à esquerda
\t Tabulação – insere um espaço de tabulação à direita
\n Enter – move o cursor para o começo da próxima linha
\r Retorno de carro – desloca o cursor para o início da mesma linha
\' Insere um apóstrofo
\" Insere aspas
\\ Insere uma barra invertida
IFSC/Florianópolis - Programação Orientada a Objetos com Java - prof. Herval Daminelli
● Em Java, temos os tipos float e double para armazenar números reais;
● Eles diferem no espaço de memória que ocupam, na faixa de valores que podem conter e na precisão com que representam a parte decimal (float até 7 dígitos decimais e double até 15 dígitos);
● Toda vez que declaramos uma literal numérica real, o valor é armazenado como um tipo double. Exemplo: float temp = 41.5; //erro na compilação. temp é automaticamente salva como double;
● Se você quiser que uma literal seja salva como um valor float, coloque a letra F ou f após a literal. Exemplo: float temp = 41.5f;
IFSC/Florianópolis - Programação Orientada a Objetos com Java - prof. Herval Daminelli
● Quando operações aritméticas são desenvolvidas com dados de tipos diferentes, o Java pode tentar fazer uma conversão explícita, se for possível. Veja a tabela:
TipoSentido da conversão
double
float
long
int
Maior
Menor
● Sendo assim, por exemplo, int + double converte o valor de int para double e o resultado é um valor double. Long * float converte o long para float e o resultado é um float;
● NOTA: char, short e byte são automaticamente convertidos para o tipo int em qualquer expressão aritmética entre eles mesmos e com outros tipos. Se houver o operador + e string envolvidos, tudo é convertido para string. Numa expressão com somente inteiros, nunca haverá conversão. Por isso que 7/3 resulta em 2, e não 2.5.
IFSC/Florianópolis - Programação Orientada a Objetos com Java - prof. Herval Daminelli
● Java permite a conversão explícita, para forçar o valor de um tipo a ser usado como um valor de outro tipo, por meio de (tipo) expressão;
double distancia = 1,876,456.14;
float novaDistancia = (float) distancia;
● OU
float nota = 7.85f;
int novaNota = (int) nota; //agora novaNota armazena 7
● NOTA: a conversão explícita não muda o tipo de dado da variável de origem. Assim, no segundo exemplo, nota ainda seria float com o valor de 7.85.
IFSC/Florianópolis - Programação Orientada a Objetos com Java - prof. Herval Daminelli
● Ao usarmos caixa de mensagem para receber um dado, qualquer coisa digitada será recebida como texto, mesmo que se tenha digitado um número. Para fazermos cálculos matemáticos com estes valores, devemos convertê-los para números com parseInt() e parseDouble();
● De string para inteiro:
int valor = Integer.parseInt(stringNumerica);
● De string para real:
double valor = Double.parseDouble(stringNumerica);
IFSC/Florianópolis - Programação Orientada a Objetos com Java - prof. Herval Daminelli
● Dados fornecidos pelo usuário podem ser recebidos:
Via console (modo texto) – cria-se um objeto a partir da classe Scanner e utiliza-se o método apropriado ao tipo de dado sendo recebido por este objeto;
Via caixa de diálogo, por meio da classe JOptionPane do pacote swing, já vistas em eslaides anteriores.
IFSC/Florianópolis - Programação Orientada a Objetos com Java - prof. Herval Daminelli
Crie um objeto scanner a partir da classe Scanner e conecte-o ao objeto System, cujo método in aceita apenas bytes de dados do teclado, por padrão:
Scanner entrada = new Scanner(System.in); //conecta a
entrada de dados ao teclado
use o método adequado da classe Scanner para ler o dado de entrada – veja pg.21:
int idade = entrada.nextInt(); //recebe um inteiro
String nome = entrada.nextLine(); //recebe uma string
● NOTA1: a classe Scanner deve ser importada do pacote java.util;
● NOTA2: podem ocorrer erros de entrada se você usar next() e/ou nextLine() depois de já ter lido um número com outros métodos (veja pg.21). Para evitar isso, sempre que você já tiver recebido algum número e for usar next() ou nextLine(), digite nextLine() sem atribuir a nenhuma variável, para descartar a quebra de linha que ficou armazenada do buffer de entrada do Java.
IFSC/Florianópolis - Programação Orientada a Objetos com Java - prof. Herval Daminelli
Lembre-se de usar nextLine(); se já tiver lido antes algum número do console e for receber um string.
Método Significado
nextDouble() Armazena a entrada como um real do tipo double
nextFloat() Armazena a entrada como um real do tipo float
nextInt() Armazena a entrada como um inteiro do tipo int
nextLine()Lê uma linha inteira do console como uma string, até encontrar uma tecla enterpressionada. O separador não é lido;
next() Lê uma palavra por vez até encontrar um dos seguintes caracteres: ' ', \t, \f, \r, \n
nextShort() Armazena a entrada como um inteiro do tipo short
nextByte() Armazena a entrada como um inteiro do tipo byte
nextLong() Armazena a entrada como um inteiro do tipo long