Uno degli aspetti chiave quando si lavora con i numeri in Java è la distinzione tra i numeri interi (numeri senza cifre dopo il separatore decimale) e i numeri in virgola mobile (numeri con zero o più cifre dopo il separatore decimale).
Java ha altri tipi di dati oltre a int e double:
// 8-Bit Integer
byte a = 127;
// 16-Bit Integer
short b = 262143;
// 64-Bit Integer
long d = 18446744073709551999L;
// 32-bit Single-Precision Floating-Point
float e = 5409.29f;
Sia i numeri interi che quelli in virgola mobile possono usare il carattere _ come separatore di cifre, il che può essere utile quando si definiscono numeri grandi:
int largeInt = 1_000_000;
// => 1000000
double largeDouble = 9_876_543.21;
// => 9876543.21
L'aritmetica si basa sui normali operatori aritmetici (+, -, *, ecc.).
I numeri si possono confrontare usando i normali operatori di confronto (<, >=, ecc.), insieme all'operatore di uguaglianza (==) e all'operatore di disuguaglianza (!=).
5 * 6
// => 30
1.2 > 0.8
// => true
120 == 100
// => false
2 != 4
// => true
Quando si converte tra tipi numerici, esistono due tipi di conversioni numeriche:
Dal momento che un int ha meno precisione di un double, convertire da int a double è sicuro ed è quindi una conversione implicita.
Tuttavia, convertire da double a int potrebbe significare perdere dati, quindi richiede una conversione esplicita.
int i = 9;
double d = 2.72;
// Safe conversion, thus implicit conversion
double fromInt = i;
// Potentially unsafe conversion, thus explicit conversion
int fromDouble = (int)d;