0Pricing
Java Academy · บทเรียน

ขอบเขตและอายุการใช้งาน

ทำความเข้าใจว่าตัวแปรมองเห็นได้ที่ใด (ขอบเขต) และมีอยู่ได้นานเพียงใด (อายุการใช้งาน) ครอบคลุมบล็อก ลูป เมธอด ฟิลด์ การบดบังชื่อ และพารามิเตอร์ final

ขอบเขตและอายุการใช้งาน เป็นบทเรียน Java Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 3 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Java Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Java Academy มีบทเรียนทั้งหมด 3 บทเรียน

ขอบเขตกับช่วงอายุ

ขอบเขต = ตำแหน่งที่สามารถมองเห็นชื่อ เช่น ตัวแปรได้ ช่วงอายุ = ระยะเวลาที่ตัวแปรมีอยู่ คุณจะได้เห็นขอบเขตของบล็อก ขอบเขตของลูป ตัวแปรภายในเมธอด ฟิลด์ของคลาส และกฎการบดบังชื่อ

ขอบเขตของบล็อก

ขอบเขตของบล็อก: ตัวแปรที่ประกาศภายในวงเล็บปีกกาจะมองเห็นได้เฉพาะภายในวงเล็บปีกกานั้น

public class Main {
  public static void main(String[] args) {
    int a = 10; // visible in main
    {
      int b = 20; // visible only inside this block
      System.out.println("inside block: a=" + a + ", b=" + b);
    }
    System.out.println("outside block: a=" + a);
    // System.out.println(b); // would NOT compile: b is out of scope
  }
}

ขอบเขตของลูป

ขอบเขตของลูป: ดัชนีของลูปที่ประกาศในส่วนหัวของ for จะมองเห็นได้เฉพาะภายในตัวลูป

public class Main {
  public static void main(String[] args) {
    for (int i = 0; i < 3; i = i + 1) {
      System.out.println("i in loop = " + i);
    }
    // System.out.println(i); // would NOT compile: i is scoped to the loop

    int j;
    for (j = 0; j < 2; j = j + 1) {
      System.out.println("j in loop = " + j);
    }
    System.out.println("j after loop = " + j); // OK: j declared outside
  }
}

ฟิลด์กับตัวแปรภายใน

ช่วงอายุ: ฟิลด์ระดับคลาสและสแตติกจะคงอยู่ข้ามการเรียกใช้ ส่วนตัวแปรภายในจะถูกสร้างขึ้นใหม่ทุกครั้งที่เรียกใช้ และถูกทิ้งเมื่อเมธอดจบการทำงาน

public class Main {
  // static field (class-level): lives for the program lifetime
  static int counter = 0;

  static void tick() {
    int local = 100; // local: created each call, dies when method returns
    counter = counter + 1;
    System.out.println("tick: counter=" + counter + ", local=" + local);
  }

  public static void main(String[] args) {
    tick();
    tick();
    tick();
    System.out.println("final counter=" + counter);
  }
}

การบดบังชื่อ

การบดบังชื่อ: การประกาศภายใน เช่น พารามิเตอร์หรือตัวแปรภายใน อาจซ่อนชื่อภายนอกที่มีตัวระบุเดียวกัน ใช้ ClassName.field หรือ this.field ในเมธอดอินสแตนซ์ เพื่อเข้าถึงฟิลด์ที่ถูกซ่อน

public class Main {
  static String label = "FIELD"; // class field

  static void demo(String label) { // parameter shadows field name
    System.out.println("param label = " + label); // uses parameter
    {
      String labelInner = "INNER"; // new name in inner block
      System.out.println("inner block labelInner = " + labelInner);
      System.out.println("still param label = " + label);
    }
    System.out.println("field via class name = " + Main.label); // refer to field explicitly
  }

  public static void main(String[] args) {
    demo("PARAM");
  }
}

พารามิเตอร์ค่าคงที่และการส่งค่าโดยสำเนา

พารามิเตอร์ค่าคงที่ ไม่สามารถกำหนดค่าใหม่ได้ Java ใช้การ ส่งค่าโดยสำเนา: การกำหนดค่าใหม่ให้พารามิเตอร์จะไม่เปลี่ยนตัวแปรของผู้เรียกใช้

public class Main {
  // final parameter cannot be reassigned inside the method
  static int inc(final int n) {
    // n = n + 1; // would NOT compile if uncommented
    return n + 1; // safe: return a new value
  }

  static void reassign(int x) {
    x = 999; // reassignes the local copy; caller variable is unchanged
  }

  public static void main(String[] args) {
    int a = 5;
    int b = inc(a);
    System.out.println("a=" + a + ", b=inc(a)=" + b);

    reassign(a);
    System.out.println("after reassign(a): a is still " + a);
  }
}

ตรวจสอบขอบเขตและช่วงอายุ

ตรวจสอบอย่างรวดเร็ว: ข้อใดเกี่ยวกับขอบเขตและช่วงอายุเป็น TRUE

สรุปทบทวนและขั้นถัดไป

สรุปทบทวน: คุณได้ฝึกใช้ขอบเขตของบล็อกและลูป เรียนรู้ความแตกต่างระหว่างฟิลด์กับตัวแปรภายใน การบดบังชื่อ และพารามิเตอร์ค่าคงที่แล้ว ขั้นถัดไป: ไปต่อกับรูปแบบการออกแบบและการนำกลับมาใช้ซ้ำใน A2.2

คำถามที่พบบ่อย

บทเรียน “ขอบเขตและอายุการใช้งาน” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “ขอบเขตและอายุการใช้งาน” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Java Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Java Academy มีบทเรียนทั้งหมด 3 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “ขอบเขตและอายุการใช้งาน”

ทำความเข้าใจว่าตัวแปรมองเห็นได้ที่ใด (ขอบเขต) และมีอยู่ได้นานเพียงใด (อายุการใช้งาน) ครอบคลุมบล็อก ลูป เมธอด ฟิลด์ การบดบังชื่อ และพารามิเตอร์ final คุณปฏิบัติ Java Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Java Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Java Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 3 บทเรียน

บทเรียน “ขอบเขตและอายุการใช้งาน” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Java Academy นี้ได้ไหม

ได้ บทเรียน Java Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. การกำหนดเมธอดและพารามิเตอร์
  2. ค่าที่ส่งคืนและการโอเวอร์โหลด
  3. ขอบเขตและอายุการใช้งาน
← กลับไปที่ Java Academy