strএটি কোনও বস্তু নয়, এটি কোনও বস্তুর রেফারেন্স। "Hello"এবং "Help!"দুটি স্বতন্ত্র Stringবস্তু। সুতরাং, একটি স্ট্রিং str পয়েন্ট । আপনি এটি পরিবর্তিত করতে পারেন যা এটি নির্দেশ করে তবে এটি যা এটি নির্দেশ করে তা নয় ।
এই কোডটি ধরুন, উদাহরণস্বরূপ:
String s1 = "Hello";
String s2 = s1;
// s1 and s2 now point at the same string - "Hello"
এখন, 1 এর কিছুই নেই যা আমরা করতে পারলাম s1এর মানকে প্রভাবিত করবে s2। তারা একই বস্তুর উল্লেখ করে - স্ট্রিং "Hello"- তবে সেই বস্তুটি অপরিবর্তনীয় এবং এইভাবে পরিবর্তন করা যায় না।
আমরা যদি এরকম কিছু করি:
s1 = "Help!";
System.out.println(s2); // still prints "Hello"
এখানে আমরা কোনও বস্তুর রূপান্তরকরণ এবং একটি রেফারেন্স পরিবর্তনের মধ্যে পার্থক্য দেখতে পাই। s2আমরা প্রথমে s1যে বিষয়টিকে সূচিত করেছি সেটাকে একই পয়েন্টে নির্দেশ করে। সেট s1থেকে "Help!"শুধুমাত্র পরিবর্তন রেফারেন্স , যখন Stringবস্তুর এটা মূলত অপরিবর্তিত রয়ে পরিচিত।
যদি স্ট্রিং ছিল চপল, আমরা ভালো কিছু করতে পারে:
String s1 = "Hello";
String s2 = s1;
s1.setCharAt(1, 'a'); // Fictional method that sets character at a given pos in string
System.out.println(s2); // Prints "Hallo"
ওপির সম্পাদনায় সাড়া দেওয়ার জন্য সম্পাদনা করুন:
যদি আপনি স্ট্রিং.রেপ্লেস (চর, চর) এর জন্য সোর্স কোড (আপনার জেডি কে ইনস্টলেশন ডিরেক্টরিতে src.zip এ উপলব্ধ ) - যদি দেখেন যে কিছু সত্যই কীভাবে কাজ করে তবে আপনি কী দেখতে পাবেন তা এখানে একটি প্রো টিপ রয়েছে you এটি নিম্নলিখিত:
oldCharবর্তমান স্ট্রিংয়ে যদি এক বা একাধিক ঘটনা ঘটে থাকে তবে বর্তমান স্ট্রিংয়ের একটি অনুলিপি তৈরি করুন যেখানে সমস্ত উপস্থিতি oldCharপ্রতিস্থাপন করা হয়েছে newChar।
- তাহলে
oldCharবর্তমান স্ট্রিং উপস্থিত নেই, বর্তমান স্ট্রিং ফিরে যান।
হ্যাঁ, "Mississippi".replace('i', '!')একটি নতুন Stringঅবজেক্ট তৈরি করে । আবার, নিম্নলিখিতগুলি ধারণ করে:
String s1 = "Mississippi";
String s2 = s1;
s1 = s1.replace('i', '!');
System.out.println(s1); // Prints "M!ss!ss!pp!"
System.out.println(s2); // Prints "Mississippi"
System.out.println(s1 == s2); // Prints "false" as s1 and s2 are two different objects
আপাতত আপনার বাড়ির কাজটি হল আপনি যদি পরিবর্তন করে থাকেন তবে উপরের কোডটি কী করে তা দেখতে s1 = s1.replace('i', '!');হবে s1 = s1.replace('Q', '!');:)
1 প্রকৃতপক্ষে, স্ট্রিংগুলি (এবং অন্যান্য অপরিবর্তনীয় বস্তু) কে রূপান্তর করা সম্ভব। এর প্রতিবিম্ব প্রয়োজন এবং এটি অত্যন্ত, অত্যন্ত বিপজ্জনক এবং যদি আপনি প্রোগ্রামটি ধ্বংস করতে আগ্রহী না হন তবে কখনও ব্যবহার করা উচিত নয়।