StringBuffer এবং StringBuilder উভয়ই মিউটেবল ক্লাস, যেগুলো স্ট্রিং অবজেক্টের ওপর অপারেশন (রিভার্স, ক্যাটেনেশন ইত্যাদি) করতে দেয় নতুন অবজেক্ট বানানো ছাড়া। StringBuffer থ্রেড-সেফ (সিঙ্ক্রোনাইজড), StringBuilder থ্রেড-সেফ নয় — তাই StringBuilder দ্রুত। স্ট্রিং ক্যাটেনেশন + অপারেটর ইন্টারনালি StringBuffer বা StringBuilder ব্যবহার করে।
| ক্রমিক নং | কী | StringBuffer | StringBuilder |
|---|---|---|---|
| ১ | বেসিক | জাভার শুরুতেই চালু হয়েছিল | জাভা ৫-এ যোগ হয়েছে |
| ২ | সিঙ্ক্রোনাইজড | হ্যাঁ, সিঙ্ক্রোনাইজড | না, সিঙ্ক্রোনাইজড নয় |
| ৩ | পারফরম্যান্স | থ্রেড-সেফ, একসাথে একাধিক থ্রেড এক্সেস করতে পারে না, তাই ধীর | থ্রেড-সেফ নয়, তাই StringBuffer চেয়ে দ্রুত |
| ৪ | মিউটেবল | হ্যাঁ, অবজেক্ট বানানো ছাড়া মডিফাই করা যায় | হ্যাঁ, মিউটেবল |
| ৫ | স্টোরেজ | হিপ | হিপ |
StringBuilder উদাহরণ
public class StringBuilderExample {
public static void main(String[] args) {
StringBuilder builder = new StringBuilder("Hi");
builder.append("Java 8");
System.out.println("StringBuilderExample " + builder);
}
}
StringBuffer উদাহরণ
public class StringBufferExample {
public static void main(String[] args) {
StringBuffer buffer = new StringBuffer("Hi");
buffer.append("Java 8");
System.out.println("StringBufferExample " + buffer);
}
}
সুপারিশ: সিঙ্গেল থ্রেডেড এনভায়রনমেন্টে StringBuilder ব্যবহার করুন। মাল্টিথ্রেডেডে শেয়ারড বাফার হলে StringBuffer।