问题阐述
创新互联"三网合一"的企业建站思路。企业可建设拥有电脑版、微信版、手机版的企业网站。实现跨屏营销,产品发布一步更新,电脑网络+移动网络一网打尽,满足企业的营销需求!创新互联具备承接各种类型的做网站、成都网站设计项目的能力。经过十余年的努力的开拓,为不同行业的企事业单位提供了优质的服务,并获得了客户的一致好评。
通常情况下,switch语句比一系列嵌套的if语句更有效,那么是否可以用switch分支语句代替if条件语句呢?
昆明北大青鸟java培训专家解答
在实际编程过程中,并不是所有的if条件语句都可以用switch分支语句代替。由于switch语句的表达式只能测试byte、short、int或char类型的相等情况,而if语句可以计算任何类型的布尔表达式,所以对于判断非相等情况时,就不能用switch语句代替if语句。
例如,下面的用于比较两个变量大小的if语句,就不能使用switch语句代替。
inta=36;//声明int型变量a,并赋初值intb=77;//声明int型变量b,并赋初值if(ab){//判断a是否大于bSystem.out.println("变量a大于变量b");//如果条件成立,输出的信息}else{System.out.println("变量a小于变量b");//如果条件不成立,输出的信息}专家点评
在可以使用switch语句代替if语句的情况下,也最好遵循下面的原则:如果条件在3重之内,最好使用if条件语句,如果超过了3重,则最好使用switch分支语句。
那要看他们的条件了,如果条件的规律的话,if(){}else{}用switch代替,for()用递归代替
function getcasenum{
var num1 = document.fm.min.value;
var num2 = document.fm.max.value;
var msg_1 = check(num1);
var msg_2 = check(num2);
num1 = parseInt(num1);
num2 = parseInt(num2);
if (msg_1 != "" msg_2 != ""){
return 1;
}lse if (msg_1 != "" msg_2 == ""){
return 2;
}else if (msg_1 == "" msg_2 != ""){
return 3;
}else if (num1 num2){
return 4;
}else{
return 5;
}
function display(var casenum){
switch casenum{
case 1:alert(aaa);break;
case 2:alert(bbb);break;
case 3:alert(ccc);break;
case 4:alert(eee);break;
default:
document.getElementById("put").innerHTML=Loop(num1,num2);
}
}
如果有大量同样的逻辑分支判断组,只是执行内容不一样,那么经典方法是用多态,建一个抽象基类,里面包含一个抽象函数。每个子类代表一个逻辑分支,实现抽象函数时,函数逻辑对应之前的if分支的内容。但是一定会保留一组if,提供在什么情况下返回什么子类的信息。这样做的好处是可以把多个if合并成一个。
如果没有大量同样的逻辑分支判断组的话,没必要调整,直接这么写就好。