switch不能用布尔类型,本人刚刚自学Java,我写的代码如下,求高手指点。

publicclassUpAndLower{publicstaticvoidmain(String[]args){Stringstr="Wearestudents";St... public class UpAndLower {

public static void main(String[] args) {
String str="We are students";
String str1=str.substring(0,3);
String str2=str.substring(4,8);
boolean b=(str1.equalsIgnoreCase(str2));
switch(b){
case true:
System.out.println("两子串相同");
break;
case false:
System.out.println("两子串并不相同");
break;
default:
System.out.println("对不起,我不知道");
}

}

}
展开
 我来答
青鸟中关村专家
2015-07-15 · 知道合伙人软件行家
青鸟中关村专家
知道合伙人软件行家
采纳数:1734 获赞数:8440
就职于北大青鸟中关村,自2004年踏入北大青鸟这个行业,已经有11年工作经验和8年的培训经验,寓教于乐

向TA提问 私信TA
展开全部
switch后面的括号里面只能放int类型的值,注意是只能放int类型,但是放byte,short,char类型的也可以,是因为byte,short,shar可以自动提升(自动类型转换)为int,不是说就可以放它们,说白了,你放的byte,short,shar类型,然后他们会自动转换为int类型(宽化,自动转换并且安全),其实最后放的还是int类型!
原理:Java中8种基本数据类型,boolean类型不参与转换,任何类型不能转换为boolean型,boolean也不能转换为其他类型,所以剩下7种,按照他们的表数范围,(也就是能表示的最大的数的大小,比如char是0到65535,byte是-128到正127)从小到大,排序,依次为:byte、short、char、int、long、float、double
追问
谢谢了,那我应该用if  else就可以了吗,为什么我用了if之后用else老是编译不过去?
llei32wang
2015-07-15 · TA获得超过2736个赞
知道大有可为答主
回答量:1478
采纳率:60%
帮助的人:1408万
展开全部
boolean型的话直接用if 还用switch干什么
而且switch只支持 可以强制转成int型的 比如 byte char short int 还有String enum以外其他类型都不能作为switch的条件
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式