Java语言基础中选择结构之Switch结构

这几天在看Java相关语法基础,和C++在语法上还有一些通用性,看到选择结构这块时有些迷糊,特此纪录下来!

switch语句的格式:

switch (表达式) {
       case 值1:
           语句体1;
           break;
       case 值2:
           语句体2;
           break;
       case 值3:
           语句体3;
           break;
       ..........
       default :
           语句体n+1;
           break;
}

语句功能:可以从一系列代码中选出一段去执行

在书《Java编程思想》一书中给出的switch格式如下):

switch(integral-selector){
    case integral-value1 : statement ; break;
    case integral-value2 : statement ; break;
    case integral-value3 : statement ; break;
    case integral-value4 : statement ; break;
    //...
    default : statement ;
}

位于格式最末尾的default可以不加break;

其中(integral-slector)整数选择因子是一个能够产生整数值的表达式,switch能将这个表达式的结果与每个integral-value(整数值)比较,若发现相同的字符,就执行对应的语句,若发现没有相符的,就执行default(默认语句)。每个case均以一个break结尾,这样可使执行流程跳转至switch主体的末尾。这是构建switch语句的一种传统方式,但break是可选的。若省略break,会继续执行case后面的语句,直到遇到一个break。

在本书中,书中提到switch语句要求使用一个选择因子并且必须是int或char那样的整数值(这里存在疑问),若将一个字符串或者浮点数作为选择因子使用,那么它们在switch语句那里是不会工作的。

但是下边的这段代码是以字符串作为选择因子的,代码也可以成功执行。(例子来源于黑马程序员Java基础班上课例子)

class Dem0_Switch {
	public static void main(String[] args) {

		String name =  "张三";
		String gender = "女士";
		switch (gender ) {
		case "男士":
			System.out.println(name + "是一位" + gender + "吃饭睡觉打LOL");
		break;
		case "女士":
			System.out.println(name + "是一位" + gender + "逛街购物美容");
		break;
		default:
			System.out.println("人妖");
		break;
		}
	}
}

书中提到:“Java SE5的新特性enum枚举,它可以帮助我们减弱这种限制,因为enum可以和switch协调工作。

验证了一下,的确可以,switch语句基本数据类型可接受byte、short、char、int可提升为int类型的(JDK1.7)

而在JDK(1.5)引用数据类型可接受枚举、字符串(String)。下面贴一个自己练习字符串的例子。

import java.util.Scanner;
class Demo6_Switch_practice {
	public static void main(String[] args) {
		System.out.println("请从梅西和C罗中选择一名你最喜爱的球员:1 代表C罗,2 代表梅西, 其他数字,代表你两个都爱");
		Scanner sc = new Scanner(System.in);
		int x = sc.nextInt();
        String player1 = "C罗";
		String player2 = "梅西";

		String player;
		if ( x== 1) {
			 player = player1;
		}else if ( x==2) {
			 player = player2;
		}else {
			 player = "both";
		}	

		
		switch (player) {
		case "梅西": 
			System.out.println(player2 + "是巴萨的当家球星!,现在西甲成了一枝独秀了!" );
			break;
		case "C罗":
			System.out.println(player1 + "现在成了尤文的当家球星了,和皇马没有半毛钱关系了!");
		break;
		default :
			System.out.println("绝代双骄,不分伯仲");
		
		}
	}
}

注意到:选择因子是字符串时,case " 选择字符串" :这里要加双引号,来表示字符串,整数则没必要。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值