If statement 两个单独的if子句或一个单独的if-else子句
愚蠢的问题,使用两个单独的if子句还是一个单独的if with if else子句是一种好的做法,例如:If statement 两个单独的if子句或一个单独的if-else子句,if-statement,If Statement,愚蠢的问题,使用两个单独的if子句还是一个单独的if with if else子句是一种好的做法,例如: if (a = 1) (dosomething) if (a=2) (do other thing) 或 如果条件不同时为真,则这两种情况都会发生。变量a用作比较器,根本不改变 这两种方法按预期工作,在编程上没有问题,我只是想问什么是好的实践和推荐方法?取决于您想要实现的目标 在第一种情况下,两个条件都将被评估为独立的-即使两个条件都为真 在第二种情况下,如果第一个条件的计算结果为true
if (a = 1)
(dosomething)
if (a=2)
(do other thing)
或
如果条件不同时为真,则这两种情况都会发生。变量a用作比较器,根本不改变
这两种方法按预期工作,在编程上没有问题,我只是想问什么是好的实践和推荐方法?取决于您想要实现的目标 在第一种情况下,两个条件都将被评估为独立的-即使两个条件都为真 在第二种情况下,如果第一个条件的计算结果为true,则将跳过else-if分支
你可以在上看到完整的解释。这取决于你的意思。如果希望仅在第一个条件不为真时测试第二个条件,请使用
If(…)或else If(…)
选项。相反,如果希望两个条件都单独检查,请使用if(…)if(…)
一个人不能在两件事情之间谈论最佳实践,这两件事情的含义是不同的。只需在每种情况下写下您设计的算法告诉您要写的内容,即在代码中忠实地表达您的设计。如果使用第一种方法,则会检查每个If语句。在第二种情况下,如果一种情况正确,则忽略以下所有其他情况 所以,如果有一个复杂的if条件,在方法1中可能需要更长的时间
通过检查这些值(a==1,a==2,a==3,…),尝试切换 如果条件相互排斥(同一时间只能有一个),则第二种方法。否则,如果两种情况可以同时发生,第一种方法是正确的。这两种测试明显不同。在第一种情况下,如果首先
a
为1,并且do something
将a
的值更改为2,则也将执行do other thing
。第二种变体并非如此。因此,使用哪一种取决于您想要实现什么。我会使用更易于阅读的样式。清晰总是比难以理解的代码好
执行速度在这里不是什么大问题。至少在Java字节码中,有三种不同的情况: 否则
if(a==3)//从局部变量a加载int,将int值3加载到堆栈中
//如果它们不相等,则转到(分支)线a=4;
a=5;//将int值5加载到堆栈中,并将其保存到变量中
else//没有关于这行的说明,因为它的行为是
//如第if行所述(a==3)
a=4;//将int值4加载到堆栈中,并将其保存到变量中
否则如果
if(a==3)//从局部变量a加载int,将int值3加载到
//堆栈,如果它们不相等,则在(a!=3)下转到(分支)行
a=5;//将int值5加载到堆栈中,并将其保存到变量中
//在a=4后转到第行;
否则,如果(a!=3)//从局部变量a加载int,则将int值3加载到
//堆栈,如果它们相等,则在a=4后转到(分支)线;
a=4;//将int值4加载到堆栈中,并将其保存到变量中
如果
if(a==3)//从局部变量a加载int,将int值3加载到堆栈中
//如果它们不相等,则在(a!=3)下转到(分支)线
a=5;//将int值5加载到堆栈中,并将其保存到变量中
如果(a!=3)//从局部变量a加载int,则将int值3加载到堆栈中
//如果它们相等,则在a=4后转到(分支)线;
a=4;//将int值4加载到堆栈中,并将其保存到变量中
示例代码
inta=5;
int-ifelse()
{
如果(a==5)a=3;//为true,则转到return
否则a=6;
返回a;//返回3
}
int-ifelseif()
{
如果(a==2)a=3;//false,则转到下一行
否则,如果(a==3)a=6;//false,则转到下一行
如果(a==5)a=9;//则返回true
return a;//返回9(顺便说一句,您可以使用这个开关)
}
int-ifif()
{
如果(a==5)a=3;//为true,则转到下一行
如果(a==3)a=6;//为true,则转到return
返回a;//返回6
}
长话短说
- 如果不是,比较一次,就会发生一件事
- If-else-If–根据结果进行一次或两次比较,不发生任何事情或只发生一件事,用于嵌套If子句
- 如果——比较两次,什么也没有,一两件事发生了
if (a=1)
(do something)
else if (a=2)
(do other thing)