یکی از جنبههای کلیدی کار با اعداد در Java، تفاوت میان اعداد صحیح (اعدادی بدون رقم پس از جداکنندهی اعشار) و اعداد اعشاری (اعدادی با صفر یا چند رقم پس از جداکنندهی اعشار) است.
افزون بر int و double، Java انواع دادهی دیگری هم دارد:
// 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;
هم اعداد صحیح و هم اعداد اعشاری میتوانند از نویسهی _ به عنوان «جداکنندهی رقم» استفاده کنند، که هنگام تعریف اعداد بزرگ میتواند کمککننده باشد:
int largeInt = 1_000_000;
// => 1000000
double largeDouble = 9_876_543.21;
// => 9876543.21
محاسبات با عملگرهای حسابی استاندارد (+، -، * و غیره) انجام میشوند.
اعداد را میتوان با عملگرهای مقایسهای استاندارد (<، >= و غیره) به همراه عملگر تساوی (==) و عملگر نامساوی (!=) مقایسه کرد.
5 * 6
// => 30
1.2 > 0.8
// => true
120 == 100
// => false
2 != 4
// => true
هنگام تبدیل میان انواع دادهی عددی، دو نوع تبدیل عددی وجود دارد:
از آنجا که int دقت کمتری از double دارد، تبدیل int به double ایمن است و بنابراین یک تبدیل ضمنی به شمار میرود.
اما تبدیل double به int میتواند به معنای از دست رفتن داده باشد، پس به یک تبدیل صریح نیاز دارد.
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;