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

switch เป็นนิพจน์

ส่งคืนค่าจาก switch

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

คำสั่งเทียบกับนิพจน์

คำสั่งใช้ดำเนินการบางอย่าง ส่วนนิพจน์จะสร้างค่า Java สมัยใหม่อนุญาตให้ switch เป็นนิพจน์ได้ คุณจึงกำหนดผลลัพธ์ของมันให้กับตัวแปรได้โดยตรง

การกำหนดผลลัพธ์จาก switch

เมื่อ switch อยู่ทางด้านขวาของ = แต่ละสาขาจะเป็นผู้จัดหาค่าให้ รูปแบบลูกศรจะส่งคืนค่าที่อยู่หลัง -> โดยอัตโนมัติ

public class Main {
    public static void main(String[] args) {
        int day = 6;
        String type = switch (day) {
            case 6, 7 -> "Weekend";
            default -> "Weekday";
        };
        System.out.println(type);
    }
}

อัฒภาคหลังบล็อก

เนื่องจากนิพจน์ switch เป็นส่วนหนึ่งของคำสั่ง จึงต้องปิดท้ายด้วยอัฒภาคหลังวงเล็บปีกกาปิด การลืมใส่เป็นข้อผิดพลาดขณะคอมไพล์ที่พบได้บ่อย

public class Main {
    public static void main(String[] args) {
        int n = 2;
        int doubled = switch (n) {
            case 1 -> 2;
            case 2 -> 4;
            default -> 0;
        };
        System.out.println(doubled);
    }
}

ความครอบคลุมครบถ้วน

นิพจน์ switch ต้องครอบคลุมค่าที่เป็นไปได้ทุกค่า สำหรับชนิดข้อมูลส่วนใหญ่ นั่นหมายถึงต้องมีสาขา default มิฉะนั้นโค้ดจะคอมไพล์ไม่ผ่าน

public class Main {
    public static void main(String[] args) {
        int score = 85;
        char grade = switch (score / 10) {
            case 10, 9 -> 'A';
            case 8 -> 'B';
            case 7 -> 'C';
            default -> 'F';
        };
        System.out.println(grade);
    }
}

ชนิดแจกแจงไม่จำเป็นต้องมี default

เมื่อคุณใช้ switch กับ enum และครอบคลุมค่าคงที่ทุกค่าแล้ว คอมไพเลอร์จะทราบว่าครอบคลุมครบถ้วน สาขา default จึงเป็นตัวเลือกและไม่จำเป็นต้องมี

public class Main {
    enum Dir { NORTH, SOUTH, EAST, WEST }
    public static void main(String[] args) {
        Dir d = Dir.EAST;
        String label = switch (d) {
            case NORTH -> "Up";
            case SOUTH -> "Down";
            case EAST -> "Right";
            case WEST -> "Left";
        };
        System.out.println(label);
    }
}

ส่งคืนค่าโดยตรง

เมธอดสามารถ return นิพจน์ switch ได้โดยตรง ทำให้สร้างเมธอดสำหรับค้นหาแบบกระชับได้

public class Main {
    static int sides(String shape) {
        return switch (shape) {
            case "triangle" -> 3;
            case "square" -> 4;
            case "pentagon" -> 5;
            default -> 0;
        };
    }
    public static void main(String[] args) {
        System.out.println(sides("square"));
    }
}

ผลลัพธ์ที่เป็นตัวเลข

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

public class Main {
    public static void main(String[] args) {
        int month = 2;
        int days = switch (month) {
            case 2 -> 28;
            case 4, 6, 9, 11 -> 30;
            default -> 31;
        };
        System.out.println("Days: " + days);
    }
}

การใช้ผลลัพธ์โดยตรง

ค่าจากนิพจน์ switch สามารถนำไปใช้ได้ทันที เช่น ใช้ภายในการเรียก println

public class Main {
    public static void main(String[] args) {
        int code = 1;
        System.out.println("Status: " + switch (code) {
            case 0 -> "OK";
            case 1 -> "Warning";
            default -> "Error";
        });
    }
}

ความสอดคล้องของชนิดข้อมูล

ทุกสาขาต้องให้ชนิดผลลัพธ์ที่สอดคล้องกัน หากสาขาหนึ่งส่งคืน int แต่อีกสาขาส่งคืน String โค้ดจะคอมไพล์ไม่ผ่าน ควรให้ทุกสาขาใช้ชนิดเดียวกัน

public class Main {
    public static void main(String[] args) {
        int n = 3;
        double factor = switch (n) {
            case 1 -> 0.5;
            case 2 -> 1.0;
            default -> 1.5;
        };
        System.out.println(factor);
    }
}

แทนที่ชุดนิพจน์สามส่วน

นิพจน์ switch มักอ่านเข้าใจได้ชัดเจนกว่าตัวดำเนินการสามส่วนที่ซ้อนกัน เมื่อต้องจับคู่ค่าหนึ่งค่ากับผลลัพธ์หลายรายการ

public class Main {
    public static void main(String[] args) {
        int rating = 4;
        String stars = switch (rating) {
            case 1 -> "*";
            case 2 -> "**";
            case 3 -> "***";
            case 4 -> "****";
            default -> "*****";
        };
        System.out.println(stars);
    }
}

การใช้ร่วมกับตัวแปร

คุณสามารถใช้ผลลัพธ์ของนิพจน์ switch ในการคำนวณต่อได้เช่นเดียวกับค่าอื่น ๆ

public class Main {
    public static void main(String[] args) {
        int tier = 2;
        int discount = switch (tier) {
            case 1 -> 5;
            case 2 -> 10;
            default -> 0;
        };
        int price = 100 - discount;
        System.out.println("Price: " + price);
    }
}

ตรวจสอบความเข้าใจ

เหตุใดนิพจน์ switch จึงมักต้องมีสาขา default

สรุป

คุณได้เรียนรู้การใช้ switch เป็นนิพจน์ดังนี้

  • นิพจน์นี้สร้างค่าที่คุณสามารถกำหนดให้ตัวแปรหรือส่งคืนได้
  • ปิดท้ายการกำหนดค่าด้วยอัฒภาค
  • ต้องครอบคลุมครบถ้วน (โดยทั่วไปต้องมี default)
  • ชนิดแจกแจงที่ครอบคลุมค่าคงที่ทุกค่าจะไม่ต้องมี default
  • ทุกสาขาต้องใช้ชนิดผลลัพธ์เดียวกัน

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

บทเรียน “switch เป็นนิพจน์” ฟรีหรือไม่

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

คุณจะเรียนรู้อะไรในบทเรียน “switch เป็นนิพจน์”

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

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

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

บทเรียน “switch เป็นนิพจน์” ใช้เวลานานแค่ไหน

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

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

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

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

  1. switch แบบลูกศร
  2. switch เป็นนิพจน์
  3. คีย์เวิร์ด yield
  4. กรณีที่มีหลายป้ายกำกับ
← กลับไปที่ Java Academy