java中switch case语句的使用方法

switch语法

 代码如下 复制代码

switch(表达式)
{
case 常量表达式1:语句1;
....
case 常量表达式2:语句2;
default:语句;
}

default就是如果没有符合的case就执行它,default并不是必须的.
case后的语句可以不用大括号.
switch语句的判断条件可以接受int,byte,char,short,不能接受其他类型.
一旦case匹配,就会顺序执行后面的程序代码,而不管后面的case是否匹配,直到遇见break,利用这一特性可以让好几个case执行统一语句.

例子

 代码如下 复制代码

public class SwitchDemo {

 public static void main(String[] args) {
  System.out.println(switchTest(4));//55
 }

 private static int switchTest(int key) {

  int value = 0;
  switch (key) {
  case 1:
   value = 11;
  case 2:
   value = 22;
  case 3:
   value = 33;
  case 4:
   value = 44;
  default:
   value = 55;
  }

  return value;
 }
}

输出 : 55

switch-case的注意地方

下面是switch的简单写法:

 代码如下 复制代码
switch(A){
case B;
}

A部分中的值必须是int型的,或者是能够自动进行饮试转换成int型的表达式。也就是说A部分可以是byte/short/char/int型的。
其次要强调的是该程序中B部分的值必须是单个byte/short/char/int型的值,或者是final型的变量。
但是final型的变量也是有要求的,也即是它必须是编译时的常量,怎么讲呢,看下面的程序段:
final int a = 0;
final int b;
第二个语句就是在编译时不能够被识别出值的变量,因为它没有初始化,当然,这条语句也是错误的。
所以总结case后的值可以是常数值或final型的值。

再看下面的程序段:

 代码如下 复制代码

public class TestSwitch {
public static void main(String[] args){
byte a = 11;
switch(a){// C
case 11 : System.out.println(" 11 "); break;
case 225 : System.out.println(" 11 "); break;// D
}
}
}

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

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

 代码如下 复制代码
public class TestSwitchCase {
public static void main(String[] args){
byte a = 2;
switch(a){
case 1 : System.out.println(" A ");
case 2 : System.out.println(" B ");
case 3 : System.out.println(" C ");
case 4 : System.out.println(" D ");
                default : System.out.println(" default ");
}
}
}
=========输出结果为:
 B
 C
 D
 default

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

case中A不能为变量

Java switch case里面的用法,由于 switch case 和 if-else 工作原理不一样,可能某些公司会避免使用if-else而采用switch case的方法来解决问题。

在jdk1.6 中:

 代码如下 复制代码

int i= "test".hashcode();

String s = "test";

switch (s.hashcode()) {

  case i :System.out.println("bad");

}//这种方法是不支持的。编译根本通过不了,因为 i 是一个变量

 

经过网上一翻查找,在jdk1.7中可能会支持这个功能。

但是问题就不能这么简单的解决,因为现在很多企业都没有在使用1.7的版本。

没事在电脑面前想出来一个办法,应该可以行得通在jdk1.6中解决 case不能使用变量的方法

上代码

 代码如下 复制代码

public class TestHash {

 /**
  * Comments:
  * @author Jacky
  * Chinese :
  * @param args
  */
 public static void main(String[] args) {
 

   String s = "test";

 

   int i= "test".hashCode();

 

  switch ( ("test1".hashCode()== i ? 1:1) *("test2".hashCode() == i ? 2:1) *(s.hashCode() == i ? 3 :1) ){

             case   1 :System.out.println("not good");break;

             case   2 : System.out.println("not good"); break;

             case   3  : System.out.println("good"); break;

 

             default : System.out.print(4); break;

  }//switch

 }// main

 

}//class

 

ok,我运行了下,运行结果是打印 good

时间: 2024-10-02 21:47:08

java中switch case语句的使用方法的相关文章

Javascript中switch case 语句学习笔记

