Tipo Faixa Espaço ocupado - hdam.pro.br · IFSC/Florianópolis - Programação Orientada a Objetos...

21
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 float Faixa negativa: de -3,4028235E + 38 até -1,4E - 45 Faixa positiva: de 1,4E - 45 até 3,4028235E + 38 4 bytes IEEE 754 double Faixa 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 false Dependente 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.

Transcript of Tipo Faixa Espaço ocupado - hdam.pro.br · IFSC/Florianópolis - Programação Orientada a Objetos...

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

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

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