วิธีที่ 1: ใช้ Character Array
สร้าง char array ขนาดรวมความยาวทั้งสองสตริง แล้ว copy ตัวอักษรทีละตัว
ตัวอย่าง
import java.util.Scanner;
public class PrependStringArray {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("Enter string1 (target): ");
String str1 = sc.next();
System.out.println("Enter string2 (to prepend): ");
String str2 = sc.next();
char[] charArray = new char[str1.length() + str2.length()];
// copy str2 ก่อน
for (int i = 0; i < str2.length(); i++) {
charArray[i] = str2.charAt(i);
}
// copy str1 ต่อท้าย
for (int i = str2.length(); i < charArray.length; i++) {
charArray[i] = str1.charAt(i - str2.length());
}
String result = new String(charArray);
System.out.println(result);
}
}
ผลลัพธ์
Enter string1: krishna
Enter string2: kasyap
kasyapkrishna
วิธีที่ 2: ใช้ StringBuffer (แนะนำ - เรียบง่าย)
StringBuffer mutable thread-safe เหมาะสำหรับการ modify string หลายครั้ง
ตัวอย่าง
import java.util.Scanner;
public class PrependStringBuffer {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("Enter string1: ");
String str1 = sc.next();
System.out.println("Enter string2: ");
String str2 = sc.next();
StringBuffer sb = new StringBuffer();
sb.append(str2); // prepend
sb.append(str1);
String result = sb.toString();
System.out.println(result);
}
}
ผลลัพธ์
Enter string1: krishna
Enter string2: kasyap
kasyapkrishna
วิธีที่ 3: ใช้ StringBuilder (เร็วกว่า - Non-thread-safe)
เหมือน StringBuffer แต่ไม่ synchronized ใช้ใน single-threaded environment
StringBuilder sb = new StringBuilder();
sb.append(str2).append(str1);
String result = sb.toString();
วิธีที่ 4: String Concatenation (ง่ายที่สุด)
String result = str2 + str1; // หรือ str2.concat(str1)
การเปรียบเทียบประสิทธิภาพ
| วิธี | Performance | Thread-Safe | เหมาะสำหรับ |
|---|---|---|---|
| str2 + str1 | ดี (compile-time optimization) | N/A | ครั้งเดียว/ไม่บ่อย |
| StringBuilder | ดีที่สุด | ไม่ | Loop, หลายครั้ง, single-thread |
| StringBuffer | ดี | ใช่ | Multi-thread, legacy code |
| char array manual | ควบคุม memory ได้เต็มที่ | N/A | Low-level, performance critical |
ข้อควรระวัง
- String ใน Java immutable -
str1 + str2สร้าง object ใหม่ทุกครั้ง - ใน loop ต้องใช้ StringBuilder/StringBuffer เท่านั้น
- Java 9+ มี
String.join(),String.repeat()ช่วยบางกรณี