在if条件语句中,逻辑条件只能有一个,如果有多个条件,可以使用嵌套的if语句来解决,但这种方法会增加程序的复杂度,降低程序的可读性. 使用switch流程控制语句可以完美地解决这些问题,其基本结构如下: switch语句语法  代码如下 复制代码 switch(条件表达式) {         case 常量:         {                 语句a;         }         case 常量:         {                 语句b;     

举例讲解Swift编程中switch...case语句的用法_Swift

Switch作为选择结构中必不可少的语句也被加入到了Swift中,只要有过编程经验的人对Switch语句都不会感到陌生,但苹果对Switch进行了大大的增强,使其拥有其他语言中没有的特性.使用Switch语句很简单: var i = 0 switch i { case 0: "0" //被输出 case 1: "1" default: "2" } 在这个最简单的Switch语句中,与其他语言很不同的一点是:不用显式的加上break.Swift的S

Java中switch判断语句典型使用实例_java

下面一个是典型的switch语法运用的例子. import java.util.Scanner; public class JudgeMonth { public static void main(String[] arg){ Scanner scan = new Scanner(System.in); System.out.println("请输入月份:"); int month = scan.nextInt(); switch(month){ case 12: case 1: ca

C语言中switch case语句可变参实现方法(case 参数 空格...空格 参数 :)

正常情况下,switch case语句是这么写的: switch(参数) { case 1 : ... ; break ; case 2 : ... ; break ; default: ... break ; } 这种是我们最常见的写法,当然也可以这么写: switch(参数) { case 1: case 2 : case 3 : case 4 : ... ;break ; default : ... ;break ; } 接下来说一种不常见的,但是对于多参数有很大的帮助的写法: 先给一个程

图片-switch语句中各个case语句与default的次序不影响执行结果吗?

问题描述 switch语句中各个case语句与default的次序不影响执行结果吗? 解决方案 解决方案二: switch...case... 语句switch case 语句基础知识之switch case语句 解决方案三: http://zhidao.baidu.com/link?url=wmBFivbZ3tyO_HPJvx3coYKWoVtAhIXR8cfkaEU-Zea5u8nkB2Um5pwvPExjMCrihmtMY0N8dQ1si17IkSHW2K 解决方案四: 你的外层switc

Swift编程中的switch...case语句实例解析_Swift

Swift中的switch...case语句可以判断对象类型, Objective-C中则必须是整数. 不可以穿透,可以不写break, var rank = "A" switch rank{ case "A": //相当于if print("优") case "B": // 相当于else if print("优") case "C": // 相当于else if print(&quo

详解Swift的switch...case语句中break关键字的用法_Swift

与Objective-C中这部分内容相比,在Swift中switch得到了极大的改善.这是一件非常有趣的事,因为这还是没有添加到Objective-C中,还是没有打破Objective-C是C的超集的事实. 第一件令人兴奋的地方是可以对字符串转换.这也许正是你之前想要做,却不能做的事.在Objective-C中如果要对字符串用"switch",你必须要使用多个if语句,同时要用isEqualToString:,像下面这样: if ([person.name isEqualToStrin

讲解JavaScript中for...in语句的使用方法

  这篇文章主要介绍了讲解JavaScript中for...in语句的使用方法,是JS入门学习中的基础知识,需要的朋友可以参考下 这里是JavaScript支持的另外一个循环.它被称为for...in循环.这个循环是用于循环一个对象的属性. 因为我们还没有讨论的对象,所以使用这一循环可能会感觉不太明白.但是,一旦你会对JavaScript对象了解后,那么会发现这个循环非常有用. 语法 ? 1 2 3 for (variablename in object){ statement or block

JAVA中IP和整数相互转化的方法

  本文实例讲述了JAVA中IP和整数相互转化的方法.分享给大家供大家参考.具体分析如下: 一.基本知识点 IP --> 整数: 把IP地址转化为字节数组 通过左移位(<<).与(&).或(|)这些操作转为int 整数 --> IP: 将整数值进行右移位操作(>>>),右移24位,再进行与操作符(&)0xFF,得到的数字即为第一段IP. 将整数值进行右移位操作(>>>),右移16位,再进行与操作符(&)0xFF,得到的数字