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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- switch แบบลูกศร
- switch เป็นนิพจน์
- คีย์เวิร์ด yield
- กรณีที่มีหลายป้ายกำกับ