ความแตกต่างระหว่างตัวแปรอินสแตนซ์และตัวแปรในเครื่อง

ความแตกต่างระหว่างตัวแปรอินสแตนซ์และตัวแปรในเครื่อง
ความแตกต่างระหว่างตัวแปรอินสแตนซ์และตัวแปรในเครื่อง

วีดีโอ: ความแตกต่างระหว่างตัวแปรอินสแตนซ์และตัวแปรในเครื่อง

วีดีโอ: ความแตกต่างระหว่างตัวแปรอินสแตนซ์และตัวแปรในเครื่อง
วีดีโอ: #เด็กอยู่เนอสเซอรี่ #เนอสเซอรี่ สำหรับเด็กอ่อน ประสบการณ์ตรงเล่าสู่กันฟังค่ะ 2024, กรกฎาคม
Anonim

ตัวแปรอินสแตนซ์เทียบกับตัวแปรในเครื่อง

ตัวแปรอินสแตนซ์คือประเภทของตัวแปรที่มีอยู่ในการเขียนโปรแกรมเชิงวัตถุ เป็นตัวแปรที่กำหนดไว้ในคลาส และแต่ละอ็อบเจ็กต์ของคลาสนั้นมีสำเนาของตัวแปรนั้นแยกจากกัน ในทางกลับกัน การใช้ตัวแปรโลคัลไม่ได้จำกัดเฉพาะภาษาโปรแกรมเชิงวัตถุ เป็นตัวแปรที่สามารถประเมินได้เฉพาะภายในบล็อกของโค้ด (เช่น ฟังก์ชัน บล็อกลูป ฯลฯ) ที่กำหนดไว้ ด้วยเหตุนี้ จึงกล่าวได้ว่าตัวแปรโลคัลมีขอบเขตเฉพาะที่

ตัวแปรอินสแตนซ์คืออะไร

ตัวแปรอินสแตนซ์ถูกใช้ในการเขียนโปรแกรมเชิงวัตถุเพื่อจัดเก็บสถานะของแต่ละอ็อบเจ็กต์ในคลาส พวกเขายังเป็นที่รู้จักกันในนามตัวแปรสมาชิกหรือตัวแปรฟิลด์ มีการประกาศตัวแปรอินสแตนซ์โดยไม่ต้องใช้คีย์เวิร์ดคงที่ใน Java ค่าที่เก็บไว้ในตัวแปรอินสแตนซ์จะไม่ซ้ำกันสำหรับแต่ละอ็อบเจ็กต์ (แต่ละอ็อบเจ็กต์มีสำเนาแยกกัน) และค่าที่เก็บไว้ในตัวแปรแสดงถึงสถานะของอ็อบเจ็กต์นั้น พื้นที่สำหรับตัวแปรอินสแตนซ์จะได้รับการจัดสรรในฮีป เมื่อวัตถุนั้นได้รับการจัดสรรในฮีป ดังนั้น ตัวแปรอินสแตนซ์จะถูกเก็บไว้ในหน่วยความจำตราบเท่าที่วัตถุนั้นยังทำงานอยู่ ตัวอย่างเช่น สีของรถคันหนึ่งเป็นอิสระจากสีของรถคันอื่น ดังนั้น สีของวัตถุรถยนต์จึงสามารถเก็บไว้ในตัวแปรอินสแตนซ์ได้ ในทางปฏิบัติ มีการประกาศตัวแปรอินสแตนซ์ในคลาสและเมธอดภายนอก โดยปกติ ตัวแปรอินสแตนซ์จะถูกประกาศเป็นแบบส่วนตัว เพื่อให้สามารถเข้าถึงได้เฉพาะภายในคลาสที่ประกาศ

ตัวแปรท้องถิ่นคืออะไร

ตัวแปรในเครื่องคือตัวแปรที่มีขอบเขตในเครื่อง และจะถูกประกาศภายในบล็อกโค้ดเฉพาะ ตัวแปรโลคัลสามารถเห็นได้ว่าเป็นตัวแปรที่ใช้โดยเมธอดเพื่อเก็บสถานะชั่วคราว ขอบเขตของตัวแปรโลคัลถูกกำหนดโดยใช้ตำแหน่งที่ประกาศตัวแปร และไม่ใช้คีย์เวิร์ดพิเศษเพื่อจุดประสงค์นี้ โดยทั่วไป การเข้าถึงตัวแปรโลคัลจะถูกจำกัดภายในบล็อคโค้ดที่ประกาศไว้ (เช่น ระหว่างวงเล็บปีกกาเปิดและปิดของบล็อคโค้ดนั้น) โดยทั่วไป ตัวแปรโลคัลจะถูกเก็บไว้ใน call stack สิ่งนี้จะช่วยให้การเรียกใช้ฟังก์ชันแบบเรียกซ้ำเพื่อรักษาสำเนาของตัวแปรในเครื่องของตัวเองเพื่อเก็บไว้ในช่องว่างที่อยู่หน่วยความจำแยกต่างหาก เมื่อเมธอดเสร็จสิ้นการดำเนินการ ข้อมูลเกี่ยวกับเมธอดนั้นจะปรากฏขึ้นจาก call stack และทำลายตัวแปรในเครื่องที่เก็บไว้ด้วย

ความแตกต่างระหว่างตัวแปรอินสแตนซ์และตัวแปรในเครื่องคืออะไร

อินสแตนซ์มีการประกาศในคลาสภายนอกเมธอด และเก็บสถานะของอ็อบเจ็กต์ ในขณะที่ตัวแปรโลคัลถูกประกาศภายในบล็อคโค้ด และใช้สำหรับจัดเก็บสถานะของเมธอดตัวแปรอินสแตนซ์จะใช้งานได้ตราบใดที่อ็อบเจ็กต์ที่มีตัวแปรนั้นทำงานอยู่ ในขณะที่ตัวแปรในเครื่องนั้นใช้งานได้จริงระหว่างการดำเนินการของเมธอด/บล็อกโค้ดนั้น ตัวแปรอินสแตนซ์ (ที่ประกาศเป็นสาธารณะ) สามารถเข้าถึงได้ภายในคลาส ในขณะที่ตัวแปรท้องถิ่นสามารถเข้าถึงได้ภายในบล็อกโค้ดที่ประกาศเท่านั้น การใช้ตัวแปรอินสแตนซ์จำกัดเฉพาะการเขียนโปรแกรมเชิงวัตถุ ในขณะที่ตัวแปรในเครื่องไม่มีข้อจำกัดดังกล่าว