java替代switch的写法
时间: 2023-09-02 11:09:57 浏览: 137
Java中可以使用if-else语句替代switch语句,例如:
```
if (condition1) {
// do something
} else if (condition2) {
// do something else
} else if (condition3) {
// do something else
} else {
// default case
}
```
另外,Java 12中还引入了新的语法,可以使用switch表达式来简化代码,例如:
```
String result = switch (input) {
case "A" -> "Excellent";
case "B", "C" -> "Good";
case "D" -> "Pass";
case "F" -> "Fail";
default -> "Invalid grade";
};
```
这种写法可以将switch语句的每个case转化为一个lambda表达式,更加简洁易读。
相关问题
java中switch理解
### Java 中 `switch` 语句详解
#### 基本概念
在Java中,`switch`语句是一种用于根据不同的条件执行不同代码块的流程控制语句。它能够替代多个`if-else`语句,从而使代码更加简洁和易于理解[^2]。
#### 使用场景
当存在多种可能的选择路径时,使用`switch`语句可以使程序逻辑更为直观。尤其适用于处理枚举类型、字符以及整数类型的判断情况[^3]。
#### 语法结构
以下是标准形式下的`switch`表达式的定义:
```java
public void switchExample(int value){
switch(value){
case constant1 :
// 当value等于constant1时执行此部分代码;
break;
case constant2 :
// 当value等于constant2时执行此部分代码;
break;
...
default :
// 如果以上所有case都不匹配,则执行这里的默认操作。
}
}
```
注意,在每个`case`分支之后通常会有一个`break`关键字用来终止当前case并跳出整个switch结构;如果没有设置break,则会发生“贯穿”,即继续向下执行直到遇到下一个break或结束大括号为止[^4]。
#### 实际案例分析
下面给出一段具体的例子来展示如何利用`switch`实现简单的数值转换功能:
```java
public class NumberToWordConverter {
private static final String[] words = {"Zero", "One", "Two"};
public static String convertNumberToWords(int number) {
if(number >= 0 && number < words.length){
return switch (number) { // 自JDK 14起支持这种增强型写法
case 0 -> words[number];
case 1 -> words[number];
case 2 -> words[number];
default -> throw new IllegalArgumentException("Invalid input");
};
} else{
throw new IndexOutOfBoundsException("Index out of bounds.");
}
}
public static void main(String args[]) {
try {
System.out.println(convertNumberToWords(1)); // 输出 One
} catch(Exception e){
System.err.println(e.getMessage());
}
}
}
```
上述代码展示了自 JDK 14 开始引入的一种新的`switch`表达式风格,其中箭头(`->`)代替了传统的冒号(:),并且可以直接返回值而不需要额外声明变量[^1]。
java中的if else 的替换写法,除了switch 语句
除了使用`switch`语句,Java中还可以使用`if else`的替代写法是使用`Map`。具体做法是将不同条件下的代码块封装成为不同的`Runnable`对象,将这些`Runnable`对象以`key-value`的形式存储在`Map`中,然后根据条件从`Map`中获取对应的`Runnable`对象并执行即可。
示例如下:
```java
Map<Boolean, Runnable> map = new HashMap<>();
map.put(true, () -> {
// 如果条件为true,执行这里的代码块
});
map.put(false, () -> {
// 如果条件为false,执行这里的代码块
});
boolean condition = true; // 假设这是一个if else语句中的条件表达式
map.get(condition).run(); // 根据条件获取对应的Runnable对象并执行
```
需要注意的是,这种替代写法只适用于`if else`语句中的两个分支,如果有多个分支,那么使用`Map`的写法就过于繁琐了,此时还是应该使用`if else`或`switch`语句。
阅读全文
相关推荐














