黑马程序员技术交流社区

标题: 问了switch上的问题 [打印本页]

作者: EDDY_Liang    时间: 2014-5-25 14:31
标题: 问了switch上的问题
本帖最后由 EDDY_Liang 于 2014-5-25 17:35 编辑

刚刚在做试题的时候看的这个选项
float x ,y; //x,y给出了正确的值
switch (x + y)  { ...... }  
答案是错的,
但我觉的应该是对的啊。
可以解释一下吗。

作者: happymouse    时间: 2014-5-25 14:39
switch后面只能跟字符串吧
作者: woshihq    时间: 2014-5-25 15:32
switch ()里只能是int ,char 和枚举型中的一种,不能float型,而且case的常量表达式要和switch后面的表达式类型一致!!
作者: ZHao.Xiao    时间: 2014-5-25 16:05
看上楼的解答
作者: xp8812    时间: 2014-5-25 16:22
楼上说的对,学习到了
作者: EDDY_Liang    时间: 2014-5-25 17:35
woshihq 发表于 2014-5-25 15:32
switch ()里只能是int ,char 和枚举型中的一种,不能float型,而且case的常量表达式要和switch后面的表 ...

哦哦。。原来是这样啊。谢谢了

作者: 周俊波    时间: 2014-5-25 18:02
楼楼楼上正解
作者: woshihq    时间: 2014-5-26 22:08
EDDY_Liang 发表于 2014-5-25 17:35
哦哦。。原来是这样啊。谢谢了

不客气!!!!!!!!
作者: happymouse    时间: 2014-5-27 00:12
woshihq 发表于 2014-5-25 15:32
switch ()里只能是int ,char 和枚举型中的一种,不能float型,而且case的常量表达式要和switch后面的表 ...

补充下,也可以是byte和short类型的
作者: 古陵逝烟    时间: 2014-5-27 06:00
呵呵,细节出真知啊
作者: yinxjfly    时间: 2014-5-27 11:38
我说一下。switch语句在JDK1.5之前只支持四种数值的判断,记住:是数值,可不是区间哦,
这四种分别为,byte,short,int和char
JDK1.5开始支持了对枚举类型变量的判断,
JDK7.0开始支持了对String类型变量的判断。
作者: 满面春风    时间: 2014-5-27 19:16
switch ()里只能是int ,char 和枚举型中的一种,不能是其他类型或表达式
作者: qfch    时间: 2014-5-27 19:27
学习学习
作者: 尘埃落定    时间: 2014-5-27 22:58
你的提问不是很清楚,但是我可以分享下它的用法
switch (表达式){ case 值1 : 语句1 break; case 值2 : 语句2 break; ... default : 语句n break; } 从表达式值等于某个case语句后的值开始,它下方的所有语句都会一直运行,直到遇到一个break为止。随后,switch语句将结束,程序从switch结束大括号之后的第一个语句继续执行,并忽略其他case。 假如任何一个case语句的值都不等于表达式的值,就运行可选标签default之下的语句。 假如表达式的值和任何一个case标签都不匹配,同时没有发现一个default标签,程序会跳过整个switch语句,从它的结束大括号之后的第一个语句继续执行。
作者: 张志民    时间: 2014-5-27 23:31
看了别人说的我也明白了
作者: 没壳的蜗牛    时间: 2014-5-27 23:39
switch中可以接受什么数据类型:byte short int char --JDK1.4
switch中可以接受什么数据类型:byte short int char 枚举 --JDK1.5
switch中可以接受什么数据类型:byte short int char 枚举 String --JDK1.7

作者: 师在飞    时间: 2014-5-28 09:25
为了技术分,大家真的是好积极,知无不言,沙发难抢了哎
作者: 27ZJQ    时间: 2014-6-11 22:40
happymouse 发表于 2014-5-27 00:12
补充下,也可以是byte和short类型的

是滴!:)
作者: 江峰渔火    时间: 2014-6-15 10:06
在jdk1.6以前 switch只能后变量只能是整形或字符型变量,jdk1.7+后又加上了字符串
switch 语句的格式:
 
