[[এখানে কিছু ভাল উত্তর রয়েছে তবে আমি দেখতে পাচ্ছি যে তাদের এখনও কিছুটা তথ্যের অভাব রয়েছে। ]]
return (new StringBuilder("select id1, " + " id2 " + " from " + " table"))
.toString();
সুতরাং আপনি যেমন উল্লেখ করেছেন, আপনি যে উদাহরণটি দিয়েছেন তা সরলবাদী তবে আসুন যাইহোক এটি বিশ্লেষণ করুন। এখানে যা ঘটে তা সংকলক আসলে +
এখানে কাজ করে কারণ "select id1, " + " id2 " + " from " + " table"
সমস্ত ধ্রুবক। সুতরাং এটি পরিণত হয়:
return new StringBuilder("select id1, id2 from table").toString();
এই ক্ষেত্রে, স্পষ্টতই, ব্যবহার করার কোনও মানে নেই StringBuilder
। আপনি পাশাপাশি করতে পারেন:
return "select id1, " + " id2 " + " from " + " table";
তবে, আপনি যদি কোনও ক্ষেত্র বা অন্যান্য অ-স্থির সংযোজন করছিলেন তবুও সংকলকটি অভ্যন্তরীণ ব্যবহার করবে StringBuilder
- আপনার কোনও সংজ্ঞা দেওয়ার দরকার নেই:
return "select id1, " + fieldName + " from " + tableName;
কভারগুলির নীচে, এটি এমন কোডে পরিণত হয় যা প্রায় সমান:
StringBuilder sb = new StringBuilder("select id1, ");
sb.append(fieldName).append(" from ").append(tableName);
return sb.toString();
আপনার কেবলমাত্র শর্তযুক্ত কোড থাকলেই কেবল আপনাকে StringBuilder
সরাসরি ব্যবহারের প্রয়োজন হয় । উদাহরণস্বরূপ, নীচের মতো দেখতে কোডটি একটির জন্য মরিয়া StringBuilder
:
String query = "select id1, " + fieldName + " from " + tableName;
if (where != null) {
query += ' ' + where;
}
+
প্রথম লাইনে একটি ব্যবহার StringBuilder
উদাহরণস্বরূপ। তারপরে +=
ব্যবহারগুলি অন্য একটি StringBuilder
উদাহরণ ব্যবহার করে । এটি করা আরও দক্ষ:
StringBuilder sb = new StringBuilder(64);
sb.append("select id1, ").append(fieldName).append(" from ").append(tableName);
if (where != null) {
sb.append(' ').append(where);
}
return sb.toString();
আমি StringBuilder
যখন ব্যবহার করি অন্য সময়টি যখন আমি প্রচুর পদ্ধতি কল থেকে স্ট্রিং তৈরি করি। তারপরে আমি এমন পদ্ধতি তৈরি করতে পারি যা একটি StringBuilder
যুক্তি গ্রহণ করে:
private void addWhere(StringBuilder sb) {
if (where != null) {
sb.append(' ').append(where);
}
}
আপনি যখন একটি ব্যবহার করছেন StringBuilder
, আপনার +
একই সময়ে যে কোনও ব্যবহারের জন্য নজর রাখা উচিত :
sb.append("select " + fieldName);
এটি +
অন্য একটি অভ্যন্তরীণ StringBuilder
তৈরি করার কারণ ঘটবে । এটি অবশ্যই হওয়া উচিত:
sb.append("select ").append(fieldName);
অবশেষে, @ টিজ্রোডার হিসাবে উল্লেখ করা হয়েছে, আপনার সর্বদা এর আকারের উপর অনুমান করা উচিত StringBuilder
। এটি char[]
অভ্যন্তরীণ বাফারের আকার বাড়ানোর সময় তৈরি করা সামগ্রীর সংখ্যা বাঁচাবে ।
PreparedStatement
বা অনুরূপ কিছু: ডকস.ওরকল