【氣死朋友系列】
之 Java is Call by reference
同時也有10000部Youtube影片,追蹤數超過2,910的網紅コバにゃんチャンネル,也在其Youtube影片中提到,...
「call by reference java」的推薦目錄:
- 關於call by reference java 在 純靠北工程師 Facebook 的精選貼文
- 關於call by reference java 在 iThome Facebook 的精選貼文
- 關於call by reference java 在 โปรแกรมเมอร์ไทย Thai programmer Facebook 的最讚貼文
- 關於call by reference java 在 コバにゃんチャンネル Youtube 的最讚貼文
- 關於call by reference java 在 大象中醫 Youtube 的最佳貼文
- 關於call by reference java 在 大象中醫 Youtube 的最佳貼文
- 關於call by reference java 在 Call By Value, Call By Reference? 談談所謂的參數引用 的評價
- 關於call by reference java 在 Is Java "pass-by-reference" or "pass-by-value"? - Stack Overflow 的評價
- 關於call by reference java 在 Java Call by Value vs Call by Reference. Object ... - YouTube 的評價
- 關於call by reference java 在 Storing a value vs calling reference for repeated use in Java 的評價
call by reference java 在 iThome Facebook 的精選貼文
關於傳值(Pass by value),以及傳參(Pass by reference),其實,是常見於C++圈子的名詞,曾在Java圈嘈嚷過一段時間,而沉寂一陣之後,近來,我發現類似的爭議,在JavaScript圈復出了。
於是,此時又引出了一個更古老的名詞Call by sharing說選我正解,但這不是用明朝的劍斬清朝的官嗎?
call by reference java 在 โปรแกรมเมอร์ไทย Thai programmer Facebook 的最讚貼文
จากวิชาสอนเขียนโปรแกรมของเด็กม.1 เรื่องการเปลี่ยนค่าตัวแปรในโปรแกรม มีประเด็นน่าสนใจดีนะครับ
ในหลายภาษาเขียนโปรแกรม การเปลี่ยนค่าตัวแปร รวมทั้งการส่งค่าอากิวเมนต์ไปให้พารามิเตอร์ของฟังก์ชั่น (เวลาเรียกฟังก์ชั่น) จะมี 2 คอนเซปต์ได้แก่
1) ก็อปปี้ค่า (value) จากตัวแปรหนึ่งไปให้อีกตัวแปรโดยตรง
2) ก็อปปี้ค่า reference (หรือ pointer) จากตัวแปรหนึ่ง ไปให้อีกตัวแปรโดยตรง ...ส่งผลทำให้ตัวแปรทั้งสองชี้ไปยังข้อมูลก้อนเดียวกัน (อ็อบเจ็กต์)
(ถ้าเป็นการส่งค่าอากิวเมนต์ไปให้พารามิเตอร์ของฟังก์ชั่น ก็จะเรียกว่า pass by value กับ pass by reference ตามลำดับนั่นเอง)
คราวนี้ถ้าไปดูในตำราม.1 บทที่ 3 สอน Python ภาษานี้จะมองทุกอย่างเป็นอ็อบเจ็กต์หมด เช่น ตัวเลข ก็มองเป็นอ็อบเจกต์ เมื่อตัวแปรเก็บค่าตัวเลข ตัวแปรนั้นก็จะชี้ไปยังอ็อบเจ็กต์ตัวเลข เป็นต้น
**** ใน Python จึงไม่มีการเปลี่ยนแปลงค่าตัวแปร โดยการก็อปปี้ value แต่จะเป็นก็อบปี้ object reference (เติมคำว่า object นำหน้า)
การเปลี่ยนแปลงค่าตัวแปรทุกๆ อย่างใน Python จะเป็นการก็อปปี้ค่า object reference ไปให้ รวมทั้งตอนส่งค่าอากิวเมนต์ไปให้พารามิเตอร์ของฟังก์ชั่น (เวลาเรียกฟังก์ชั่น) ก็จะเป็นการก็อปปี้ค่า object reference ไปให้เช่นกัน
ซึ่ง Python เขาจะเรียกการส่งค่าอากิวเมนต์ไปให้ฟังก์ชั่นว่าเป็น "Call by Object Reference" มากกว่า ไม่ว่าจะส่งข้อมูลเป็นชนิดอะไรก็ตาม ถือเป็นอ็อบเจ็กต์หมด (ไม่ได้มีคอนเซปต์ pass by value กับ pass by reference แบบภาษาอื่น)
เพื่อให้เห็นภาพลองดูบทเรียนของเด็กม .1 ในบทที่ 3 กันดีกว่า (ตามที่เห็นในรูป)
##################
>>> c = 16 # บรรทัด 1
>>> print(c) # บรรทัด 2
16
>>> d = c # บรรทัด 4
>>> print(d) # บรรทัด 5
16
>>> d= 15 # บรรทัด 7
>>> print(d) # บรรทัด 8
15
###################
😁 จะขออธิบายคำสั่งข้างบนกัน
👉 บรรทัด 1-2:
c=16 คำสั่งนี้จะสร้างตัวแปร c แล้วกำหนดให้ชี้ไปยังจำนวนเต็ม 16 จากนั้นแสดงผลด้วยคำสั่ง print(c) ได้ตัวเลข 16 ออกมา
👉 บรรทัด 4-5:
d=c คำสั่งนี้จะสร้างตัวแปร d แล้วชี้ไปที่ตัวแปร c จึงทำให้ตัวแปร d ชี้ไปยังจำนวนเต็ม 16 จากนั้นแสดงผลด้วยคำสั่ง print(d) ได้ตัวเลข 16 ออกมา
**** ถึงตอนนี้ ตัวแปร c กับ d ชี้ไปยังเลข 16 ก้อนเดียวกัน (ใครที่เคยศึกษาภาษาอื่นมา อาจแปลกใจนิดหนึ่ง)
👉 บรรทัด 7-8:
d=15 คำสั่งนี้จะกำหนดให้ตัวแปร d ชี้ไปยังจำนวนเต็ม 15 เมื่อแสดงด้วยคำสั่ง print(d) จะแสดง 15 ออกมา
ตอนนี้ตัวแปร c กับ d ชี้ไปยังข้อมูลคนละก้อนกันแล้ว
----
ถ้าดูภาพประกอบจากหนังสือเรียนม.1 อธิบายชัดเจนดี
แต่ทว่าในตำราไม่ได้พูดเรื่องก็อปปี้ค่าด้วย value หรือ reference อะไรพวกนี้หรอกนะครับ แต่น้องๆ ก็รู้ไว้ใช่ว่าใส่บ่าแบกหาม
เพราะถ้าน้องๆ ไปเขียนภาษาอื่น เช่น java , c, c++ จะมีคอนเซปต์ดังกล่าว จะแตกต่างจาก python ในตำราเรียนนะครับ
อย่างในตำราเรียนเขียนว่า
"ค่าที่เก็บในตัวแปร" อาจพูดว่า "ค่าที่ตัวแปรชี้อยู่" เช่น
>>> a = 100
100 คือค่าที่เก็บในตัวแปร หรือพูดอีกอย่างว่า 100 คือค่าที่ตัวแปรชี้อยู่
(ความหมายเดียวกัน)
+++ข้อมูล++++
หนังสือ "วิทยาการคำนวณ" ชั้น ม .1 บทที่ 3
call by reference java 在 コバにゃんチャンネル Youtube 的最讚貼文
call by reference java 在 大象中醫 Youtube 的最佳貼文
call by reference java 在 大象中醫 Youtube 的最佳貼文
call by reference java 在 Is Java "pass-by-reference" or "pass-by-value"? - Stack Overflow 的推薦與評價
... <看更多>
call by reference java 在 Java Call by Value vs Call by Reference. Object ... - YouTube 的推薦與評價
Access 7000+ courses for 15 days FREE: https://pluralsight.pxf.io/c/1291657/431340/7490 Java tutorial for beginners where I will talk about ... ... <看更多>
call by reference java 在 Call By Value, Call By Reference? 談談所謂的參數引用 的推薦與評價
參數引用大家應該都聽過Call By Value,Call By Reference 或是Call By Sharing ... 它是在解釋發生在像是java 這種物件導向程式語言上的某種詭異現象. ... <看更多>