স্ট্রিংগুলোর সমতা তুলনা করার জন্য, আপনাকে String অবজেক্টের equals বা equalsIgnoreCase মেথড ব্যবহার করা উচিত। আমরা দেখব কেন == অপারেটর ব্যবহার করা উচিত নয় স্ট্রিং তুলনা করতে।
equals() মেথড ব্যবহার করে স্ট্রিং তুলনা
যদি আমরা জাভাতে দুটি স্ট্রিং তুলনা করতে চাই এবং স্ট্রিং-এর কেসিংয়ের ওপরও চিন্তা করতে চাই, তবে equals() মেথড ব্যবহার করতে পারি।
উদাহরণস্বরূপ, নিচের স্নিপেটটি নির্ধারণ করবে যে দুটি স্ট্রিং ইনস্ট্যানস সমান কিনা সব ক্যারেক্টার এবং কেসিংসহ:
public class CompareTwoStrings {
public static void main(String[] args) {
String firstString = "Test123";
String secondString = "Test" + 123;
String thirdString = "TEST123";
if (firstString.equals(secondString)) {
System.out.println("first and second strings are equal");
}
if (firstString.equals(thirdString)) {
System.out.println("first and third string are equal");
}
}
}
আউটপুট:
first and second strings are equal
দ্রষ্টব্য: দ্বিতীয় প্রিন্ট স্টেটমেন্ট এক্সিকিউট হয় না কারণ firstString এবং thirdString-এর কেসিং মিলে না।
equalsIgnoreCase() মেথড ব্যবহার করে স্ট্রিং তুলনা
যদি আমরা জাভাতে দুটি স্ট্রিং তুলনা করতে চাই কিন্তু স্ট্রিং-এর কেসিংর ওপর চিন্তা না করতে চাই, তবে equalsIgnoreCase() মেথড ব্যবহার করতে পারি।
উদাহরণস্বরূপ, উপরের কোড স্নিপেটে, যদি আমরা .equals() কে .equalsIgnoreCase() মেথড দিয়ে রিপ্লেস করি, তবে দুটি প্রিন্ট স্টেটমেন্টই এক্সিকিউট হবে:
public class CompareTwoStrings {
public static void main(String[] args) {
String firstString = "Test123";
String secondString = "Test" + 123;
String thirdString = "TEST123";
if (firstString.equalsIgnoreCase(secondString)) {
System.out.println("first and second strings are equal");
}
if (firstString.equalsIgnoreCase(thirdString)) {
System.out.println("first and third string are equal");
}
}
}
আউটপুট:
first and second strings are equal
first and third string are equal
- জাভাতে toString() ওভাররাইড কেন
- জাভাতে স্ট্রিং রিভার্স কীভাবে
- স্ট্রিং থেকে নম্বর বের কীভাবে করবেন
- জাভাতে স্ট্রিংকে Int-এ কনভার্ট কীভাবে
== অপারেটর ব্যবহার করবেন না স্ট্রিং তুলনা করতে
দ্রষ্টব্য: জাভাতে দুটি স্ট্রিং তুলনা করার সময়, আমাদের == বা != অপারেটর ব্যবহার করা উচিত নয়।
এই অপারেটরগুলো আসলে রেফারেন্স টেস্ট করে, এবং যেহেতু একাধিক String অবজেক্ট একই স্ট্রিং উপস্থাপন করতে পারে, এটি ভুল উত্তর দিতে পারে।
বদলে, String.equals(Object) মেথড ব্যবহার করুন, যা স্ট্রিং অবজেক্টগুলো তাদের ভ্যালুভিত্তিক তুলনা করে।
public class CompareTwoStrings {
public static void main(String[] args) {
String firstString = "Test123";
String secondString = "Test123";
String thirdString = new String("Test123");
if (firstString == secondString) {
System.out.println("first and second strings are equal");
}
if (firstString == thirdString) {
System.out.println("first and third strings are equal");
}
}
}
আউটপুট:
first and second strings are equal
দ্রষ্টব্য: দ্বিতীয় প্রিন্ট স্টেটমেন্ট এক্সিকিউট হয় না।
কনস্ট্যান্ট ভ্যালু সহ স্ট্রিং তুলনা
একটি স্ট্রিংকে একটি কনস্ট্যান্ট ভ্যালুর সাথে তুলনা করার সময়, আপনি কনস্ট্যান্ট ভ্যালুটিকে equals-এর বাম পাশে রাখতে পারেন যাতে অন্য স্ট্রিংটি null হলে NullPointerException না হয়।
উদাহরণ:
"baz".equals(foo)
যখন foo.equals("baz") foo null হলে NullPointerException নিক্ষেপ করবে, "baz".equals(foo) false এvaluer করবে।
একটি আরও পঠনীয় বিকল্প হল Objects.equals() ব্যবহার করা, যা উভয় প্যারামিটারের ওপর null চেক করে:
যেমন: Objects.equals(foo, "baz")।
সווিচ স্টেটমেন্টে স্ট্রিং তুলনা
জাভা ১.৭ থেকে, একটি স্ট্রিং ভেরিয়েবলকে লিটারেলসহ একটি সুইচ স্টেটমেন্টে তুলনা করা সম্ভব। নিশ্চিত করুন যে স্ট্রিংটি null নয়, অন্যথায় এটি সবসময় NullPointerException নিক্ষেপ করবে। ভ্যালুগুলো String.equals ব্যবহার করে তুলনা করা হয়, অর্থাৎ কেস-সেনসিটিভ।
public class CompareTwoStrings {
public static void main(String[] args) {
String stringToSwitch = "A";
switch (stringToSwitch) {
case "a":
System.out.println("a");
break;
case "A":
System.out.println("A"); // কোড এখানে আসে
break;
case "B":
System.out.println("B");
break;
default:
break;
}
}
}
উপসংহার
এই পোস্টে আমরা কোড উদাহরণসহ জাভাতে স্ট্রিং তুলনার পদ্ধতি ব্যাখ্যা করেছি। যখন স্ট্রিং-এর কেসিং গুরুত্বপূর্ণ, তবে .equals() ব্যবহার করুন এবং যখন কেসিং গুরুত্বপূর্ণ নয়, তবে .equalsIgnoreCase() ব্যবহার করুন।
অতিরিক্তভাবে, আমাদের == অপারেটর ব্যবহার করা উচিত নয় স্ট্রিং তুলনা করতে, কারণ == অপারেটর রেফারেন্স চেক করে, ভ্যালু নয়।