Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

ความแตกต่างระหว่าง Static และ Non-static Variables ใน Java

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