ในเรื่องของ OOP หลายคนอาจจะคิดว่าตัวแปร String นั้น

จะส่งค่าตัวแปร หรือ parameter passing แบบ pass by reference

เพราะตัวแปร String นั้น ถือเป็นตัวแปร reference เช่นเดียวกับ array

แต่ในความเป็นจริงแล้วตัวแปร String นั้น pass by value ครับ

==ตัวอย่าง==
class Str {

public static void main(String[] args) {
String x = "Chok";
AddString(x);
System.out.println("x in main : " + x);
}//end main

static void AddString(String x) {
x += "Ba";
System.out.println("x in methode : " + x);
}//end AddString

}//end class

[/b]
== ผลจาการ run ==
x in methode : ChokBa
x in main : Chok
[/b]
จะเห็นว่าผลที่ออกมาค่า x ใน main นั้นไม่ได้มีการเปลี่ยนแปลงตามที่ถูกเปลี่ยนแปลงใน method

ดังความหมายของการ pass by reference แต่กลับมีลักษณะเดียวกับ การ pass by value

ด้วยเหตุผลกลใดผมก็ไม่ทราบเช่นเคย แต่เมื่อพบเจอ ก็อยากจะบอกกล่าวเพื่อ ให้รู้ทั่วๆกัน

ปล. สำหรับคนที่ไม่รู้จะ อธิบาย pass by value และ pass by reference แบบสั้นๆและภาษาของผมเอง (ผิดพลาดขออภัย)

pass by value : การส่งค่าระหว่า method ที่ไม่มีการอ้างอิง หรือ การเปลี่ยนแปลงของค่าใน methode ที่รับค่า
ไม่มีผลกับค่าที่ส่งไปนั้น เปรียบดังเป็นตัวแปรคนละตัวกัน (ใช้กับ String และ Premetive data type)

pass by reference : การส่งค่าระหว่าง method ที่มีการอ้างอิงค่าจากตัวแปรเดิม การเปลี่ยนแปลงค่าของตัวแปรใน methode
ที่รับค่านั้นมีผลกับตัวแปรที่ส่งไป เปรียบดังเป็นตัวแปรเดียวกัน (ใช้กับ array , Object)

ถ้าท่านใดยังสงสัยอีก ว่างๆจะทำ ตัวอย่าง มาให้ดูครับ