"" হ'ল একটি আসল স্ট্রিং, যদিও একটি খালি হোক।
নাল, তবে স্ট্রিং ভেরিয়েবলের কিছুই বোঝায় না nothing
a==b
মিথ্যা ফিরিয়ে দেয় কারণ "" এবং নাল মেমরিতে একই স্থান দখল করে না - অন্য কথায়, তাদের ভেরিয়েবলগুলি একই বস্তুগুলিতে নির্দেশ করে না।
a.equals(b)
মিথ্যা ফিরিয়ে দেয় কারণ স্পষ্টতই "" নাল সমান হয় না।
পার্থক্যটি হ'ল যেহেতু "" একটি প্রকৃত স্ট্রিং, আপনি এখনও এর মতো পদ্ধতি বা ফাংশন শুরু করতে পারেন
a.length()
a.substring(0, 1)
ইত্যাদি।
স্ট্রিং নলের সমান হলে, খ এর মতো জাভা একটি নিক্ষেপ করবে NullPointerException
যদি আপনি চেষ্টা করার চেষ্টা করেন, বলুন:
b.length()
আপনি যে পার্থক্যটি নিয়ে ভাবছেন তা যদি == বনাম সমান হয় তবে তা হ'ল:
== রেফারেন্সের সাথে তুলনা করে, যেমন আমি গিয়েছিলাম
String a = new String("");
String b = new String("");
System.out.println(a==b);
এটি আউটপুট মিথ্যা হবে কারণ আমি দুটি পৃথক অবজেক্ট বরাদ্দ করেছি, এবং a এবং b পয়েন্টটি বিভিন্ন অবজেক্টগুলিতে।
তবে, a.equals(b)
এই ক্ষেত্রে সত্যটি ফিরে আসবে, কারণ equals
স্ট্রিংসের পক্ষে সত্যটি ফিরে আসবে যদি কেবল তখনই যদি যুক্তি স্ট্রিংটি নাল না থাকে এবং একই অক্ষরের অক্ষরকে উপস্থাপন করে।
সতর্কতা অবলম্বন করুন, যদিও জাভা স্ট্রিংসের জন্য একটি বিশেষ কেস রাখে।
String a = "abc";
String b = "abc";
System.out.println(a==b);
আপনি ভাবেন যে আউটপুটটি হবে false
, যেহেতু এটি দুটি পৃথক স্ট্রিং বরাদ্দ করা উচিত। আসলে, জাভা হবে অন্তরীণ আক্ষরিক স্ট্রিংস (বেশী যে একটি এবং আমাদের উদাহরণে খ মত সক্রিয়া করা হয়)। সুতরাং সাবধান হন, কারণ এটি == কীভাবে কাজ করে সে সম্পর্কে কিছু মিথ্যা ইতিবাচক দিক দিতে পারে।
b.equals(a)
- তবে==
স্ট্রিংকে অন্যভাবে "এটি কাজ করবে না" হিসাবে তুলনার জন্য ব্যবহার করবেন না।null
মান (যা একটি খালি স্ট্রিং থেকে ভিন্ন""
, একটি বৈধ স্ট্রিং উদাহরণস্বরূপ) করতে পারেন না একটি পদ্ধতি এটি উপর প্রার্থনা আছে। সাম্যতার বাম দিকে "জ্ঞাত নন-নাল" (সাধারণত একটি ধ্রুবক মান বা আক্ষরিক) স্থাপন করা হ'ল "যোদা শর্তসাপেক্ষ" বা এমন কিছু।