String ইমিউটেবল (immutable) ক্লাস, একবার তৈরি হলে পরিবর্তন করা যায় না। নতুন অবজেক্ট তৈরি হয়। মাল্টিথ্রেডিং-এ থ্রেড-সেফ।
StringBuffer মিউটেবল (mutable) ক্লাস, স্ট্রিং ম্যানিপুলেশন (রিভার্স, ক্যাটেনেট) করার সুবিধা দেয়। এটি সিনক্রোনাইজড হওয়ায় থ্রেড-সেফ কিন্তু String-র চেয়ে স্লো।
| ক্র. নং | বিষয় | String | StringBuffer |
|---|---|---|---|
| ১ | প্রকৃতি | ইমিউটেবল | মিউটেবল |
| ২ | মেথড সিনক্রোনাইজেশন | না | হ্যাঁ, সব মেথড সিনক্রোনাইজড |
| ৩ | পারফরম্যান্স | দ্রুত | স্লো (সিনক্রোনাইজেশনের কারণে) |
| ৪ | মেমোরি এলোকেশন | হিপ এবং স্ট্রিং কনস্ট্যান্ট পুল | হিপ স্পেস |
String উদাহরণ
public class Main {
public static void main(String[] args) {
String s1 = "Hello Tutorials Point";
String upper = s1.toUpperCase(); // নতুন অবজেক্ট
System.out.println(upper);
}
}
StringBuffer উদাহরণ
public class StringBufferExample {
public static void main(String[] args) {
StringBuffer sb = new StringBuffer("Hi");
sb.append(" Java 8"); // একই অবজেক্ট মডিফাই
System.out.println(sb);
}
}