Java switch 对数字、字符、枚举、字符串类型的支持

简介: 本文目录1. 概述2. switch使用枚举3. switch使用常量

1. 概述

首先说明,Java switch(x)中的x到底是否支持数字、字符、枚举、字符串类型,跟JDK的版本是相关的。


数字和字符,其实差不多事情,都是一直支持的。


从JDK1.5开始,支持枚举了,然后从JDK1.7开始,也支持String了。


当然,因为还有很多系统用经典的JDK1.6,所以最好别采用String作为参数,以免自找麻烦。


OK,使用数字和字符又有点太抽象了,所以建议使用枚举,如果觉得枚举太麻烦,还可以使用常量,以下分别举例哈。


2. switch使用枚举

直接上例子:

package org.maoge.demo;
/**
 * Description:Switch参数为枚举类型的例子 枚举类型
 * date:2017.10.18
 * @author maoge
 */
public enum UserType {
  STUDENT,TEACHER,ADMIN;
}
package org.maoge.demo;
/**
 * Description:Switch参数为枚举类型的例子
 * date:2017.10.18
 * @author maoge
 */
public class SwitchEnumDemo {
  public static void main(String[] args){
    System.out.println("It begins");
    UserType ut=UserType.TEACHER;
    switch(ut){
      case STUDENT:
        System.out.println("按学生处理");
        break;
      case TEACHER:
        System.out.println("按老师处理");
        break;
      case ADMIN:
        System.out.println("按管理员处理");
        break;
    }
  }
}

3. switch使用常量

package org.maoge.demo;
/**
 * Description:Switch参数为常量类型的例子 注意接口中的静动态常量可以直接通过接口名调用 此处UserTypeConstant也可以定义为类
 * date:2017.10.18
 * @author maoge
 */
public interface UserTypeConstant {
  final static int STUDENT=1;
  final static int TEACHER=2;
  final static int ADMIN=3;
}
package org.maoge.demo;
/**
 * Description:Switch参数为常量类型的例子
 * date:2017.10.18
 * @author maoge
 */
public class SwitchConstantDemo {
  public static void main(String[] args) {
    int type=UserTypeConstant.ADMIN;
    switch(type){
      case UserTypeConstant.STUDENT:
        System.out.println("按学生处理");
        break;
      case UserTypeConstant.TEACHER:
        System.out.println("按老师处理");
        break;
      case UserTypeConstant.ADMIN:
        System.out.println("按管理员处理");
        break;
    }
  }
}
相关文章
|
29天前
|
SQL Java 索引
java小工具util系列2:字符串工具
java小工具util系列2:字符串工具
142 83
|
29天前
|
Java 数据库
java小工具util系列1:日期和字符串转换工具
java小工具util系列1:日期和字符串转换工具
56 26
|
1月前
|
存储 缓存 安全
java 中操作字符串都有哪些类,它们之间有什么区别
Java中操作字符串的类主要有String、StringBuilder和StringBuffer。String是不可变的,每次操作都会生成新对象;StringBuilder和StringBuffer都是可变的,但StringBuilder是非线程安全的,而StringBuffer是线程安全的,因此性能略低。
54 8
|
1月前
|
Java
java switch case多个条件
通过本文的介绍,我们详细探讨了Java中 `switch case`语句的多种用法和优化方法。从基本语法到合并多个条件,再到使用枚举、常量和函数优化,`switch case`语句在Java编程中提供了一种灵活且高效的控制流方式。掌握这些技巧,能够编写出更加简洁、可读性强的代码,提高开发效率和代码质量。希望本文能为您在实际开发中提供有价值的参考和指导。
90 2
|
1月前
|
缓存 算法 Java
本文聚焦于Java内存管理与调优,介绍Java内存模型、内存泄漏检测与预防、高效字符串拼接、数据结构优化及垃圾回收机制
在现代软件开发中,性能优化至关重要。本文聚焦于Java内存管理与调优,介绍Java内存模型、内存泄漏检测与预防、高效字符串拼接、数据结构优化及垃圾回收机制。通过调整垃圾回收器参数、优化堆大小与布局、使用对象池和缓存技术,开发者可显著提升应用性能和稳定性。
52 6
|
1月前
|
存储 Java 开发者
Java 中 Set 类型的使用方法
【10月更文挑战第30天】Java中的`Set`类型提供了丰富的操作方法来处理不重复的元素集合,开发者可以根据具体的需求选择合适的`Set`实现类,并灵活运用各种方法来实现对集合的操作和处理。
|
1月前
|
Java 编译器 开发者
Java异常处理的最佳实践,涵盖理解异常类体系、选择合适的异常类型、提供详细异常信息、合理使用try-catch和finally语句、使用try-with-resources、记录异常信息等方面
本文探讨了Java异常处理的最佳实践,涵盖理解异常类体系、选择合适的异常类型、提供详细异常信息、合理使用try-catch和finally语句、使用try-with-resources、记录异常信息等方面,帮助开发者提高代码质量和程序的健壮性。
78 2
|
1月前
|
存储 Java 编译器
Java泛型类型擦除以及类型擦除带来的问题
泛型擦除是指Java编译器在编译期间会移除所有泛型信息,使所有泛型类型在运行时都变为原始类型。例如,`List<String>` 和 `List<Integer>` 在JVM中都视为 `List`。因此,通过 `getClass()` 比较两个不同泛型类型的 `ArrayList` 实例会返回 `true`。此外,通过反射调用 `add` 方法可以向 `ArrayList<Integer>` 中添加字符串,进一步证明了泛型信息在运行时被擦除。
46 2
|
7月前
|
存储 XML 缓存
Java字符串内幕:String、StringBuffer和StringBuilder的奥秘
Java字符串内幕:String、StringBuffer和StringBuilder的奥秘
78 0
|
4月前
|
安全 Java API
【Java字符串操作秘籍】StringBuffer与StringBuilder的终极对决!
【8月更文挑战第25天】在Java中处理字符串时,经常需要修改字符串,但由于`String`对象的不可变性,频繁修改会导致内存浪费和性能下降。为此,Java提供了`StringBuffer`和`StringBuilder`两个类来操作可变字符串序列。`StringBuffer`是线程安全的,适用于多线程环境,但性能略低;`StringBuilder`非线程安全,但在单线程环境中性能更优。两者基本用法相似,通过`append`等方法构建和修改字符串。
77 1