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á.
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.
xxxxxxxxxx
System.out.println(10 / 5);
System.out.println(13 / 5);
System.out.println(1 / 3);
System.out.println(10 % 5);
System.out.println(13 % 5);
System.out.println(1 % 3);
System.out.println(-13 / 5);
System.out.println(13 / -5);
System.out.println(-13 / -5);
System.out.println(-13 % 5);
System.out.println(13 % -5);
System.out.println(-13 % -5);
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.
xxxxxxxxxx
System.out.println(10.0 / 5);
System.out.println(13.0 / 5);
System.out.println(1.0 / 3);
System.out.println(3.45 / 3);
System.out.println(10.0 % 5);
System.out.println(13.0 % 5);
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.
xxxxxxxxxx
System.out.println("Olah" + "Turma");
System.out.println("Olah" + " Turma");
Anterior: 3.2. Literais. Memória. Variáveis. Instrução de atribuição
Seguinte: 3.4. Revisitando variáveis