1. ตัวแปรท้องถิ่น
มาคุยกันเรื่องตัวแปรกันดีกว่า แต่คราวนี้เราจะไม่พูดถึงโครงสร้างภายใน เราจะมุ่งเน้นไปที่วิธีที่ตัวแปรโต้ตอบกับรหัสที่พวกเขาอยู่
ตัวแปรทั้งหมดที่ถูกประกาศภายในเมธอดเรียกว่าตัวแปรโลคัล ตัวแปรโลคัลมีอยู่เฉพาะในบล็อกของโค้ดที่มีการประกาศ หรือให้แม่นยำยิ่งขึ้น มีอยู่ตั้งแต่วินาทีที่ประกาศจนถึงช่วงสิ้นสุดของบล็อกโค้ดที่มีการประกาศ
เพื่อความง่าย ลองพิจารณาตัวอย่าง:
รหัส | การมองเห็นที่เปลี่ยนแปลงได้ |
---|---|
|
|
เรามาพูดถึงการเข้าถึงตัวแปรในเครื่องกันอีกครั้ง ต่อไปนี้เป็นบล็อกของโค้ดที่ประกอบด้วยวงเล็บปีกกา: นี่อาจเป็นเนื้อหาของเมธอด เนื้อหาของลูป หรือเป็นเพียงบล็อกของโค้ดสำหรับคำสั่งเงื่อนไข ตัวแปรที่ประกาศในกลุ่มของโค้ดมีอยู่จนถึงจุดสิ้นสุดของบล็อกของโค้ดนั้น
หากมีการประกาศตัวแปรในเนื้อความของลูป ตัวแปรนั้นจะมีอยู่ในเนื้อความของลูปเท่านั้น มันถูกสร้างขึ้นและถูกทำลายในทุก ๆ การวนซ้ำของลูป
ตัวอย่าง:
รหัส | การมองเห็นที่เปลี่ยนแปลงได้ |
---|---|
|
|
เราสามารถประกาศชื่อตัวแปรโลคัลตัวที่สองb
ได้ เนื่องจากb
ตัวแปรตัวแรกไม่สามารถมองเห็นได้ในบล็อคโค้ดที่มีb
การประกาศตัวแปรตัว ที่สอง
2. พารามิเตอร์
ดังที่เราได้กล่าวไว้ก่อนหน้านี้ แต่ละเมธอดสามารถมีตัวแปรที่เราเรียกว่าพารามิเตอร์ได้ แล้วการมองเห็นและอายุการใช้งานล่ะ?
มันตรงไปตรงมาทั้งหมด พารามิเตอร์ถูกสร้างขึ้นเมื่อดำเนินการขั้นตอนในเมธอด (เช่น เมื่อโค้ดของเมธอดเริ่มดำเนินการ) พวกเขาจะถูกกำจัดเมื่อวิธีการสิ้นสุดลง มองเห็นได้ทั่วร่างกายของวิธีการ
ตัวอย่าง:
รหัส | การมองเห็นที่เปลี่ยนแปลงได้ |
---|---|
|
|
อย่างที่เราพูดไปก่อนหน้านี้args
เป็นเพียงตัวแปรที่มีประเภทเป็นอาร์เรย์ของสตริง และเช่นเดียวกับพารามิเตอร์ทั้งหมด มีอยู่ทุกที่ภายในเนื้อหาของวิธีการ ที่กล่าวว่า เรามักจะเพิกเฉยในตัวอย่างของเรา
3. ตัวแปรในคลาส
คุณจะจำได้จากบทเรียนในระดับ 1 ว่าชั้นเรียนสามารถมีเมธอดและตัวแปรได้ เมธอดบางครั้งเรียกว่าเมธอดอินสแตนซ์ และตัวแปร — ตัวแปรอินสแตนซ์หรือฟิลด์ เหล่านี้เป็นคำพ้องความหมายใน Java
ตัวแปร (หรือฟิลด์) ของคลาสคืออะไร
เป็นตัวแปรที่ไม่ได้ประกาศในเมธอดแต่อยู่ในคลาส
สามารถเข้าถึงได้จากวิธีการใด ๆ (ไม่คงที่) ของชั้นเรียน พูดอย่างคร่าว ๆตัวแปรอินสแตนซ์คือตัวแปรที่ใช้ร่วมกันโดยเมธอดทั้งหมดของคลาส
ตัวอย่าง:
รหัส | การมองเห็นที่เปลี่ยนแปลงได้ |
---|---|
|
|
ในตัวอย่างนี้ เรามีสองวิธี— add()
และ remove()
เมธอดadd()
จะเพิ่มตัวแปรsum
และcount
อินสแตนซ์ และremove()
เมธอดจะลดตัวแปรsum
และ count
ทั้งสองวิธีทำงานกับตัวแปรอินสแตนซ์ที่ใช้ร่วมกัน
ตัวแปรโลคัลมีอยู่ในขณะที่เมธอดกำลังดำเนินการ ตัวแปรอินสแตนซ์ของคลาสมีอยู่ภายในวัตถุของคลาสตราบเท่าที่วัตถุนั้นมีอยู่ คุณจะได้เรียนรู้รายละเอียดเกี่ยวกับวัตถุของชั้นเรียนในระดับถัดไป
4. ตัวแปรคงที่
เช่นเดียวกับเมธอด ตัวแปรในคลาสอาจเป็นแบบคงที่หรือไม่คงที่ก็ได้ เมธอดสแตติกสามารถเข้าถึงตัวแปรสแตติกเท่านั้น
ในระดับ 11 เราจะวิเคราะห์โครงสร้างของตัวแปรคงที่และวิธีการ และคุณจะเข้าใจสาเหตุของข้อจำกัดเหล่านี้
ในการสร้างตัวแปรแบบสแตติก (ตัวแปรคลาส) คุณต้องเขียนstatic
คำสำคัญในการประกาศ
ตัวแปรสแตติกจะไม่ถูกผูกไว้กับออบเจกต์หรืออินสแตนซ์ของคลาสที่มีการประกาศ แต่เป็นของชั้นเรียนเอง นั่นเป็นเหตุผลที่พวกมันมีอยู่ แม้ว่าจะไม่มีการสร้างออบเจ กต์ของคลาสเลยก็ตาม คุณสามารถอ้างถึงพวกเขาจากคลาสอื่นโดยใช้โครงสร้างเช่น:
ClassName.variableName
ตัวอย่าง:
รหัส | การมองเห็นที่เปลี่ยนแปลงได้ |
---|---|
|
|
ในตัวอย่างข้างต้น เราสร้างคลาสแยกต่างหากย้ายStorage
และcount
ตัวแปรsum
เข้าไป และประกาศให้เป็นstatic ตัวแปรสแตติกสาธารณะสามารถเข้าถึงได้จากวิธีใดก็ได้ในโปรแกรม (ไม่ใช่เฉพาะจากวิธี)