ในเรื่องของ OOP หลายคนอาจจะคิดว่าตัวแปร String นั้น
จะส่งค่าตัวแปร หรือ parameter passing แบบ pass by reference
เพราะตัวแปร String นั้น ถือเป็นตัวแปร reference เช่นเดียวกับ array
แต่ในความเป็นจริงแล้วตัวแปร String นั้น pass by value ครับ
==ตัวอย่าง==
== ผลจาการ run ==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]
จะเห็นว่าผลที่ออกมาค่า x ใน main นั้นไม่ได้มีการเปลี่ยนแปลงตามที่ถูกเปลี่ยนแปลงใน methodx in methode : ChokBa
x in main : Chok
[/b]
ดังความหมายของการ 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)
ถ้าท่านใดยังสงสัยอีก ว่างๆจะทำ ตัวอย่าง มาให้ดูครับ