世界上几乎任何事物的处理流程都可以拆分成三种基本结构:顺序结构、选择结构、循环结构。
Java中的基本语法结构也是这三种。
顺序结构
Java中的顺序结构即可以理解为,程序都是自上而下,依次执行的。
例如:
public class sequence_learning1 {
public static void main(String[] args) {
System.out.println("敢");//1
System.out.println("杀");//2
System.out.println("我");//3
System.out.println("的");//4
System.out.println("马");//5
System.out.println("!");//6
}
}
最终结果一定是按着123456自上而下的顺序输出的。如下:
只要不出什么bug,或者写入别的语句结构,程序都是按照自上而下,逐句执行的。
所以这个结果就不可能是:
马
敢
杀
我
的
!
也不可能是:
马
的
!
敢
杀
我
选择结构
if 选择结构
if选择结构有三种:单选择、双选择、多选择。
if单选择结构
语法格式为:
if(判断有条件)
{
条件成立后需要执行的语句
}
如:
public class sequence_learning1 {
public static void main(String[] args) {
int a=60;
if (a==60)
{
System.out.println("老六");
}
}
}
由于a==60成立,所以最终将会执行if下面的语句 System.out.println(“老六”);
则结果为:
如果将上述代码修改,让判断条件不成立,则:
public class sequence_learning1 {
public static void main(String[] args) {
int a=59;
if (a==60)
{
System.out.println("老六");
}
}
}
将a=60改为a=59则a==60的条件就不成立了。结果为:
由于条件不成立,所以 System.out.println(“老六”); 就不会执行了。
if双选择结构
if双选择结构就是if else语句。
其语法格式为:
if(判断条件)
{
条件成立执行的语句
}
else
{
条件不成立执行的语句
}
如:
public class sequence_learning1 {
public static void main(String[] args) {
int a=60;
if (a==60)
{
System.out.println("老六");
}
else{
System.out.println("老B登");
}
}
}
这个是条件成立的情况,最终一定会执行 System.out.println(“老六”); 这句代码。
当条件不成立时,就会执行else后的那段代码:
如:
public class sequence_learning1 {
public static void main(String[] args) {
int a=59;
if (a==60)
{
System.out.println("老六");
}
else{
System.out.println("老B登");
}
}
}
由于a=59,所以a=60这个条件不成立,所以 System.out.println(“老六”); 就不会执行。
转而执行 else 所对应的代码段。即 执行 System.out.println(“老B登”); 这段代码。
最终输出结果为:
if多选择结构
if多选择结构就是 if … else if…else if…else if…else 语句。
其语法格式为:
if(判断条件1)
{
判断条件1成立后执行的语句
}
else if(判断条件2)
{
判断条件2成立后执行的语句
}
else if(判断条件3)
{
判断条件3成立后执行的语句
}
…
else if(判断条件n)
{
判断条件n成立后执行的语句
}
else
{
判断条件1~n都不成立后执行的语句
}
如:
public class sequence_learning1 {
public static void main(String[] args) {
int a=56;
if (a==60)
{
System.out.println("老六");
}
else if(a==59){
System.out.println("老B登");
}
else if(a==58){
System.out.println("MAGA");
}
else if(a==57){
System.out.println("777");
}
else{
System.out.println("金坷垃!");
}
}
}
这段代码最终无疑会输出 金坷垃!
因为赋给a的值为56,不在上述任何判断条件中,即上述判断条件都不成立,所以只会执行else后的语句。
其实最终可以不用else结尾,也可以用else if结尾,程序依然可以运行。只不过else if后面必须写一句 判断条件
如:
public class sequence_learning1 {
public static void main(String[] args) {
int a=56;
if (a==60)
{
System.out.println("老六");
}
else if(a==59){
System.out.println("老B登");
}
else if(a==58){
System.out.println("MAGA");
}
else if(a==57){
System.out.println("777");
}
else if(a<57||a>60){
System.out.println("金坷垃!");
}
}
}
最终依然会输出 金坷垃!
a<57||a>60的意思是:a小于57或者a大于60
上述a的值为56刚好满足a<57的条件,所以就会执行 System.out.println(“金坷垃!”); 这段代码。
通过比较可以发现,用else结尾和用else if结尾都可以正确输出结果。但是用else结尾,就不需要再描述判断条件了。
而else if结尾,一定需要把其他条件均不成立下,最终的一个条件描述出来。如本例描述的最终条件就是a<57||a>60
所以如果遇见不好描述的条件,那么else if就不好发挥其作用了。
所以,还是推荐用else作为结尾。
但是用else,也需要满足下列条件:
- if语句最多只有1个else语句。else语句在所有else if 语句之后。
- if语句可以有n个else if 语句,它们必须在else 语句之前。
- 一旦n个else if 语句中有一个的判断条件成立,即为true,那么其他(n-1)个else if 以及else语句都将跳过,而不执行。只会执行那个判断条件成立的语句所对应的代码段。
其实如果用else if结尾,那么他的唯一一个好处就是如下:
public class sequence_learning1 {
public static void main(String[] args) {
int a=56;
if (a==60)
{
System.out.println("老六");
}
else if(a==59){
System.out.println("老B登");
}
else if(a<57||a>60){
System.out.println("金坷垃!");
}
else if(a==58){
System.out.println("MAGA");
}
else if(a==57){
System.out.println("777");
}
}
}
我将之前作为结尾的那段else if语句放在了中间,依然不影响代码的结果。
最终还是会输出 金坷垃!
所以else if的唯一“好处”就是任意一个所有的else if 语句都可在if 语句后,任意排序。
所以,就是没有位置的要求。
但是这是否是一个好处,我并不下定论。
我也不建议这样做。
因为代码本就是有逻辑,有顺序的。
条理清晰的代码,更方便我们理解,阅读!所以我依然推荐用else进行结尾。
如果你一定要用else if结尾,想把最终条件清楚的描述出来,我也建议一定不要将else if语句任意排序,而是一定要按照正常的逻辑顺序,依次排列。
让我们的代码,读起来更方便!