เพื่อแยกแยะระหว่างพี่น้องสองคนนี้ก่อนอื่นเราต้องรู้ว่าพวกเขาคืออะไร ก่อนอื่นให้ใช้ตัวแปรสมาชิก
ตัวแปรสมาชิก
มาศึกษาเรื่องกันเถอะ:
คุณลักษณะ: ลักษณะภายนอก; เช่นความสูงและน้ำหนักของมนุษย์
พฤติกรรม: คุณทำอะไรได้บ้าง ตัวอย่างเช่นผู้คนมีพฤติกรรมเช่นการพูดเล่นบาสเก็ตบอล ฯลฯ
ในภาษา Java หน่วยพื้นฐานที่สุดคือชั้นเรียนและใช้คลาสเพื่อสะท้อนสิ่งต่าง ๆ
เช่นเดียวกันสำหรับการอธิบายสิ่งต่าง ๆ ด้วยคลาสคลาส:
แอตทริบิวต์: ตัวแปรสมาชิกในคลาสที่เกี่ยวข้อง
พฤติกรรม: ฟังก์ชั่นสมาชิกในคลาสที่สอดคล้องกัน
การกำหนดคลาสเป็นจริงเป็นสมาชิก (ตัวแปรสมาชิกและฟังก์ชั่นสมาชิก) ในชั้นเรียน
การขยายตัว: คลาสเป็นแนวคิดที่เป็นนามธรรมและวัตถุคือการดำรงอยู่ที่เป็นรูปธรรมและเป็นศูนย์รวมของชั้นเรียน ตัวอย่างเช่น: รถยนต์ในชีวิตถือได้ว่าเป็นชั้นเรียนซึ่งเราเรียกว่าคลาสรถ รถแต่ละคันมีหมายเลขสีและยาง (สามารถกำหนดเป็นแอตทริบิวต์เช่นตัวแปรสมาชิก) และรถแต่ละคันสามารถทำงานได้ (นั่นคือพฤติกรรมของรถซึ่งสอดคล้องกับฟังก์ชั่นสมาชิกทั้งหมดของคลาส) ถ้าเรายกตัวอย่างรถเราจะผลิตวัตถุเช่นเมอร์เซเดส-เบนซ์และ BMW (BMW)
Demo1:
รถคลาสสาธารณะ {สีสตริงส่วนตัว; // กำหนดสีรถยนต์ตัวแปรระดับโลก int numluntai // กำหนดหมายเลขยางรถยนต์รถสาธารณะตัวแปรทั่วโลก (สีสตริง, int numluntai) {super (); this.color = color; this.numluntai = numluntai; } public void run () {system.out.println (this.numluntai + "Wheels" + this.color + "รถกำลังขับรถบนถนน"); - คลาสสาธารณะ Classtest {โมฆะคงที่สาธารณะหลัก (สตริง [] args) {car bmw = รถใหม่ ("ดำ", 4); // สร้างวัตถุซีดานที่มีชื่อ BMW bmw.run (); -ผลการทำงาน:
ซีดานสีดำที่มี 4 ล้อขับรถบนท้องถนน
ในหมู่พวกเขาสีและ numluntai เรียกว่าตัวแปรสมาชิกของคลาสรถ คุณสมบัตินี้สามารถใช้เพื่ออธิบายคุณสมบัติของชั้นเรียน มิฉะนั้นควรกำหนดเป็นตัวแปรท้องถิ่น
ตัวอย่างเช่นฉันใน A for loop เป็นตัวแปรท้องถิ่น
สำหรับ (int i = 0; i <args.length; i ++) {
-
-
ตัวอย่างเช่นตัวแปรถูกเขียนในวิธีสมาชิกเป็นตัวแปรท้องถิ่น
รถยนต์สาธารณะ {สีสตริงส่วนตัว; // กำหนดสีรถยนต์ตัวแปรระดับโลก int numluntai // กำหนดหมายเลขยางรถยนต์รถสาธารณะตัวแปรทั่วโลก (สีสตริง, int numluntai) {super (); this.color = color; this.numluntai = numluntai; } โมฆะสาธารณะ Run () {String Carname = "BMW"; // นี่คือตัวแปรท้องถิ่น System.out.println (this.numluntai + "Wheels" + this.color + Carname + "รถกำลังขับรถบนถนน"); }} publicclass classtest {public static void main (string [] args) {car bmw = รถใหม่ ("ดำ", 4); // สร้างวัตถุซีดานที่มีชื่อ BMW bmw.run (); -ผลลัพธ์:
ซีดาน BMW สีดำที่มี 4 ล้อขับรถบนท้องถนน
ความแตกต่างระหว่างตัวแปรสมาชิกและตัวแปรท้องถิ่น
ตัวแปรสมาชิก:
①ตัวแปรสมาชิกถูกกำหนดไว้ในชั้นเรียนและสามารถเข้าถึงได้ตลอดทั้งชั้นเรียน
②ตัวแปรสมาชิกถูกสร้างขึ้นด้วยการจัดตั้งวัตถุหายไปด้วยการหายตัวไปของวัตถุและมีอยู่ในหน่วยความจำกองที่ตั้งอยู่
③ตัวแปรสมาชิกมีค่าเริ่มต้นเริ่มต้น
ตัวแปรท้องถิ่น:
①ตัวแปรท้องถิ่นถูกกำหนดไว้เฉพาะในขอบเขตท้องถิ่นเช่น: ภายในฟังก์ชั่นภายในงบ ฯลฯ และใช้ได้เฉพาะในพื้นที่ที่พวกเขาอยู่
②ตัวแปรท้องถิ่นมีอยู่ในหน่วยความจำสแต็ก เมื่อขอบเขตของฟังก์ชั่นสิ้นสุดลงพื้นที่ตัวแปรจะถูกปล่อยออกมาโดยอัตโนมัติ
③ตัวแปรท้องถิ่นไม่มีค่าเริ่มต้นเริ่มต้น
หลักการที่ต้องปฏิบัติตามเมื่อใช้ตัวแปรคือ: หลักการความใกล้ชิด
ก่อนอื่นค้นหาในขอบเขตท้องถิ่นใช้ถ้ามีหนึ่ง; จากนั้นค้นหาในตำแหน่งสมาชิก
ฉันอาจสับสนเล็กน้อยเมื่อเห็นสิ่งนี้ ให้ฉันจัดเรียงตัวอย่างด้านล่าง ถ้าคุณคิดอย่างระมัดระวังจริง ๆ แล้วมันง่ายมาก
มาดูรหัสง่าย ๆ ก่อน
ก่อนอื่นฉันกำหนดชั้นเรียนบุคคล
บุคคลชั้นเรียนสาธารณะ {Private Int อายุ = 1,000; // กำหนดตัวแปรสมาชิกอายุคือ 1,000 การตั้งค่าโมฆะสาธารณะ (อายุ int) {อายุ = อายุ; System.out.println ("อายุภายในวิธี"+อายุ); } โมฆะสาธารณะ Sayshello () {system.out.println ("อายุของฉันคือ"+อายุ+"."); -จากนั้นสร้างวัตถุในฟังก์ชั่นหลักและส่งออก
บุคคล p = บุคคลใหม่ (); p.setage (20); P.Sayhello ();
ผลลัพธ์ผลลัพธ์คืออะไร? ไม่ใช่ว่าเราจินตนาการว่าอายุของฉันคือ 20 แต่ต่อไปนี้:
// อายุภายในวิธีคือ 20 // อายุของฉันคือ 1,000
เป็นเรื่องง่ายที่จะเข้าใจถ้าคุณคิดเกี่ยวกับมัน
ในคำหนึ่งหากมีชื่อที่แตกต่างกันชื่อตัวแปรในวิธีนี้แสดงถึงตัวแปรสมาชิก หากมีชื่อเดียวกันชื่อตัวแปรในวิธีนี้จะแสดงถึงตัวแปรท้องถิ่นเท่านั้นและไม่มีความสัมพันธ์กับตัวแปรสมาชิก
ดังนั้นก่อนอื่นเมื่อเราสร้างวัตถุบุคคล P ตัวแปรสมาชิกได้รับการเริ่มต้นเมื่อสร้างวัตถุ ค่าเริ่มต้นของอายุตัวแปรสมาชิกคือ 1,000
เมื่อเรา p.setage (20), 20 จริงทำงานเฉพาะในวิธีการตั้งค่าดังนั้นอายุ 20 ในวิธีการคือเอาต์พุต หลังจากดำเนินการประโยคนี้ 20 จะถูกทำลาย
จากนั้นดำเนินการ Sayhello และอายุในนั้นแสดงถึงค่าของตัวแปรสมาชิกดังนั้นจึงยังคงเป็น 1,000
หากคุณยังไม่เข้าใจที่นี่คุณสามารถเขียนรหัสด้วยตัวเองเพื่อดูผลลัพธ์ผลลัพธ์และสัมผัสกับมัน
ดังนั้นเมื่อใช้ชื่อเดียวกันเราต้องการให้ชื่อตัวแปรนี้แสดงถึงตัวแปรสมาชิก มีวิธีใดบ้าง?
จากนั้นเราต้องพูดถึงคำหลักนี้ เราเปลี่ยนคลาสบุคคลเป็นสิ่งนี้:
บุคคลชั้นเรียนสาธารณะ {Private Int อายุ = 1,000; การตั้งค่าโมฆะสาธารณะ (อายุ int) {this.age = อายุ; System.out.println ("อายุภายในวิธี"+อายุ); } โมฆะสาธารณะ Sayshello () {system.out.println ("อายุของฉันคือ"+อายุ+"."); -เรียกใช้รหัสอีกครั้งและพบว่าผลลัพธ์การเรียกใช้รหัสกลายเป็นดังต่อไปนี้:
// อายุภายในวิธีคือ 20 // อายุของฉันคือ 20
สิ่งนี้แสดงถึงวัตถุปัจจุบัน
สิ่งนี้ที่นี่ระบุว่าค่าของอายุของวัตถุ P (นั่นคืออายุตัวแปรสมาชิกของวัตถุ P) คือ 20
แม้ว่าสาระสำคัญของทั้งสองเป็นตัวแปร แต่ก็มีความแตกต่างค่อนข้างเมื่อใช้และคุณอาจตกอยู่ในกับดักหากคุณไม่ระวัง โปรดจำไว้ก่อนว่า: ในชั้นเรียนหากตัวแปรสามารถใช้เพื่ออธิบายคุณสมบัติของคลาสมันจะถูกกำหนดให้เป็นตัวแปรสมาชิกมิฉะนั้นควรกำหนดเป็นตัวแปรท้องถิ่น หากคุณไม่เข้าใจให้เขียนโค้ดเพิ่มเติมและคุณสามารถเข้าใจได้