1. স্ট্রিং তুলনা
এই সব ভাল এবং ভাল. কিন্তু আপনি দেখতে পাচ্ছেন যে s1
এবং s2
স্ট্রিংগুলি আসলে একই, যার অর্থ তাদের একই পাঠ্য রয়েছে। স্ট্রিং তুলনা করার সময়, আপনি কীভাবে প্রোগ্রামটিকে String
বস্তুর ঠিকানার দিকে নয়, তাদের বিষয়বস্তুর দিকে তাকাতে বলবেন?
এটিতে আমাদের সাহায্য করার জন্য, জাভার String
ক্লাসের পদ্ধতি রয়েছে equals
। কল করা এই মত দেখায়:
string1.equals(string2)
true
স্ট্রিং একই হলে এই পদ্ধতিটি ফেরত দেয় , এবং false
যদি তারা একই না হয়।
উদাহরণ:
কোড | বিঃদ্রঃ |
---|---|
|
|
আরো উদাহরণ:
কোড | ব্যাখ্যা |
---|---|
|
false |
|
true |
|
true |
|
true |
2. কেস-সংবেদনশীল স্ট্রিং তুলনা
শেষ উদাহরণে, আপনি দেখেছেন যে তুলনা ফলন । প্রকৃতপক্ষে, স্ট্রিংগুলি সমান নয়। কিন্তু..."Hello".equals("HELLO")
false
স্পষ্টতই, স্ট্রিংগুলি সমান নয়। এটি বলেছে, তাদের বিষয়বস্তুতে একই অক্ষর রয়েছে এবং শুধুমাত্র অক্ষরের ক্ষেত্রে ভিন্ন। তাদের তুলনা করার এবং চিঠির ক্ষেত্রে উপেক্ষা করার কোন উপায় আছে কি? অর্থাৎ, এত ফলন ?"Hello".equals("HELLO")
true
আর এই প্রশ্নের উত্তর হল হ্যাঁ। জাভাতে, String
টাইপের আরেকটি বিশেষ পদ্ধতি রয়েছে: equalsIgnoreCase
. কল করা এই মত দেখায়:
string1.equalsIgnoreCase(string2)
পদ্ধতির নামটি মোটামুটি তুলনা করে অনুবাদ করে কিন্তু কেস উপেক্ষা করে । পদ্ধতির নামের অক্ষরে দুটি উল্লম্ব লাইন রয়েছে: প্রথমটি একটি ছোট হাতের অক্ষর L
এবং দ্বিতীয়টি একটি বড় হাতের অক্ষর i
। এটি আপনাকে বিভ্রান্ত করতে দেবেন না।
উদাহরণ:
কোড | বিঃদ্রঃ |
---|---|
|
|
3. স্ট্রিং তুলনার উদাহরণ
শুধু একটি সহজ উদাহরণ দেওয়া যাক: ধরুন আপনাকে কীবোর্ড থেকে দুটি লাইন লিখতে হবে এবং সেগুলি একই কিনা তা নির্ধারণ করতে হবে। এই কোডটি দেখতে কেমন হবে:
Scanner console = new Scanner(System.in);
String a = console.nextLine();
String b = console.nextLine();
String result = a.equals(b) ? "Same" : "Different";
System.out.println(result);
4. স্ট্রিং তুলনা একটি আকর্ষণীয় nuance
একটি গুরুত্বপূর্ণ সূক্ষ্মতা রয়েছে যা আপনাকে সচেতন হতে হবে।
যদি জাভা কম্পাইলার আপনার কোডে (বিশেষ করে আপনার কোডে) একাধিক অভিন্ন স্ট্রিং খুঁজে পায়, তাহলে মেমরি সংরক্ষণ করার জন্য এটি তাদের জন্য শুধুমাত্র একটি একক বস্তু তৈরি করবে।
String text = "This is a very important message";
String message = "This is a very important message";
এবং ফলস্বরূপ মেমরিতে কী থাকবে তা এখানে:

এবং যদি আপনি text == message
এখানে তুলনা করেন, তাহলে আপনি পাবেন true
। তাই এতে অবাক হবেন না।
যদি কোনও কারণে আপনার সত্যিই রেফারেন্সগুলি আলাদা হওয়ার প্রয়োজন হয় তবে আপনি এটি লিখতে পারেন:
String text = "This is a very important message";
String message = new String ("This is a very important message");
অথবা এটা:
String text = "This is a very important message";
String message = new String (text);
এই উভয় ক্ষেত্রেই, text
এবং message
ভেরিয়েবল একই পাঠ্য ধারণ করে এমন বিভিন্ন বস্তুর দিকে নির্দেশ করে।
GO TO FULL VERSION