জাভায় সংখ্যা নিয়ে কাজ করার একটি মূল দিক হলো ইন্টিজার (দশমিক চিহ্নের পরে কোনো অঙ্ক থাকে না এমন সংখ্যা) আর ফ্লোটিং-পয়েন্ট সংখ্যার (দশমিক চিহ্নের পরে শূন্য বা তার বেশি অঙ্ক থাকতে পারে এমন সংখ্যা) মধ্যে পার্থক্য করা।
int আর 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;
ইন্টিজার আর ফ্লোটিং-পয়েন্ট সংখ্যা দুটোই _ ক্যারেক্টারকে ডিজিট সেপারেটর হিসেবে ব্যবহার করতে পারে, যা বড় সংখ্যা লেখার সময় কাজে আসে:
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;