zoukankan      html  css  js  c++  java
  • switch 语句能否作用在 byte 上,能否作用在 long 上,能否作用在 String 上?为什么?

      可以是int 基本类型或Integer 包装类型,由于,byte,short,char 都可以隐含转换为int,所以这些类型以及这些类型的包装类型也是可以的。显然long 和String 类型都不符合switch 的语法规定,并且不能被隐式转换成int 类型,所以它们不能作用于swtich 语句中。switch中可以是字符串类型,String(JDK1.7之后才可以作用在string上),switch中可以是枚举类型(JDK1.5之后)。

      问题一 : 为什么switch不可作用于long double float ,包括他们的包装类?

        简单的回答是因为语法的规定。在实际编程中,极少有如此多的分支,以致需要使用Long类型。这样的语法规定是语言设计者的折衷考虑,并不一定特别合理,语言规范也在不停演变。但截止目前的版本,Java的Swithch分支仍然不支持Long,在这种情况下,可以采取一些办法:

      1) 转为int类型,范例如下:

          final long value = System.currentTimeMillis() % 5;
          switch ( (new Long(value)).intValue() ) //注意这行
          {
             case 1 : System.err.println("One");
                      break;
             case 2 : System.err.println("Two");
                      break;
       }

      2) 放弃switch,改用 if/else 的写法。
      3) 放弃switch,改用 Map。

      补充:语言的底层实现细节有时还真不完全清楚,Java新版本中Switch添加了对String的支持,如果要支持Long,也没问题。谁知道他们是怎么想的^_^,作为语言的使用者,遵守规则即可。

  • 相关阅读:
    opencv图片压缩视频并读取
    python常见模块统计
    MySQL索引及优化
    web开发框架之 Tornado
    Tornado项目基本架构
    python闭包以及装饰器
    python语法糖
    python os模块
    TCP中的3次握手和4次挥手
    Python常见的数据类型方法
  • 原文地址:https://www.cnblogs.com/mzmy/p/11200740.html
Copyright © 2011-2022 走看看