কম্পিউটার

জাভাতে স্ট্রিং কনস্ট্যান্ট পুলে কেন স্ট্রিং আক্ষরিক সংরক্ষণ করা হয়?


জাভাতে স্ট্রিং অবজেক্ট তৈরি করার দুটি উপায় আছে

  • নতুন অপারেটর ব্যবহার করে
String str = new String("Tutorials Point");
  • স্ট্রিং আক্ষরিক ব্যবহার করে
String str = "Tutorials Point";

যখনই আমরা জাভাতে নতুন স্ট্রিং() কল করি, এটি হিপ মেমরিতে একটি অবজেক্ট তৈরি করবে এবং স্ট্রিং লিটারেল স্ট্রিং কনস্ট্যান্ট পুল (এসসিপি) এ চলে যাবে।

বস্তুর জন্য, JVM SCP ব্যবহার করেছে যা জাভাতে দক্ষ মেমরি পরিচালনার জন্য। অন্যান্য জাভা অবজেক্টের বিপরীতে, হিপ এলাকায় স্ট্রিং অবজেক্ট পরিচালনা করার পরিবর্তে, তারা স্ট্রিং ধ্রুবক পুল চালু করেছে। স্ট্রিং ধ্রুবক পুলের একটি গুরুত্বপূর্ণ বৈশিষ্ট্য হল যে পুলে ইতিমধ্যেই স্ট্রিং ধ্রুবক থাকলে এটি একই স্ট্রিং অবজেক্ট তৈরি করে না।

উদাহরণ

public class SCPDemo {
   public static void main (String args[]) {
      String s1 = "Tutorials Point";
      String s2 = "Tutorials Point";
      System.out.println("s1 and s2 are string literals:");
      System.out.println(s1 == s2);
      String s3 = new String("Tutorials Point");
      String s4 = new String("Tutorials Point");
      System.out.println("s3 and s4 with new operator:");
      System.out.println(s3 == s4);
   }
}

আউটপুট

s1 and s2 are string literals:
true
s3 and s4 with new operator:
false

  1. জাভাতে StringIndexOutOfBoundsException কি?

  2. জাভাতে হিপ মেমরি এবং স্ট্রিং কনস্ট্যান্ট পুলের মধ্যে পার্থক্য কী?

  3. জাভাতে স্ট্রিং কনস্ট্যান্ট পুলে কেন স্ট্রিং আক্ষরিক সংরক্ষণ করা হয়?

  4. কেন স্ট্রিং ক্লাস জাভাতে অপরিবর্তনীয় বা চূড়ান্ত?