Java Technologies Comparisons এবং Equality Checking গাইড ও নোট

272

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:

  1. compareTo(): এটি দুটি Temporal অবজেক্টের তুলনা করে এবং একটি পূর্ণসংখ্যা (integer) রিটার্ন করে, যেখানে:
    • 0: যদি দুটি মান সমান হয়।
    • নেতিবাচক মান: যদি বর্তমান অবজেক্টটি ছোট হয়।
    • ধনাত্মক মান: যদি বর্তমান অবজেক্টটি বড় হয়।
  2. isBefore(): এটি চেক করে যে একটি তারিখ বা সময় অন্যটির আগে কিনা।
  3. isAfter(): এটি চেক করে যে একটি তারিখ বা সময় অন্যটির পরে কিনা।
  4. 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 এর মধ্যে তুলনা করছে এবং দেখা যাচ্ছে যে date1 date2 এর আগে।
  • 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 এর মধ্যে তুলনা করছে, যা দেখাচ্ছে যে time1 time2 এর আগে।
  • 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 ক্লাসে এই তুলনা এবং সমতা যাচাইয়ের কৌশল একে অপরের সাথে তুলনা এবং যাচাই করার জন্য সহায়ক।
Content added By

BigInteger এবং BigDecimal এর জন্য Comparison Methods (compareTo, equals)

309

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

  1. compareTo():
    • এটি অসংখ্য সঠিকতা এবং পূর্ণসংখ্যার আকার অনুযায়ী তুলনা করে।
    • compareTo() মেথডটি BigInteger বা BigDecimal এর মানের সাইজ (value) এবং সঠিকতা (precision) অনুযায়ী তুলনা করে।
    • compareTo() কখনো 0, -1, অথবা 1 রিটার্ন করে, যা প্রতিফলিত করে যে সংখ্যাটি ছোট, সমান, অথবা বড়।
  2. 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 ফেরত দেবে।
Content added By

Arbitrary Precision সংখ্যার মধ্যে তুলনা করা

333

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.");
        }
    }
}
  1. BigInteger এবং BigDecimal এর মধ্যে তুলনা করার জন্য compareTo() মেথড ব্যবহার করা উচিত।
  2. equals() মেথডটি দুটি মানের সঠিকতা (values) পরীক্ষা করে, কিন্তু টাইপের পার্থক্য থাকলে এটি false প্রদান করতে পারে।
  3. BigInteger এবং BigDecimal এর মধ্যে তুলনা করার আগে, একই টাইপে রূপান্তর করা উচিত।
  4. BigDecimal এবং BigInteger এর মধ্যে তুলনা করার সময় টাইপের সঠিকতা এবং মানের গুরুত্ব প্রদান করতে হবে।
Content added By

উদাহরণ সহ Comparisons এবং Equality Checking

306

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 ফেরত দিয়েছে। dec1 dec3 থেকে ছোট হওয়ায় এটি -1 ফেরত দিয়েছে।
  • equals(): dec1 এবং dec2 সমান হওয়ায় এটি true ফেরত দিয়েছে, এবং dec1 এবং dec3 আলাদা হওয়ায় এটি false ফেরত দিয়েছে।

Key Differences Between compareTo() and equals():

  1. compareTo():
    • এটি int টাইপের মান ফেরত দেয়: 0 (সমান), -1 (ছোট), 1 (বড়)।
    • এটি সংখ্যার বড়ত্ব বা ছোটত্ব নির্ধারণ করতে ব্যবহৃত হয়, তুলনা করার জন্য।
    • এটি কখনো ArithmeticException তৈরি করতে পারে যদি সংখ্যার মধ্যে পার্থক্য অনন্ত (infinite) হয়।
  2. 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 এর মধ্যে তুলনা এবং সমতা যাচাইয়ের কার্যক্রম সহজভাবে সম্পাদন করতে পারবেন।
Content added By
Promotion

Are you sure to start over?

Loading...