3.3. Tipos de dados primitivos e (um cheirinho de) String

Mais atrás neste texto chamámos tipo de dados a um conjunto de valores e às operações que se podem fazer sobre esses valores.

O Java fornece uma série de tipos de dados base, prontos a usar – os tipos de dados primitivos –, com os quais é possível representar todos os valores de interesse.

Vamos aqui falar sobre dois desses tipos e acerca de outro tipo de dados – String – que, embora não primitivo, é extremamente útil desde já.

3.3.1. Inteiros

O tipo int representa em Java os valores inteiros no intervalo entre -231 e 231 - 1. Um valor deste tipo ocupa 32 bits de memória.

Os literais do tipo int são todos os números, naquele intervalo, explicitamente representados (exemplos: 2, 567 e -47).

As operações que suportam operandos do tipo int são a soma (+), o produto (*), a diferença (-), a divisão inteira (/), o resto da divisão inteira (%) e o simétrico (-). Este último operador é unário, ou seja, tem um só operando.

Os operadores relacionados com a divisão merecem uma explicação. A divisão inteira de um número a por um número b tem como resultado o maior inteiro contido na divisão (também chamado de quociente). Para obtermos este valor, usamos em Java o operador /. Quando a não é divisível por b, o resto desta divisão inteira é diferente de zero. Para obtermos o valor do resto da divisão, usamos em Java o operador %.

As instruções seguintes escrevem no ecrã os valores 2, 2, 0, 0, 3, 1, -2, -2, 2, -3, 3 e -3 respetivamente.

3.3.2. Números com parte não inteira

O tipo double representa em Java os valores numéricos com parte fracionária decimal no intervalo entre -10308 e 10308, aproximadamente. Um valor deste tipo ocupa 64 bits de memória, representado em vírgula flutuante.

Os literais do tipo double são todos os números representáveis naquele intervalo que contenham um ponto (ex: 2.0, 5.67, -478903.11, etc); pode também ser usado E ou e para notação científica.

Muitas vezes os resultados das operações têm mais algarismos do que os que o computador consegue representar (basta pensar numa dízima infinita). Convém saber quantos algarismos são representáveis (algarismos significativos) para percebermos qual a precisão que podemos esperar nos cálculos que fazemos. No tipo double a precisão é de 15 a 16 algarismos significativos, aproximadamente (exemplo: se tiver o número 12345.67890123456789 os últimos dígitos à direita serão ignorados).

As operações que suportam operandos do tipo double são a soma (+), o produto (*), a diferença (-), a divisão (/), neste caso não inteira, o resto da divisão inteira (%) e o operador unário simétrico (-).

Podemos “misturar” int e double em operações. Basta haver um double numa operação destas para que o resultado da expressão seja double. Em relação à divisão, quando um dos operandos é double, a divisão é feita com a maior precisão possível.

As instruções seguintes escrevem no ecrã os valores 2.0, 2.6, 0.3333333333333333, 1.1500000000000001, 0.0 e 3.0, respetivamente.

3.3.3. String

O tipo String representa cadeias de carateres em Java. O espaço que um valor do tipo String ocupa é proporcional ao número de carateres que tem.

Os literais do tipo String são todas as cadeias de carateres entre aspas (exemplos: "Ola", "67", "a Maria" e "12?*&& ").

Para já, a única operação que abordamos sobre valores do tipo String é a operação de concatenação (+), que junta duas strings. Este é o mesmo sinal usado para a soma, mas quando os operandos são do tipo String o resultado é a concatenação dessas cadeias de carateres.

As instruções seguintes escrevem no ecrã OlahTurma e Olah Turma, respetivamente.

 

 


Anterior: 3.2. Literais. Memória. Variáveis. Instrução de atribuição

Seguinte: 3.4. Revisitando variáveis