上一篇地址:整理好了!2024年最常见 100 道 Java基础面试题(二十三)-CSDN博客
四十七、switch 是否能用在 long 上?
在Java中,switch
语句是一种流控制语句,它允许根据一个变量的值执行不同的代码块。在Java的早期版本中,switch
语句支持的基本数据类型有限,但是随着Java语言的发展,支持的类型逐渐增加。
Java 12之前
在Java 12之前,switch
语句支持的基本数据类型包括:
byte
short
char
int
对于long
类型,switch
语句是不支持的。如果你尝试使用long
类型的变量作为switch
的条件表达式,编译器会报错。
Java 12及之后
从Java 12开始,switch
语句增强了对String
和enum
类型的支持,并且也支持了long
类型。这意味着你可以使用long
类型的变量作为switch
的条件表达式。
示例
Java 12之前的写法
java
long value = 123L;
if (value == 123L) {
// 代码块
} else if (value == 456L) {
// 代码块
}
// ... 以此类推
由于switch
不支持long
,所以通常使用if-else
语句进行条件判断。
Java 12及之后的写法
java
long value = 123L;
switch (value) {
case 123L -> {
// 代码块
}
case 456L -> {
// 代码块
}
// ... 以此类推
}
在Java 12及之后,可以直接使用long
类型的变量作为switch
的条件表达式。
注意事项
- 即使在Java 12及之后,
switch
语句也不支持浮点数类型(float
和double
)。 switch
语句中的case
标签必须是常量表达式,不能是变量或计算结果。- 在使用
switch
语句时,要注意case
标签的穷举和break
语句的使用,以避免代码执行流程的混乱。
总结
从Java 12开始,switch
语句可以使用long
类型的变量作为条件表达式,这为处理long
类型的条件判断提供了更加简洁和直观的方式。然而,需要注意的是,switch
语句的使用仍然受到一定的限制,比如不支持浮点数类型。
四十八、switch 是否能用在 String 上?
在Java中,switch
语句确实可以用于String
类型。这是Java语言的一个特性,允许使用字符串字面量作为switch
语句的条件表达式。每个case
标签必须是一个字符串字面量,或者是一个与字符串字面量相等的字符串常量表达式。
使用switch
处理String
当使用String
类型作为switch
的条件表达式时,switch
语句会根据字符串的内容与各个case
标签进行比较。如果找到匹配的字符串,程序流程将跳转到相应的case
块执行。
示例
java
public class StringSwitchExample {
public static void main(String[] args) {
String operation = "add";
switch (operation) {
case "add":
System.out.println("Operation is addition.");
break;
case "subtract":
System.out.println("Operation is subtraction.");
break;
case "multiply":
System.out.println("Operation is multiplication.");
break;
case "divide":
System.out.println("Operation is division.");
break;
default:
System.out.println("Unknown operation.");
break;
}
}
}
在这个示例中,switch
语句根据变量operation
的值执行不同的代码块。每个case
标签都是一个字符串字面量,与operation
变量的值进行比较。
注意事项
switch
语句中的字符串比较是使用String.equals(Object)
方法实现的,这意味着比较是区分大小写的。- 如果
switch
语句中的所有case
标签都没有匹配成功,程序流程将跳转到default
块(如果存在)。 - 字符串字面量必须与变量的值完全匹配,包括大小写和空格。
总结
switch
语句对String
类型的支持使得处理基于字符串的多分支逻辑变得更加方便和直观。它提供了一种替代传统的if-else
语句链的方法,特别是在有多个分支选择时,可以使得代码更加清晰和易于维护。然而,使用switch
处理字符串时,需要注意字符串比较的细节,如大小写敏感性和完全匹配的要求。