কম্পিউটার টিউটোরিয়াল

জাভাতে String ক্লাস ইমিউটেবল বা ফাইনাল কেন

স্ট্রিং ইমিউটেবল মানে আমরা অবজেক্টটিকে পরিবর্তন করতে পারি না, কিন্তু অবজেক্টের রেফারেন্স পরিবর্তন করতে পারি। স্ট্রিংকে final করা হয়েছে যাতে অন্যরা এটি এক্সটেন্ড করে এর ইমিউটেবিলিটি ধ্বংস করতে না পারে।

  • নিরাপত্তা নেটওয়ার্ক কানেকশন, ডাটাবেস URL, ইউজারনেম/পাসওয়ার্ড ইত্যাদি সাধারণত স্ট্রিং হিসেবে রিপ্রেজেন্ট করা হয়। যদি এটি মিউটেবল হত, এই প্যারামিটার সহজে পরিবর্তন করা যেত।
  • সিঙ্ক্রোনাইজেশন ও কনকারেন্সি স্ট্রিংকে ইমিউটেবল বানালে এটি স্বয়ংক্রিয়ভাবে থ্রেড-সেফ হয়ে যায়, ফলে সিঙ্ক্রোনাইজেশন সমস্যা সমাধান হয়।
  • ক্যাশিং কম্পাইলার স্ট্রিং অবজেক্ট অপ্টিমাইজ করার সময় যদি দুটি অবজেক্টের মান একই হয় (a = "test", b = "test"), তবে একটি স্ট্রিং অবজেক্টই পর্যাপ্ত (a এবং b একই অবজেক্টকে পয়েন্ট করে)।
  • ক্লাস লোডিং স্ট্রিং ক্লাস লোডিংয়ের আর্গুমেন্ট হিসেবে ব্যবহার হয়। যদি মিউটেবল হত, ভুল ক্লাস লোড হতে পারত (কারণ মিউটেবল অবজেক্ট তাদের স্টেট পরিবর্তন করে)।

উদাহরণ:

public class StringImmutableDemo {
    public static void main(String[] args) {
        String st1 = "Tutorials";
        String st2 = "Point";
        System.out.println("The hascode of st1 = " + st1.hashCode());
        System.out.println("The hascode of st2 = " + st2.hashCode());
        st1 = st1 + st2;
        System.out.println("The Hashcode after st1 is changed : " + st1.hashCode());
    }
}

আউটপুট:

The hascode of st1 = -594386763
The hascode of st2 = 77292912
The Hashcode after st1 is changed : 962735579
  1. জাভাতে ফাইনাল ক্লাস

  2. জাভাতে ফাইনাল ভেরিয়েবল

  3. জাভাতে final কীওয়ার্ড

  4. জাভাতে মাল্টিপল ইনহেরিট্যান্স সাপোর্ট করা হয় না কেন