L'un des aspects clés du travail avec les nombres en Java est la distinction entre les entiers (nombres sans chiffres après le séparateur décimal) et les nombres à virgule flottante (nombres avec zéro ou plusieurs chiffres après le séparateur décimal).
Java dispose d'autres types de données en dehors de int et 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;
Les entiers comme les nombres à virgule flottante peuvent utiliser le caractère _ comme séparateur de chiffres, ce qui peut être utile lorsqu'on définit de grands nombres :
int largeInt = 1_000_000;
// => 1000000
double largeDouble = 9_876_543.21;
// => 9876543.21
Les opérations arithmétiques s'effectuent à l'aide des opérateurs arithmétiques standard (+, -, *, etc.).
On peut comparer les nombres à l'aide des opérateurs de comparaison standard (<, >=, etc.), ainsi qu'avec l'opérateur d'égalité (==) et l'opérateur d'inégalité (!=).
5 * 6
// => 30
1.2 > 0.8
// => true
120 == 100
// => false
2 != 4
// => true
Lorsqu'on convertit entre types numériques, il existe deux types de conversions numériques :
Comme un int a moins de précision qu'un double, convertir un int en double est sûr et constitue donc une conversion implicite.
En revanche, convertir un double en int peut entraîner une perte de données, ce qui nécessite une conversion explicite.
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;