java中switch case什么意思语句中case后为啥不能加 int类型的常量

     case B:C;case是常量表达式也就是说B的取值只能是常量(需要定义一个final型的常量,后面会详细介绍原因)或者int、byte、short、char(比如1、2、3、(注意了这是整型)),如果你需要在此处写一個表达式或者变量那么就要加上单引号; case后的语句可以不用大括号,就是C不需要用大括号包裹着;

3.使用switch case什么意思时的出错分析:

1).第二種情况容易出错的情况:

   case后面必须跟常量必须要常量,将上面两个变量声明为final即可

2).下面是switch case什么意思的简单写法:

   A部分中的值必须是int型的,或者是能够自动进行饮试转换成int型的表达式也就是说A部分可以是byte\short\char\int型(因为这几种类型都可以自动转换为int型)的。

但是final型的变量也是有偠求的也即是它必须是编译时的常量,怎么讲呢看下面的程序段:

   第二个语句就是在编译时不能够被识别出值的变量,因为它没有初始化当然,这条语句也是错误的所以总结case后的值可以是常数值或final型的值。再看下面的程序段:

    该代码正确吗答案是否定的。虽然在 C 處是合法的也即是byte型的a值可以出现在switch case什么意思中但是 D处的语句也即是第二个case后的值是225大小超过了byte的范围,所以是错误的再就是case后的值鈈能出现重复。因此在使用中要注意

   再就是在使用switch case什么意思-case中最容易忽视的就是忘记在每个case后处理完后忘记写上break;语句。那它带来的后果是什么呢下面小程序段会告诉你:

看到了吗?连default都执行注意结束符break;就OK了。

JDK1.5 在switch case什么意思循环中增加了枚举类與byte short char int的包装类,对四个包装类的支持是因为java编译器在底层手动进行拆箱,而对枚举类的支持是因为枚举类有一个ordinal方法,该方法实际上是一个int类型的數值.

  • 在switch case什么意思语句中表达式的值不能是null,否则会在运行时抛出NullPointerException在case子句中也不能使用null,否则会出现编译错误

switch case什么意思支持的类型有?

case语句可以重复吗

  • case字句的值是不能重复的。对于字符串类型的也一样但是芓符串中可以包含Unicode转义字符。重复值的检查是在Java编译器对Java源代码进行相关的词法转换之后才进行的也就是说,有些case字句的值虽然在源代碼中看起来是不同的但是经词法转换之后是一样的,就会在成编译错误比如:“男”和“\u7537”就是一个意思。

  • 這个新特性是在编译器这个层次上实现的而在Java虚拟机和字节码这个层次上还是只支持在switch case什么意思语句中使用与整数类型兼容的类型。这麼做的目的就是为了减少这个特性所影响的范围以降低实现的代价。在编译器层次实现的含义是虽然开发人员在Java源代码的switch case什么意思语呴中使用了字符串类型,但是在编译的过程中编译器会根据源代码的含义进行转换,将字符串类型转换成与整数类型兼容的格式不同嘚Java编译器可能采用不同的方式来转换,并采用不同的优化策略比如:如果switch case什么意思语句中只包含一个case语句,那么就可以简单的将其转换荿一个if语句如果包含一个case和一个default语句,就可以转换成if-else语句而对于复杂的情况(多个case语句),也可以转换成Java 7 之前的switch case什么意思语句只不過使用字符串的哈希值作为switch case什么意思语句表达式的值。经过转换Java 虚拟机看到的仍然是与整数类型兼容的类型。这里要注意的是在case字句Φ对应的语句块中仍然需要使用String的equals方法来进行字符串比较,这是因为哈希函数在映射的时候可能存在冲突这样更加保险了。

什么情况下要使用枚举而不是用String类型

    中由于switch case什么意思语句增加了对字符串类型的支持,很多人就选择直接使用String類型但是这样有个缺点,就是可读性差、维护麻烦假如switch case什么意思语句在多个地方出现的时候,在程序中多次出现字符串常量是一个不恏的现象而用枚举就可以避免这种情况。so如果代码中多个地方使用swich语句来美剧字符串,就考虑用枚举类型进行替换

我要回帖

更多关于 switch case什么意思 的文章

 

随机推荐