switch ( 整型或字符型变量 )
{
     case 变量可能值1 :
         分支一;
         break;
   case 变量可能值2 :
         分支二;
         break;
   case 变量可能值3 :
         分支三;
         break;
   ...
   default :
       最后分支;

对于int和char类型的操作网上很多,我就不说了,我只说String类型的如下:

  1. public class SW {

  2.         public static void main(String[] args) {
  3.                 String s = "abc";
  4.                 switch (s) {
  5.                 case "a":
  6.                         System.out.println("a");
  7.                         break;
  8.                 default:
  9.                         System.out.println("switch中的变量 不是 a 是"+s);
  10.                         break;
  11.                 }
  12.         }
  13. }
复制代码

作者: 江峰渔火    时间: 2014-6-15 10:07
输出结果是:switch中的变量 不是 a 是 abc
作者: 906822773    时间: 2014-6-22 09:01
switch后面类型 char、 int、 long 、long long
作者: 钟翠翠    时间: 2014-7-15 14:10
happymouse 发表于 2014-5-27 00:12
补充下,也可以是byte和short类型的

在JDK1.7版本以后,String类型也可以
作者: 天涯无痕    时间: 2014-7-15 21:04
SWITCH 后面不是只能跟int char 和string类型吗?

作者: 双皮奶    时间: 2014-7-19 10:06
yinxjfly 发表于 2014-5-27 11:38
我说一下。switch语句在JDK1.5之前只支持四种数值的判断,记住:是数值,可不是区间哦,
这四种分别为,byt ...

赞一个:handshake
作者: NOTHANKYOU    时间: 2014-8-7 18:44
      赚金币
作者: GYSWL    时间: 2014-8-8 07:31
知识就是这样一点一点积累的
switch中可以接受什么数据类型:byte short int char --JDK1.4
switch中可以接受什么数据类型:byte short int char 枚举 --JDK1.5
switch中可以接受什么数据类型:byte short int char 枚举 String --JDK1.7
作者: 静水流华    时间: 2014-8-31 18:17
happymouse 发表于 2014-5-27 00:12
补充下,也可以是byte和short类型的

真的吗?

作者: happymouse    时间: 2014-9-1 20:46
静水流华 发表于 2014-8-31 18:17
真的吗?

嗯,嗯,是的
作者: 段sir!    时间: 2014-9-14 23:17
switch ()里只能是byte,short,int ,char 和枚举型以及String中的一种,不能float型,而且case的常量表达式要和switch后面的表达式类型一致!!
作者: rosalindxiao    时间: 2014-12-10 09:58
没壳的蜗牛 发表于 2014-5-27 23:39
switch中可以接受什么数据类型:byte short int char --JDK1.4
switch中可以接受什么数据类型:byte short  ...

学习了 很好
作者: pj1988    时间: 2015-1-5 23:25
顶一个。。。。。。。。。。。。
作者: 王者之风西昆仑    时间: 2015-1-6 11:46
woshihq 发表于 2014-5-25 15:32
switch ()里只能是int ,char 和枚举型中的一种,不能float型,而且case的常量表达式要和switch后面的表 ...

原来是这样啊,高人
作者: wenyu    时间: 2015-2-12 14:55
表达式的类型只能是  byte short char int
jdk1.7后支持字符串
作者: 黑马小夏    时间: 2015-3-12 00:18
已经学习,感学楼主
作者: kapp_tolo    时间: 2015-3-24 16:07
额,表示全忘了,难道是没记笔记的结果 ,,呜呜。。
作者: 陈胜华    时间: 2015-4-6 00:24
yinxjfly 发表于 2014-5-27 11:38
我说一下。switch语句在JDK1.5之前只支持四种数值的判断,记住:是数值,可不是区间哦,
这四种分别为,byt ...

非常全面不错。。。
作者: jipeng    时间: 2015-4-11 21:59
加油   fighting
作者: 严晗哲    时间: 2015-4-26 13:33
switch只能接收int short byte char四种类型
作者: wnk77521    时间: 2015-4-28 15:06
肯定错的啊 当你在+运算的时候自动提升到double型了 再说 也得看你的jdk的版本吧  1.7以后才能支持string型的呢 double型的 那个版本都没有支持的
作者: wx_iAuO26mH    时间: 2015-6-5 10:39
看楼上的 很明白
作者: zhaoyue    时间: 2015-7-15 00:09
刚学过。表示很清楚 楼上说的很对
作者: 张红(新)    时间: 2015-7-30 14:50
尘埃落定 发表于 2014-5-27 22:58
你的提问不是很清楚,但是我可以分享下它的用法
switch (表达式){ case 值1 : 语句1 break; case 值2 : 语 ...

明白      
作者: LuJin1112    时间: 2015-8-29 20:29
原来是这样啊。谢谢了
作者: docwei    时间: 2016-2-25 23:34
学习了呵呵呵呵
作者: innovator    时间: 2016-5-17 22:59
学习到了,之前还真的不太清楚Switch不支持float呢...编程是思想的体现,细节很重要
作者: wstm198907    时间: 2016-6-27 07:11
有收获!!
作者: 亮仔开发    时间: 2017-3-3 17:45
不懂你什么意思




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2