黑马程序员—switch中default的用法

本文探讨了 Java 中 switch 语句的执行流程,特别是 default 子句的位置对其行为的影响。通过实例展示了当 default 子句位于开头或中间时,switch 语句是如何工作的,并强调了每个 case 和 default 后添加 break 的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

switch中的default

 ----------- android培训java培训、java学习型技术博客、期待与您交流! ------------

switch中的default,一般用在最后,表示非以上的任何情况下而发生的情况,我们一般习惯在他的后面加上个break。但是,如果default不是在最后,而是在前面或中间会发生什么情况呢:
先看看default在句首的情况:
int i = 2;
switch (i) {
default:
System.out.println("default");
case 0:
System.out.println("0");
case 1:
System.out.println("1");
case 2:
System.out.println("2");
break;
case 3:
System.out.println("3");
case 4:
System.out.println("4");
break;
}
他的输出结果是:2! 很明显,不是先执行的default语句!
再看看下面语句:
int i = 8;
switch (i) {
default:
System.out.println("default");
case 0:
System.out.println("0");
case 1:
System.out.println("1");
case 2:
System.out.println("2");
break;
case 3:
System.out.println("3");
case 4:
System.out.println("4");
break;
}
他的输出结果是:
default
0
1
2
出人意料!!从default开始向后执行!
再看看default在句中的情况:
int i = 2;
switch (i) {
case 0:
System.out.println("0");
case 1:
System.out.println("1");
break;
default:
System.out.println("default");
case 2:
System.out.println("2");
break;
case 3:
System.out.println("3");
case 4:
System.out.println("4");
break;
}
结果是2!显然还是没执行default!
int i = 8;
switch (i) {
case 0:
System.out.println("0");
case 1:
System.out.println("1");
break;
default:
System.out.println("default");
case 2:
System.out.println("2");
break;
case 3:
System.out.println("3");
case 4:
System.out.println("4");
break;
}
结果:
default
2
显然是从default开始向后执行的!
从上面可以看出:

switch的执行是按照从小到大的顺序执行的,最后执行default语句,如果default后面带有break,那么程序就会正常跳出switch,否则,程序会继续向后执行switch语句!也就是说,不管default放在什么位置,它总是在最后一个处理,然后继续向下处理!所以,最后的处理办法,避免出现以外结果的最好办法就是每一个case以及default语句都要加一个break。

----------- android培训java培训、java学习型技术博客、期待与您交流! ------------ 

详细请查看www.itheima.com




根据提供的引用内容,黑马程序员提供了一套针对Java初学者的完整学习笔记和教程,涵盖了从基础语法到高级开发技能的全面知识体系。该课程包含大量示例、练习题以及实际项目演练,适合零基础入门者系统性地掌握Java编程语言[^1]。 ### 学习资源涵盖的主要内容: - **基础语法**:包括变量、数据类型、运算符、控制结构(如if语句、循环)、方法等。 - **面向对象编程**:类与对象、封装、继承、多态、抽象类、接口等核心概念。 - **异常处理**:try-catch块、自定义异常、finally块的作用及使用方式。 - **集合框架**:List、Set、Map等常用接口及其具体实现类(如ArrayList、HashSet、HashMap)。 - **泛型与Lambda表达式**:提升代码复用性和简洁性的现代Java特性。 - **输入输出流(IO)**:文件读写操作、缓冲流、对象序列化等内容。 - **多线程编程**:线程创建、同步机制、线程池等并发处理技术。 - **网络编程**:Socket通信、HTTP请求处理等基础知识。 - **数据库连接(JDBC)**:使用Java操作数据库,执行SQL语句并处理结果集。 - **实战项目**:结合真实场景设计的综合案例,如学生管理系统、银行账户模拟系统等。 ### 如何获取黑马程序员Java学习笔记 可以通过以下几种方式获取相关资料: 1. **Bilibili视频配套资料**:访问提供的视频链接,通常在视频描述或评论区中会附上下载链接或网盘分享地址。 2. **官方平台下载**:前往黑马程序员官网或者其合作教育平台注册账号后,部分课程资料可免费或付费下载。 3. **社区交流**:加入相关的QQ群、微信群或论坛(如GitHub、优快云),与其他学习者共享资源。 4. **书籍推荐**:参考《Java核心技术卷Ⅰ》《Effective Java》等经典教材作为补充材料。 ### 示例代码:简单的学生管理系统 以下是一个简单的Java控制台程序示例,用于管理学生信息: ```java import java.util.ArrayList; import java.util.List; import java.util.Scanner; class Student { private String name; private int age; public Student(String name, int age) { this.name = name; this.age = age; } @Override public String toString() { return "Student{name='" + name + "', age=" + age + "}"; } } public class StudentManagementSystem { private static List<Student> students = new ArrayList<>(); private static Scanner scanner = new Scanner(System.in); public static void main(String[] args) { while (true) { System.out.println("1. Add Student"); System.out.println("2. View Students"); System.out.println("3. Exit"); System.out.print("Choose an option: "); int choice = scanner.nextInt(); scanner.nextLine(); // Consume newline switch (choice) { case 1: addStudent(); break; case 2: viewStudents(); break; case 3: System.out.println("Exiting..."); return; default: System.out.println("Invalid choice. Please try again."); } } } private static void addStudent() { System.out.print("Enter student name: "); String name = scanner.nextLine(); System.out.print("Enter student age: "); int age = Integer.parseInt(scanner.nextLine()); students.add(new Student(name, age)); System.out.println("Student added successfully.\n"); } private static void viewStudents() { if (students.isEmpty()) { System.out.println("No students found.\n"); } else { for (Student student : students) { System.out.println(student); } System.out.println(); } } } ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值