Variable ให้ named storage สำหรับโปรแกรมจัดการ แต่ละ variable ใน Java มี type เฉพาะ กำหนดขนาด memory, ช่วงค่า, และ operations ที่ใช้ได้
Static Variable (Class Variable)
ตัวแปร static เรียกว่า class variable ร่วมใช้กันทั่ว objects ของคลาส เข้าถึงได้ด้วยชื่อคลาส
Non-Static Variable (Instance Variable)
ตัวแปรที่ไม่ใช่ static เรียกว่า instance variable เฉพาะ instance นั้นๆ
| ลำดับ | หัวข้อ | Static | Non-Static |
|---|---|---|---|
| 1 | Access | เข้าถึงได้จาก static และ non-static members | เข้าถึงจาก static member functions ไม่ได้ |
| 2 | Sharing | เป็น global variable แบ่งปันทุก objects | เฉพาะ instance ที่สร้างขึ้น |
| 3 | Memory Allocation | จัดสรรครั้งเดียว ใช้พื้นที่น้อย | อาจจัดสรร runtime ใช้พื้นที่มากกว่า |
| 4 | Keyword | ต้องมีคีย์เวิร์ด static | ไม่ต้องมีคีย์เวิร์ดพิเศษ |
ตัวอย่าง
public class JavaTester {
public int counter = 0;
public static int staticCounter = 0;
public JavaTester() {
counter++;
staticCounter++;
}
public static void main(String args[]) {
JavaTester tester = new JavaTester();
JavaTester tester1 = new JavaTester();
JavaTester tester2 = new JavaTester();
System.out.println("Counter: " + tester2.counter);
System.out.println("Static Counter: " + tester2.staticCounter);
}
}
ผลลัพธ์
Counter: 1 Static Counter: 3
สร้างอ็อบเจ็กต์ 3 ตัว instance variable counter เพิ่มแต่ละตัวแยกกัน (ค่า 1) static variable staticCounter แบ่งปัน เพิ่มรวมเป็น 3