ในภาษา Java ตัวแปรทั้งหมดจะต้องได้รับการประกาศก่อนใช้งาน รูปแบบพื้นฐานสำหรับการประกาศตัวแปรมีดังนี้:
type identifier [ = value][, identifier [= value] ...] ;
คำอธิบายรูปแบบ: type เป็นชนิดข้อมูล Java identifier คือชื่อตัวแปร ตัวแปรประเภทเดียวกันหลายรายการสามารถประกาศโดยคั่นด้วยเครื่องหมายจุลภาค
รายการด้านล่างเป็นตัวอย่างบางส่วนของการประกาศตัวแปร โปรดทราบว่าบางส่วนมีกระบวนการเริ่มต้นด้วย
int a, b, c; // 声明三个int型整数:a、b、c。 int d = 3, e, f = 5; // 声明三个整数并赋予初值。 byte z = 22; // 声明并初始化z。 double pi = 3.14159; // 声明了pi。 char x = 'x'; // 变量x的值是字符'x'。
ประเภทของตัวแปรที่ภาษา Java รองรับ ได้แก่:
- ตัวแปรท้องถิ่น: ตัวแปรในวิธีการของคลาส
- ตัวแปรอินสแตนซ์: ตัวแปรที่ไม่ขึ้นกับวิธีการ แต่ไม่มีการแก้ไขแบบคงที่
- ตัวแปรคลาส: ตัวแปรที่ไม่ขึ้นกับวิธีการ แก้ไขด้วยค่าคงที่
public class Variable{ static int allClicks=0; // 类变量String str="hello world"; // 实例变量public void method(){ int i =0; // 局部变量} }
ตัวแปรโลคัล Java
- ตัวแปรท้องถิ่นจะถูกประกาศในเมธอด ตัวสร้าง หรือบล็อกคำสั่ง
- ตัวแปรท้องถิ่นจะถูกสร้างขึ้นเมื่อมีการดำเนินการเมธอด ตัวสร้าง หรือบล็อกคำสั่ง เมื่อมีการดำเนินการ ตัวแปรจะถูกทำลาย
- ไม่สามารถใช้ตัวดัดแปลงการเข้าถึงกับตัวแปรท้องถิ่นได้
- ตัวแปรท้องถิ่นจะมองเห็นได้เฉพาะในเมธอด ตัวสร้าง หรือบล็อกคำสั่งที่มีการประกาศเท่านั้น
- ตัวแปรท้องถิ่นได้รับการจัดสรรบนสแต็ก
- ตัวแปรท้องถิ่นไม่มีค่าเริ่มต้น ดังนั้นหลังจากประกาศตัวแปรท้องถิ่นแล้ว จะต้องเตรียมใช้งานก่อนจึงจะสามารถใช้งานได้
ตัวอย่างที่ 1
ในตัวอย่างต่อไปนี้ อายุเป็นตัวแปรท้องถิ่น มันถูกกำหนดไว้ในเมธอด pupAge() และขอบเขตของมันจำกัดอยู่เพียงเมธอดนี้
public class Test{ public void pupAge(){ int age = 0; age = age + 7; System.out.println("Puppy age is : " + age); } public static void main(String args[]){ Test test = new Test(); test.pupAge(); } }
ผลการรวบรวมและการทำงานของตัวอย่างข้างต้นมีดังนี้:
Puppy age is: 7
ตัวอย่างที่ 2
ในตัวอย่างต่อไปนี้ ตัวแปรอายุไม่ได้เตรียมใช้งาน ดังนั้นจึงเกิดข้อผิดพลาดระหว่างการคอมไพล์
public class Test{ public void pupAge(){ int age; age = age + 7; System.out.println("Puppy age is : " + age); } public static void main(String args[]){ Test test = new Test(); test.pupAge(); } }
ผลการรวบรวมและการทำงานของตัวอย่างข้างต้นมีดังนี้:
Test.java:4:variable number might not have been initialized age = age + 7; ^ 1 error
ตัวแปรอินสแตนซ์
- ตัวแปรอินสแตนซ์จะถูกประกาศภายในคลาส แต่จะมีการประกาศวิธีการภายนอก ตัวสร้าง และบล็อกคำสั่ง
- เมื่อวัตถุถูกสร้างอินสแตนซ์ ค่าของตัวแปรอินสแตนซ์แต่ละตัวจะถูกกำหนด
- ตัวแปรอินสแตนซ์จะถูกสร้างขึ้นเมื่อมีการสร้างวัตถุและถูกทำลายเมื่อวัตถุถูกทำลาย
- ค่าของตัวแปรอินสแตนซ์ควรอ้างอิงโดยวิธี ตัวสร้าง หรือบล็อกคำสั่งอย่างน้อยหนึ่งวิธี เพื่อให้ภายนอกสามารถรับข้อมูลตัวแปรอินสแตนซ์ผ่านวิธีการเหล่านี้
- สามารถประกาศตัวแปรอินสแตนซ์ก่อนหรือหลังการใช้งานได้
- ตัวแก้ไขการเข้าถึงสามารถแก้ไขตัวแปรอินสแตนซ์ได้
- ตัวแปรอินสแตนซ์จะปรากฏแก่เมธอด ตัวสร้าง หรือบล็อกคำสั่งในคลาส โดยทั่วไปแล้ว ตัวแปรอินสแตนซ์ควรถูกทำให้เป็นส่วนตัว ตัวแปรอินสแตนซ์สามารถทำให้คลาสย่อยมองเห็นได้โดยใช้ตัวดัดแปลงการเข้าถึง
- ตัวแปรอินสแตนซ์มีค่าเริ่มต้น ค่าเริ่มต้นของตัวแปรตัวเลขคือ 0 ค่าเริ่มต้นของตัวแปรบูลีนเป็นเท็จ และค่าเริ่มต้นของตัวแปรประเภทการอ้างอิงเป็นโมฆะ ค่าของตัวแปรสามารถระบุได้ในขณะที่ประกาศหรือในตัวสร้าง
- สามารถเข้าถึงตัวแปรอินสแตนซ์ได้โดยตรงผ่านชื่อตัวแปร แต่ในวิธีการคงที่และคลาสอื่นๆ คุณควรใช้ชื่อแบบเต็ม: ObjectReference.VariableName
ตัวอย่าง:
import java.io.*; public class Employee{ // 这个成员变量对子类可见public String name; // 私有变量,仅在该类可见private double salary; //在构造器中对name赋值public Employee (String empName){ name = empName; } //设定salary的值public void setSalary(double empSal){ salary = empSal; } // 打印信息public void printEmp(){ System.out.println("name : " + name ); System.out.println("salary :" + salary); } public static void main(String args[]){ Employee empOne = new Employee("Ransika"); empOne.setSalary(1000); empOne.printEmp(); } }
ผลการรวบรวมและการทำงานของตัวอย่างข้างต้นมีดังนี้:
name : Ransika salary :1000.0
ตัวแปรคลาส (ตัวแปรคงที่)
- ตัวแปรคลาสเรียกอีกอย่างว่าตัวแปรสแตติกและประกาศด้วยคีย์เวิร์ดคงที่ในคลาส แต่ต้องเป็นเมธอดภายนอก ตัวสร้าง และบล็อกคำสั่ง
- ไม่ว่าคลาสจะสร้างวัตถุจำนวนเท่าใด คลาสจะมีสำเนาของตัวแปรคลาสเพียงสำเนาเดียวเท่านั้น
- ตัวแปรคงที่ไม่ค่อยได้ใช้ยกเว้นเมื่อมีการประกาศเป็นค่าคงที่ ค่าคงที่หมายถึงตัวแปรที่ประกาศเป็นประเภทสาธารณะ/ส่วนตัว สุดท้าย และคงที่ ค่าคงที่ไม่สามารถเปลี่ยนแปลงได้หลังจากการกำหนดค่าเริ่มต้น
- ตัวแปรแบบคงที่จะถูกจัดเก็บไว้ในพื้นที่จัดเก็บข้อมูลแบบคงที่ มักประกาศเป็นค่าคงที่ ตัวแปรมักไม่ค่อยถูกประกาศโดยใช้คงที่เพียงอย่างเดียว
- ตัวแปรคงที่ถูกสร้างขึ้นเมื่อเริ่มต้นโปรแกรมและถูกทำลายเมื่อสิ้นสุดโปรแกรม
- มีการมองเห็นตัวแปรอินสแตนซ์ที่คล้ายกัน แต่เพื่อให้ผู้ใช้คลาสมองเห็นได้ ตัวแปรสแตติกส่วนใหญ่จึงถูกประกาศเป็นประเภทสาธารณะ
- ค่าเริ่มต้นจะคล้ายกับตัวแปรอินสแตนซ์ ค่าเริ่มต้นของตัวแปรตัวเลขคือ 0 ค่าเริ่มต้นของตัวแปรบูลีนเป็นเท็จ และค่าเริ่มต้นของประเภทการอ้างอิงคือ null ค่าของตัวแปรสามารถระบุได้เมื่อประกาศตัวแปรหรือในตัวสร้าง นอกจากนี้ ตัวแปรแบบคงที่ยังสามารถเตรียมใช้งานในบล็อกคำสั่งแบบคงที่ได้อีกด้วย
- ตัวแปรคงที่สามารถเข้าถึงได้ผ่าน: ClassName.VariableName
- เมื่อมีการประกาศตัวแปรคลาสเป็นประเภทสุดท้ายแบบคงที่สาธารณะ ชื่อตัวแปรคลาสจะต้องใช้อักษรตัวพิมพ์ใหญ่ หากตัวแปรคงที่ไม่ใช่ประเภทสาธารณะและเป็นประเภทสุดท้าย วิธีการตั้งชื่อจะสอดคล้องกับวิธีการตั้งชื่อของตัวแปรอินสแตนซ์และตัวแปรท้องถิ่น
ตัวอย่าง:
import java.io.*; public class Employee{ //salary是静态的私有变量private static double salary; // DEPARTMENT是一个常量public static final String DEPARTMENT = "Development "; public static void main(String args[]){ salary = 1000; System.out.println(DEPARTMENT+"average salary:"+salary); } }
ผลการรวบรวมและการทำงานของตัวอย่างข้างต้นมีดังนี้:
Development average salary:1000
หมายเหตุ: หากคลาสอื่นต้องการเข้าถึงตัวแปรนี้ พวกเขาสามารถเข้าถึงได้ดังนี้: Employee.DEPARTMENT
ในบทนี้ เราได้เรียนรู้เกี่ยวกับประเภทของตัวแปร Java และในบทถัดไป เราจะแนะนำการใช้ตัวดัดแปลง Java