Java Time API (যেমন java.time প্যাকেজ) এর মধ্যে Comparisons এবং Equality Checking খুবই গুরুত্বপূর্ণ ধারণা, বিশেষত যখন সময় এবং তারিখ সম্পর্কিত তথ্য পরিচালনা করা হয়। LocalDate, LocalTime, LocalDateTime, ZonedDateTime, এবং অন্যান্য java.time ক্লাসগুলো দিয়ে আমরা সহজে তুলনা (comparison) এবং সমতা যাচাই (equality checking) করতে পারি।
1. Comparisons (তুলনা):
java.time প্যাকেজের ক্লাসগুলোতে compareTo() এবং isBefore(), isAfter(), isEqual() মেথড ব্যবহার করে তুলনা করা হয়।
Methods for Comparison:
compareTo(): এটি দুটিTemporalঅবজেক্টের তুলনা করে এবং একটি পূর্ণসংখ্যা (integer) রিটার্ন করে, যেখানে:- 0: যদি দুটি মান সমান হয়।
- নেতিবাচক মান: যদি বর্তমান অবজেক্টটি ছোট হয়।
- ধনাত্মক মান: যদি বর্তমান অবজেক্টটি বড় হয়।
isBefore(): এটি চেক করে যে একটি তারিখ বা সময় অন্যটির আগে কিনা।isAfter(): এটি চেক করে যে একটি তারিখ বা সময় অন্যটির পরে কিনা।isEqual(): এটি চেক করে যে দুটি তারিখ বা সময় সমান কিনা।
Examples of Comparison in Java Time API
LocalDate এর মধ্যে তুলনা:
import java.time.LocalDate;
public class LocalDateComparisonExample {
public static void main(String[] args) {
// Create two LocalDate objects
LocalDate date1 = LocalDate.of(2024, 12, 23);
LocalDate date2 = LocalDate.of(2025, 1, 1);
// Compare using compareTo()
System.out.println("date1.compareTo(date2): " + date1.compareTo(date2)); // Negative value (date1 < date2)
// Using isBefore() and isAfter()
System.out.println("Is date1 before date2? " + date1.isBefore(date2)); // true
System.out.println("Is date1 after date2? " + date1.isAfter(date2)); // false
// Using isEqual()
System.out.println("Is date1 equal to date2? " + date1.isEqual(date2)); // false
}
}
আউটপুট:
date1.compareTo(date2): -1
Is date1 before date2? true
Is date1 after date2? false
Is date1 equal to date2? false
এখানে:
compareTo()মেথডdate1এবংdate2এর মধ্যে তুলনা করছে এবং দেখা যাচ্ছে যেdate1date2এর আগে।isBefore(),isAfter()এবংisEqual()মেথডগুলো কেবল তারিখের তুলনা করছে।
LocalTime এর মধ্যে তুলনা:
import java.time.LocalTime;
public class LocalTimeComparisonExample {
public static void main(String[] args) {
// Create two LocalTime objects
LocalTime time1 = LocalTime.of(14, 30);
LocalTime time2 = LocalTime.of(16, 45);
// Compare using compareTo()
System.out.println("time1.compareTo(time2): " + time1.compareTo(time2)); // Negative value (time1 < time2)
// Using isBefore() and isAfter()
System.out.println("Is time1 before time2? " + time1.isBefore(time2)); // true
System.out.println("Is time1 after time2? " + time1.isAfter(time2)); // false
// Using isEqual()
System.out.println("Is time1 equal to time2? " + time1.isEqual(time2)); // false
}
}
আউটপুট:
time1.compareTo(time2): -1
Is time1 before time2? true
Is time1 after time2? false
Is time1 equal to time2? false
এখানে:
compareTo()মেথডtime1এবংtime2এর মধ্যে তুলনা করছে, যা দেখাচ্ছে যেtime1time2এর আগে।isBefore(),isAfter(), এবংisEqual()মেথডগুলো সময়ের তুলনা করছে।
2. Equality Checking (সমতা যাচাই):
java.time প্যাকেজে সমতা যাচাই করতে, আপনি equals() মেথড ব্যবহার করতে পারেন। এটি দুটি অবজেক্টের মধ্যে সমতা যাচাই করে, এবং true ফেরত দেয় যদি দুইটি অবজেক্ট সমান হয়, এবং false ফেরত দেয় যদি তারা ভিন্ন হয়।
Examples of Equality Checking:
LocalDate সমতা যাচাই:
import java.time.LocalDate;
public class LocalDateEqualityExample {
public static void main(String[] args) {
// Create two LocalDate objects
LocalDate date1 = LocalDate.of(2024, 12, 23);
LocalDate date2 = LocalDate.of(2024, 12, 23);
LocalDate date3 = LocalDate.of(2025, 1, 1);
// Using equals() to check equality
System.out.println("date1 equals date2? " + date1.equals(date2)); // true
System.out.println("date1 equals date3? " + date1.equals(date3)); // false
}
}
আউটপুট:
date1 equals date2? true
date1 equals date3? false
এখানে:
equals()মেথডdate1এবংdate2এর মধ্যে সমতা যাচাই করছে, এবং তারা সমান হওয়ায়trueফেরত দিচ্ছে।date1এবংdate3একে অপরের থেকে আলাদা হওয়ায়falseফেরত দিচ্ছে।
LocalTime সমতা যাচাই:
import java.time.LocalTime;
public class LocalTimeEqualityExample {
public static void main(String[] args) {
// Create two LocalTime objects
LocalTime time1 = LocalTime.of(14, 30);
LocalTime time2 = LocalTime.of(14, 30);
LocalTime time3 = LocalTime.of(16, 45);
// Using equals() to check equality
System.out.println("time1 equals time2? " + time1.equals(time2)); // true
System.out.println("time1 equals time3? " + time1.equals(time3)); // false
}
}
আউটপুট:
time1 equals time2? true
time1 equals time3? false
এখানে:
equals()মেথডtime1এবংtime2এর মধ্যে সমতা যাচাই করছে, এবং তারা সমান হওয়ায়trueফেরত দিচ্ছে।time1এবংtime3আলাদা হওয়ায়falseফেরত দিচ্ছে।
3. ZonedDateTime তে Comparisons এবং Equality Checking:
ZonedDateTime এ তুলনা এবং সমতা যাচাই করতে, compareTo(), isBefore(), isAfter(), এবং equals() ব্যবহার করা যেতে পারে।
Example: ZonedDateTime Comparison and Equality Checking:
import java.time.ZonedDateTime;
import java.time.ZoneId;
public class ZonedDateTimeExample {
public static void main(String[] args) {
// Create two ZonedDateTime objects
ZonedDateTime dateTime1 = ZonedDateTime.of(2024, 12, 23, 14, 30, 0, 0, ZoneId.of("Asia/Kolkata"));
ZonedDateTime dateTime2 = ZonedDateTime.of(2024, 12, 23, 14, 30, 0, 0, ZoneId.of("Asia/Kolkata"));
ZonedDateTime dateTime3 = ZonedDateTime.of(2025, 1, 1, 10, 0, 0, 0, ZoneId.of("Asia/Kolkata"));
// Using compareTo()
System.out.println("dateTime1.compareTo(dateTime2): " + dateTime1.compareTo(dateTime2)); // 0 (equal)
System.out.println("dateTime1.compareTo(dateTime3): " + dateTime1.compareTo(dateTime3)); // Negative value (dateTime1 < dateTime3)
// Using equals()
System.out.println("dateTime1 equals dateTime2? " + dateTime1.equals(dateTime2)); // true
System.out.println("dateTime1 equals dateTime3? " + dateTime1.equals(dateTime3)); // false
}
}
আউটপুট:
dateTime1.compareTo(dateTime2): 0
dateTime1.compareTo(dateTime3): -1
dateTime1 equals dateTime2? true
dateTime1 equals dateTime3? false
এখানে:
compareTo()এবংequals()মেথডগুলিZonedDateTimeঅবজেক্টগুলোর মধ্যে সমতা এবং তুলনা যাচাই করছে।
- Comparison এবং Equality Checking
java.timeপ্যাকেজের জন্য খুবই গুরুত্বপূর্ণ। **`compareTo
()**, **isBefore()**, **isAfter()**, এবং **isEqual()** মেথড ব্যবহার করে আপনি সময় এবং তারিখের তুলনা করতে পারেন, এবং **equals()`** মেথড ব্যবহার করে সমতা যাচাই করতে পারেন।
ZonedDateTime,LocalDate, এবংLocalTimeক্লাসে এই তুলনা এবং সমতা যাচাইয়ের কৌশল একে অপরের সাথে তুলনা এবং যাচাই করার জন্য সহায়ক।
BigInteger এবং BigDecimal হল java.math প্যাকেজের দুটি ক্লাস, যা খুব বড় সংখ্যা (arbitrary precision numbers) পরিচালনা করতে ব্যবহৃত হয়। এই ক্লাসগুলির মধ্যে Comparison (তুলনা) করার জন্য বিভিন্ন মেথড যেমন compareTo() এবং equals() ব্যবহার করা হয়।
BigInteger এবং BigDecimal Comparison Methods
1. compareTo() Method:
compareTo() মেথডটি দুটি BigInteger বা BigDecimal অবজেক্টের মধ্যে তুলনা করার জন্য ব্যবহৃত হয়। এটি একটি integer মান ফেরত দেয়:
0ফেরত দেয় যদি দুইটি সংখ্যা সমান হয়।-1ফেরত দেয় যদি প্রথম সংখ্যা দ্বিতীয় সংখ্যার চেয়ে ছোট হয়।1ফেরত দেয় যদি প্রথম সংখ্যা দ্বিতীয় সংখ্যার চেয়ে বড় হয়।
Syntax:
int compareTo(T anotherBigInteger) // For BigInteger
int compareTo(BigDecimal anotherBigDecimal) // For BigDecimal
2. equals() Method:
equals() মেথডটি দুটি BigInteger বা BigDecimal অবজেক্টের মধ্যে সঠিক সমতা যাচাই করে। এটি true ফেরত দেয় যদি দুটি সংখ্যা একে অপরের সমান হয়, এবং false ফেরত দেয় যদি তারা সমান না হয়।
Syntax:
boolean equals(Object obj) // For BigInteger
boolean equals(Object obj) // For BigDecimal
BigInteger এবং BigDecimal Comparison Example:
1. BigInteger Comparison:
import java.math.BigInteger;
public class BigIntegerComparison {
public static void main(String[] args) {
// Create BigInteger objects
BigInteger num1 = new BigInteger("123456789");
BigInteger num2 = new BigInteger("987654321");
BigInteger num3 = new BigInteger("123456789");
// Compare num1 and num2
System.out.println("num1 compareTo num2: " + num1.compareTo(num2)); // -1 (num1 < num2)
// Compare num1 and num3
System.out.println("num1 compareTo num3: " + num1.compareTo(num3)); // 0 (num1 == num3)
// Use equals method
System.out.println("num1 equals num2: " + num1.equals(num2)); // false
System.out.println("num1 equals num3: " + num1.equals(num3)); // true
}
}
Output:
num1 compareTo num2: -1
num1 compareTo num3: 0
num1 equals num2: false
num1 equals num3: true
2. BigDecimal Comparison:
import java.math.BigDecimal;
public class BigDecimalComparison {
public static void main(String[] args) {
// Create BigDecimal objects
BigDecimal bd1 = new BigDecimal("123.45");
BigDecimal bd2 = new BigDecimal("987.65");
BigDecimal bd3 = new BigDecimal("123.45");
// Compare bd1 and bd2
System.out.println("bd1 compareTo bd2: " + bd1.compareTo(bd2)); // -1 (bd1 < bd2)
// Compare bd1 and bd3
System.out.println("bd1 compareTo bd3: " + bd1.compareTo(bd3)); // 0 (bd1 == bd3)
// Use equals method
System.out.println("bd1 equals bd2: " + bd1.equals(bd2)); // false
System.out.println("bd1 equals bd3: " + bd1.equals(bd3)); // true
}
}
Output:
bd1 compareTo bd2: -1
bd1 compareTo bd3: 0
bd1 equals bd2: false
bd1 equals bd3: true
Key Differences Between compareTo() and equals() for BigInteger and BigDecimal
compareTo():- এটি অসংখ্য সঠিকতা এবং পূর্ণসংখ্যার আকার অনুযায়ী তুলনা করে।
compareTo()মেথডটিBigIntegerবাBigDecimalএর মানের সাইজ (value) এবং সঠিকতা (precision) অনুযায়ী তুলনা করে।compareTo()কখনো0,-1, অথবা1রিটার্ন করে, যা প্রতিফলিত করে যে সংখ্যাটি ছোট, সমান, অথবা বড়।
equals():- এটি তুলনা করে শুধুমাত্র মানের (value) এবং পূর্নসংখ্যার সঠিকতা (scale)।
equals()মেথডটি শুধুমাত্র তখনtrueফেরত দেয়, যখন দুটিBigIntegerবাBigDecimalঅবজেক্টের মান এবং স্কেল একই হবে।
Special Consideration for BigDecimal:
BigDecimal ক্লাসে scale (ডেসিমাল পয়েন্টের অবস্থান) বিষয়টি খুবই গুরুত্বপূর্ণ, এবং equals() মেথড scale এর তুলনা করে। ফলে, দুটি BigDecimal যদি মানে সমান হলেও তাদের স্কেল আলাদা থাকে, তবে equals() false ফেরত দিতে পারে।
Example: BigDecimal scale effect on equals() method:
import java.math.BigDecimal;
public class BigDecimalScaleEffect {
public static void main(String[] args) {
BigDecimal bd1 = new BigDecimal("123.45");
BigDecimal bd2 = new BigDecimal("123.4500");
// Check equality
System.out.println("bd1 equals bd2: " + bd1.equals(bd2)); // false
// Check comparison
System.out.println("bd1 compareTo bd2: " + bd1.compareTo(bd2)); // 0 (bd1 == bd2)
}
}
Output:
bd1 equals bd2: false
bd1 compareTo bd2: 0
ব্যাখ্যা:
equals()মেথডে scale (ডেসিমাল পয়েন্টের পরিমাণ) তুলনা করা হয়, এবং এটি যদি ভিন্ন হয়, তবে এটিfalseরিটার্ন করে।- তবে
compareTo()কেবলমাত্র value তুলনা করে, তাই এখানে দুটিBigDecimalসমান হিসেবে গণ্য হয়েছে।
compareTo()মেথডটি ভ্যালু বা মানের তুলনা করে, এবং এর ফলাফল হিসেবে0,-1, বা1ফেরত দেয়।equals()মেথডটি ভ্যালু এবং স্কেল (precision) তুলনা করে এবং শুধুমাত্র তখনইtrueফেরত দেয় যখন দুটি সংখ্যা সমান এবং স্কেল একেবারে একই হয়।BigDecimalএর ক্ষেত্রে scale তত্ত্বটি গুরুত্বপূর্ন, কারণ স্কেল পরিবর্তিত হলেequals()মেথড false ফেরত দিতে পারে, কিন্তুcompareTo()সঠিক মান তুলনা করে 0 ফেরত দেবে।
Arbitrary Precision Numbers বা অগণিত সঠিকতা সম্পন্ন সংখ্যা হল এমন সংখ্যা যা প্রথাগত int, long বা double টাইপের সীমার বাইরে গিয়ে বড় বা ছোট হতে পারে। Java তে এই ধরনের সংখ্যাগুলির জন্য BigInteger এবং BigDecimal ক্লাস রয়েছে, যা arbitrary precision (অসীম সঠিকতা) সমর্থন করে।
এখানে আলোচনা করা হবে BigInteger এবং BigDecimal এর মধ্যে তুলনা করার পদ্ধতি, বিশেষ করে compareTo() এবং equals() মেথড ব্যবহার করে।
1. BigInteger এবং BigDecimal এর মধ্যে তুলনা (Comparison)
BigInteger এবং BigDecimal উভয়েই immutable (অপরিবর্তনীয়) এবং arbitrary-precision (অসীম সঠিকতা) সম্পন্ন ক্লাস। যেহেতু BigInteger কেবল পূর্ণসংখ্যার (integer) জন্য এবং BigDecimal দশমিক সংখ্যার (decimal) জন্য ব্যবহৃত হয়, তাদের মধ্যে তুলনা করার সময় কিছু পার্থক্য রয়েছে।
compareTo() এবং equals() মেথড উভয়েই সংখ্যা তুলনা করতে ব্যবহৃত হয়, তবে তাদের মধ্যে পার্থক্য আছে।
compareTo() মেথড:
compareTo() মেথডটি দুটি BigInteger বা BigDecimal অবজেক্টের মধ্যে তুলনা করে এবং এটি একটি পূর্ণসংখ্যা প্রদান করে:
0: যদি দুটি মান সমান হয়।-1: যদি প্রথম মানটি দ্বিতীয়টির থেকে ছোট হয়।1: যদি প্রথম মানটি দ্বিতীয়টির থেকে বড় হয়।
এটি BigInteger বা BigDecimal অবজেক্টের মধ্যে তুলনা করার জন্য সবচেয়ে সাধারণ এবং নির্ভুল উপায়।
compareTo() এর উদাহরণ:
import java.math.BigInteger;
public class BigIntegerComparisonExample {
public static void main(String[] args) {
BigInteger num1 = new BigInteger("123456789123456789");
BigInteger num2 = new BigInteger("987654321987654321");
int comparisonResult = num1.compareTo(num2);
if (comparisonResult == 0) {
System.out.println("num1 is equal to num2");
} else if (comparisonResult < 0) {
System.out.println("num1 is smaller than num2");
} else {
System.out.println("num1 is greater than num2");
}
}
}
আউটপুট:
num1 is smaller than num2
equals() মেথড:
equals() মেথডটি দুইটি BigInteger বা BigDecimal অবজেক্টের মানের তুলনা করে এবং এটি একটি boolean মান প্রদান করে:
true: যদি দুটি মান সমান হয়।false: যদি দুটি মান সমান না হয়।
এটি দুটি অবজেক্টের মানের সঠিকতা পরীক্ষা করে, কিন্তু এর মধ্যে টাইপের কোনো পার্থক্য থাকলে তা গ্রহণ করবে না। অর্থাৎ, BigInteger এবং BigDecimal এর মধ্যে equals() কাজ করবে না, যদি একটির সঠিকতা integer (পূর্ণসংখ্যা) হিসেবে এবং অন্যটির decimal (ডেসিমাল) হিসেবে নির্ধারণ করা থাকে।
equals() এর উদাহরণ:
import java.math.BigDecimal;
import java.math.BigInteger;
public class BigDecimalComparisonExample {
public static void main(String[] args) {
BigDecimal decimal1 = new BigDecimal("123.45");
BigDecimal decimal2 = new BigDecimal("123.45");
// Compare using equals()
boolean areEqual = decimal1.equals(decimal2);
System.out.println("Are the BigDecimals equal? " + areEqual);
// BigInteger comparison
BigInteger integer1 = new BigInteger("12345");
BigInteger integer2 = new BigInteger("12345");
// Compare BigIntegers using equals()
boolean areIntegersEqual = integer1.equals(integer2);
System.out.println("Are the BigIntegers equal? " + areIntegersEqual);
}
}
আউটপুট:
Are the BigDecimals equal? true
Are the BigIntegers equal? true
2. BigInteger এবং BigDecimal এর মধ্যে তুলনা:
BigInteger এবং BigDecimal দুইটি আলাদা ক্লাস এবং তাদের মানের ধরনও আলাদা, BigInteger কেবলমাত্র পূর্ণসংখ্যার জন্য এবং BigDecimal দশমিক সংখ্যা জন্য ব্যবহৃত হয়। তাই BigInteger এবং BigDecimal এর মধ্যে সরাসরি তুলনা করা সম্ভব নয়, কারণ তাদের মধ্যে টাইপের পার্থক্য রয়েছে।
Best Practice:
- যদি
BigIntegerএবংBigDecimalএর মধ্যে তুলনা করতে হয়, তবে প্রথমে একই টাইপে রূপান্তর করতে হবে।
BigInteger থেকে BigDecimal এ রূপান্তর:
import java.math.BigDecimal;
import java.math.BigInteger;
public class ConversionExample {
public static void main(String[] args) {
BigInteger bigInt = new BigInteger("123456789123456789");
// Convert BigInteger to BigDecimal
BigDecimal bigDecimal = new BigDecimal(bigInt);
// Now compare the BigDecimal with another BigDecimal
BigDecimal otherDecimal = new BigDecimal("123456789123456789.00");
if (bigDecimal.compareTo(otherDecimal) == 0) {
System.out.println("The values are equal.");
} else {
System.out.println("The values are different.");
}
}
}
BigDecimal থেকে BigInteger এ রূপান্তর:
import java.math.BigDecimal;
import java.math.BigInteger;
public class ConversionExample {
public static void main(String[] args) {
BigDecimal bigDecimal = new BigDecimal("123456789123456789.00");
// Convert BigDecimal to BigInteger (removes decimal part)
BigInteger bigInt = bigDecimal.toBigInteger();
// Now compare the BigInteger with another BigInteger
BigInteger otherBigInt = new BigInteger("123456789123456789");
if (bigInt.compareTo(otherBigInt) == 0) {
System.out.println("The values are equal.");
} else {
System.out.println("The values are different.");
}
}
}
BigIntegerএবংBigDecimalএর মধ্যে তুলনা করার জন্যcompareTo()মেথড ব্যবহার করা উচিত।equals()মেথডটি দুটি মানের সঠিকতা (values) পরীক্ষা করে, কিন্তু টাইপের পার্থক্য থাকলে এটি false প্রদান করতে পারে।BigIntegerএবংBigDecimalএর মধ্যে তুলনা করার আগে, একই টাইপে রূপান্তর করা উচিত।BigDecimalএবংBigIntegerএর মধ্যে তুলনা করার সময় টাইপের সঠিকতা এবং মানের গুরুত্ব প্রদান করতে হবে।
Java Time Package এর BigInteger এবং BigDecimal ক্লাসের জন্য Comparison এবং Equality Checking করার জন্য বেশ কিছু মেথড সরবরাহ করা হয়। compareTo() এবং equals() দুটি প্রধান মেথড যা সংখ্যা বা তারিখের তুলনা এবং সমতা যাচাই করতে ব্যবহৃত হয়।
BigInteger এবং BigDecimal এর মধ্যে Comparison এবং Equality Checking:
1. compareTo() Method:
compareTo() মেথডটি দুটি সংখ্যা (অথবা বড় সংখ্যার ক্ষেত্রে BigInteger এবং BigDecimal) তুলনা করার জন্য ব্যবহৃত হয়। এটি একটি int মান ফেরত দেয়:
0যদি দুটি সংখ্যা সমান হয়।< 0যদি বর্তমান অবজেক্টটি কম হয়।> 0যদি বর্তমান অবজেক্টটি বড় হয়।
2. equals() Method:
equals() মেথডটি দুটি সংখ্যা বা অবজেক্টের মধ্যে সমতা যাচাই করতে ব্যবহৃত হয়। এটি boolean মান (true বা false) ফেরত দেয়।
- এটি শুধু তখন true ফেরত দেয় যখন দুটি অবজেক্টের মান এবং প্রকার অস্তিত্বগতভাবে সমান হয়।
Comparisons and Equality Checking with BigInteger
Example: BigInteger - Comparison and Equality Checking
import java.math.BigInteger;
public class BigIntegerComparisonExample {
public static void main(String[] args) {
// Create two BigInteger objects
BigInteger num1 = new BigInteger("1234567890123456789012345678901234567890");
BigInteger num2 = new BigInteger("1234567890123456789012345678901234567890");
BigInteger num3 = new BigInteger("9876543210987654321098765432109876543210");
// Using compareTo() to compare num1 and num2
System.out.println("Comparing num1 and num2 (compareTo): " + num1.compareTo(num2)); // Output: 0 (equal)
// Using compareTo() to compare num1 and num3
System.out.println("Comparing num1 and num3 (compareTo): " + num1.compareTo(num3)); // Output: -1 (num1 < num3)
// Using equals() to check equality between num1 and num2
System.out.println("Are num1 and num2 equal? (equals): " + num1.equals(num2)); // Output: true
// Using equals() to check equality between num1 and num3
System.out.println("Are num1 and num3 equal? (equals): " + num1.equals(num3)); // Output: false
}
}
Output:
Comparing num1 and num2 (compareTo): 0
Comparing num1 and num3 (compareTo): -1
Are num1 and num2 equal? (equals): true
Are num1 and num3 equal? (equals): false
Explanation:
compareTo(): প্রথমেnum1এবংnum2সমান হওয়ায় এটি 0 ফেরত দিয়েছে। পরবর্তীতেnum1ছোট হওয়ায়num3এর তুলনায় এটি -1 ফেরত দিয়েছে।equals():num1এবংnum2সমান হওয়ায় এটি true ফেরত দিয়েছে, এবংnum1এবংnum3আলাদা হওয়ায় এটি false ফেরত দিয়েছে।
Comparisons and Equality Checking with BigDecimal
Example: BigDecimal - Comparison and Equality Checking
import java.math.BigDecimal;
public class BigDecimalComparisonExample {
public static void main(String[] args) {
// Create two BigDecimal objects
BigDecimal dec1 = new BigDecimal("123.456");
BigDecimal dec2 = new BigDecimal("123.456");
BigDecimal dec3 = new BigDecimal("987.654");
// Using compareTo() to compare dec1 and dec2
System.out.println("Comparing dec1 and dec2 (compareTo): " + dec1.compareTo(dec2)); // Output: 0 (equal)
// Using compareTo() to compare dec1 and dec3
System.out.println("Comparing dec1 and dec3 (compareTo): " + dec1.compareTo(dec3)); // Output: -1 (dec1 < dec3)
// Using equals() to check equality between dec1 and dec2
System.out.println("Are dec1 and dec2 equal? (equals): " + dec1.equals(dec2)); // Output: true
// Using equals() to check equality between dec1 and dec3
System.out.println("Are dec1 and dec3 equal? (equals): " + dec1.equals(dec3)); // Output: false
}
}
Output:
Comparing dec1 and dec2 (compareTo): 0
Comparing dec1 and dec3 (compareTo): -1
Are dec1 and dec2 equal? (equals): true
Are dec1 and dec3 equal? (equals): false
Explanation:
compareTo():dec1এবংdec2এর মান সমান হওয়ায় এটি 0 ফেরত দিয়েছে।dec1dec3থেকে ছোট হওয়ায় এটি -1 ফেরত দিয়েছে।equals():dec1এবংdec2সমান হওয়ায় এটি true ফেরত দিয়েছে, এবংdec1এবংdec3আলাদা হওয়ায় এটি false ফেরত দিয়েছে।
Key Differences Between compareTo() and equals():
compareTo():- এটি int টাইপের মান ফেরত দেয়:
0(সমান),-1(ছোট),1(বড়)। - এটি সংখ্যার বড়ত্ব বা ছোটত্ব নির্ধারণ করতে ব্যবহৃত হয়, তুলনা করার জন্য।
- এটি কখনো
ArithmeticExceptionতৈরি করতে পারে যদি সংখ্যার মধ্যে পার্থক্য অনন্ত (infinite) হয়।
- এটি int টাইপের মান ফেরত দেয়:
equals():- এটি boolean ফলাফল ফেরত দেয়: true যদি সংখ্যার মান এক হয়, এবং false যদি সংখ্যা সমান না হয়।
- এটি সংখ্যা সমান হওয়ার পর্যালোচনা করে, এবং প্রকারও একই থাকতে হবে।
Best Practices for Comparison and Equality:
compareTo()ব্যবহার করুন যখন আপনি বড়ত্ব বা ছোটত্ব পরীক্ষা করতে চান (যেমন sorting বা range checking)।equals()ব্যবহার করুন যখন আপনি দুটি সংখ্যার সমতা যাচাই করতে চান, বিশেষত যখন আপনি নিশ্চিত হতে চান যে দুইটি সংখ্যা প্রকৃতপক্ষে সমান (value equality)।BigDecimalএবংBigIntegerক্লাসের মধ্যেcompareTo()এর ব্যবহারে, রাউন্ডিং বা ডেসিমাল প্লেসের ভুলের কারণে ভুল ফলাফল এড়াতে হবে।
compareTo()এবংequals()মেথড দুটি পূর্ণসংখ্যা বা বড় সংখ্যার তুলনা এবং সমতা যাচাই করার জন্য ব্যবহৃত হয়, কিন্তু এগুলোর মধ্যে পার্থক্য রয়েছে।compareTo()ছোট, বড় বা সমান নির্ধারণ করে এবংequals()কেবলমাত্র সমতার মূল্যায়ন করে।- এই মেথডগুলো সঠিকভাবে ব্যবহার করে আপনি
BigIntegerএবংBigDecimalএর মধ্যে তুলনা এবং সমতা যাচাইয়ের কার্যক্রম সহজভাবে সম্পাদন করতে পারবেন।
Read more