স্ট্রিংবাফার বনাম স্ট্রিংবিল্ডার
জাভা একটি খুব জনপ্রিয় অবজেক্ট ওরিয়েন্টেড ভাষা। জাভাতে, স্ট্রিং ক্লাসটি এমন অক্ষরগুলির ক্রম ধরে রাখার জন্য প্রদান করা হয় যা পরিবর্তন করা যায় না (একবার শুরু হলে)। বিকল্পভাবে, জাভা প্রোগ্রামিং ভাষা অক্ষরের দুটি ধরনের পরিবর্তনযোগ্য ক্রম সরবরাহ করে। অর্থাৎ, যখন প্রোগ্রামারদের একটি নির্দিষ্ট স্ট্রিং পরিবর্তন করতে হবে (শুরু করার পরে), তাদের স্ট্রিং ক্লাসের পরিবর্তে স্ট্রিংবাফার ক্লাস বা স্ট্রিংবিল্ডার ক্লাস ব্যবহার করতে হবে। স্ট্রিংবাফার JDK 1.0-এ চালু করা হয়েছিল এবং স্ট্রিংবিল্ডার ক্লাস JDK 1.5-এ চালু হয়েছিল, আসলে স্ট্রিংবাফার ক্লাসের (একক-থ্রেড পরিবেশের জন্য) প্রতিস্থাপন হিসাবে।
স্ট্রিংবাফার কি?
StringBuffer ক্লাস JDK 1.0 এ চালু করা হয়েছিল। StringBuffer ক্লাস java.lang প্যাকেজের অন্তর্গত এবং জেনেরিক java.lang.object থেকে উত্তরাধিকারসূত্রে প্রাপ্ত। প্রোগ্রামাররা এটিকে আরও প্রসারিত করতে পারে না যেহেতু এটি একটি চূড়ান্ত ক্লাস। স্ট্রিংবাফার ক্লাস সিরিয়ালাইজেবল, অ্যাপেন্ডেবল এবং চারসিকুয়েন্স ইন্টারফেস প্রয়োগ করে। স্ট্রিংবাফার ক্লাসের একটি অবজেক্ট অক্ষরের একটি ক্রম ধরে রাখতে পারে যা পরিবর্তনযোগ্য এবং থ্রেড-নিরাপদ। তার মানে, এটি অনেকটা স্ট্রিং অবজেক্টের মতো, কিন্তু স্ট্রিংবাফার অবজেক্ট শুরু করার পর যে কোনো সময় অক্ষরের ক্রম (দৈর্ঘ্য এবং বিষয়বস্তু) পরিবর্তন করা যেতে পারে। যাইহোক, এটি StringBuffer ক্লাস দ্বারা প্রদত্ত নির্দিষ্ট পদ্ধতি ব্যবহার করে করা উচিত। স্ট্রিংবাফার ক্লাসে দুটি নীতিগত ক্রিয়াকলাপ রয়েছে। এগুলি append() এবং insert() পদ্ধতি দ্বারা প্রদান করা হয়। এই পদ্ধতিগুলি ওভারলোড করা হয়, তাই তারা পূর্ণসংখ্যা এবং দীর্ঘ হিসাবে যে কোনও ধরণের ডেটা গ্রহণ করতে সক্ষম। উভয় পদ্ধতিই প্রথমে যেকোন ইনপুটকে একটি স্ট্রিং-এ রূপান্তরিত করে এবং তারপরে বিদ্যমান স্ট্রিবফার অবজেক্টে সংশ্লিষ্ট স্ট্রিং-এর অক্ষর যোগ করে (সংযোজন বা সন্নিবেশ) করে।append() পদ্ধতিটি বিদ্যমান স্ট্রিংবাফার অবজেক্টের শেষে রূপান্তরিত স্ট্রিং যোগ করে, যখন insert() পদ্ধতি নির্দিষ্ট সন্নিবেশ বিন্দুতে ইনপুট অক্ষর যোগ করবে।
স্ট্রিংবিল্ডার কি?
StringBuilder ক্লাস JDK 1.5 এ চালু করা হয়েছিল। StringBuilder API অনেকটা StringBuffer API-এর মতো। আসলে, স্ট্রিংবিল্ডার ক্লাস আসলে স্ট্রিংবাফার ক্লাসের (একক-থ্রেড অ্যাপ্লিকেশনের জন্য) প্রতিস্থাপন হিসাবে চালু করা হয়েছিল। StringBuilder ক্লাস java.lang প্যাকেজের অন্তর্গত এবং জেনেরিক java.lang.object থেকে উত্তরাধিকারসূত্রে প্রাপ্ত। এটি একটি চূড়ান্ত ক্লাস এবং তাই প্রোগ্রামাররা এটি প্রসারিত করতে পারে না। স্ট্রিংবিল্ডার ক্লাস সিরিয়ালাইজেবল, অ্যাপেন্ডেবল এবং চারসিকুয়েন্স ইন্টারফেস প্রয়োগ করে। স্ট্রিংবিল্ডার ক্লাসের একটি অবজেক্ট অক্ষরের একটি ক্রম ধরে রাখতে পারে যা পরিবর্তনযোগ্য কিন্তু থ্রেড-নিরাপদ নয়। তার মানে, এটা অনেকটা স্ট্রিং অবজেক্টের মতো, কিন্তু স্ট্রিং যে কোনো সময় পরিবর্তন করা যেতে পারে। কিন্তু StringBuilder ক্লাস সিঙ্ক্রোনাইজেশন প্রদান করে না, এবং তাই StringBuffer ক্লাস ব্যবহার করার চেয়ে দ্রুত বলে দাবি করা হয়।স্ট্রিংবিল্ডার ক্লাস স্ট্রিংবাফার ক্লাসের মতো একই ধরনের কার্যকারিতা সহ append() এবং insert() পদ্ধতি প্রদান করে।
StringBuffer এবং StringBuilder এর মধ্যে পার্থক্য কি?
যদিও, স্ট্রিংবিল্ডার এবং স্ট্রিংবাফার ক্লাসগুলি জাভাতে অক্ষরের পরিবর্তনযোগ্য সিকোয়েন্সের জন্য ব্যবহার করা যেতে পারে, তাদের মধ্যে একটি মূল পার্থক্য রয়েছে। StringBuffer ক্লাসের বিপরীতে, StringBuilder ক্লাস থ্রেড-নিরাপদ নয়, এবং কোন সিঙ্ক্রোনাইজেশন প্রদান করে না। তাই, একক-থ্রেড অ্যাপ্লিকেশনগুলিতে স্ট্রিংবাফার ক্লাসের জায়গায় স্ট্রিংবিল্ডার ক্লাস ব্যবহার করা উচিত, কারণ দাবি করা হয় যে স্ট্রিংবিল্ডার ক্লাস স্ট্রিংবাফার ক্লাসের তুলনায় অনেক দ্রুত হবে (সাধারণ পরিস্থিতিতে)।