空else语句的两种写法
写法1:
if // 略
else
{
// do nothing
}
写法2:
if // 略
else
{
;// do nothing
}
两种执行方式没有区别,效果一样的!都不会执行什么!
都可以。
;表示空语句
因为{}中可以插入0~任意多条语句,空语句也算一条语句。
所以以下几种写法都是合法的
else{
} // 0条语句
else{
; //1条空语句
}
else{
xxxx; //随便一条语句
}
else{//多跳语句
;
;
;
}
因此,;可以有,但是是多余的。如果没有大括号,则不能省,比如
注意,没有写else,那else语句应该是else{},没有“;”
例如:下面两段代码是等效的
code1
if(root1.val==root2.val){
return isSubTree(root1.left, root2.left) && isSubTree(root1.right, root2.right);
}else{ }//可以不写
return false ;
}
code2
private boolean isSubTree(TreeNode root1, TreeNode root2) {
if(root1.val==root2.val){
return isSubTree(root1.left, root2.left) && isSubTree(root1.right, root2.right);
}
return false ;
}
注意:千万不要认为code2 的return false;是else语句的一部分,
当else语句的内容为空时候可以省略else{},不为空一定不能省略else{}
但是要注意return的位置,需要返回值的时候,if {return ..... } , 如果不在外部返回,则需要写else { return ...... }
例如:下面代码会提示:Missing return statement
原因是写了if后,会生成一个else空语句,此时没有return 语句,会报错。
public class Solution_1 {
public int JumpFloorII(int target) {
if (target <= 0)
return -1;
if (target == 1) {
return 1;
}
if(target>1) {
return 2 * JumpFloorII(target - 1);
}
}
}
加上else{ return }语句后,就不会报错了。或者前面写成if else if else 的形式。
public class Solution_1 {
public int JumpFloorII(int target) {
if (target <= 0)
return -1;
if (target == 1) {
return 1;
}
if(target>1) {
return 2 * JumpFloorII(target - 1);
}
}else{ return -1;}
}