if语句的语法结构以及运行原理?

  1. if语句是分支语句,也可以叫做条件语句。<br /> if语句的语法格式:

第一种写法:

  1. if(布尔表达式){<br /> java语句;<br /> java语句;<br /> }<br /> 这里的一个大括号{} 叫做一个分支。<br /> if 这个单词翻译为如果,所以又叫做条件语句。<br /> 该语法的执行原理是:<br /> 如果布尔表达式的结果是true,则执行大括号中的程序,否则大括号中的代码不执行。<br />

第二种写法:

  1. if(布尔表达式){ // 分支1<br /> java语句;<br /> }else{ // 分支2<br /> java语句;<br /> }<br /> 执行原理:如果布尔表达式的结果是true,则执行分支1,分支2不执行。<br /> 如果布尔表达式的结果是false,分支1不执行,执行分支2。<br /> 以上的这个语句可以保证一定会有一个分支执行。<br /> else表示其他。<br />

第三种写法:

  1. if(布尔表达式1){ // 分支1<br /> java语句;<br /> }else if(布尔表达式2){ // 分支2<br /> java语句;<br /> }else if(布尔表达式3){<br /> java语句;<br /> }else if(布尔表达式4){<br /> java语句;<br /> }...<br /> 以上if语句执行原理?<br /> 先判断“布尔表达式1”,如果“布尔表达式1”为true,则执行分支1,然后if语句结束了。<br /> 当“布尔表达式1”结果是false,那么会继续判断布尔表达式2的结果,如果布尔表达式2的结果是true,则执行分支2,然后整个if就结束了。<br /> <br /> 从上往下依次判断,主要看第一个true发生在哪个分支上。<br /> 第一个true对应的分支执行,只要一个分支执行,整个if结束。<br />

第四种写法:

  1. if(布尔表达式1){ // 分支1<br /> java语句;<br /> }else if(布尔表达式2){ // 分支2<br /> java语句;<br /> }else if(布尔表达式3){<br /> java语句;<br /> }else if(布尔表达式4){<br /> java语句;<br /> }else{<br /> java语句; // 以上条件没有一个成立的。这个else就执行了。<br /> }<br />

注意:

1、对于if语句来说,在任何情况下只能有1个分支执行,不可能存在2个或者多个分支执行。

  1. if语句中只要有1个分支执行了,整个if语句就结束了。(对于1个完整的if语句来说的。)<br />

2、以上4中语法机制中,凡是带有else分支的,一定可以保证会有一个分支执行。

  1. 以上4种当中,第一种和第三种没有else分支,这样的语句可能会导致最后一个分支都不执行。<br /> 第二种和第四种肯定会有1个分支执行。<br />

3、当分支当中“java语句;”只有1条,那么大括号{}可以省略,但为了可读性,最好不要省略。(有的程序员在编写代码的时候,可能会故意将大括号{}省略,你能看懂就行。)

4、控制语句和控制语句之间是可以嵌套的,但是嵌套的时候大家最好一个语句一个语句进行分析,不要冗杂在一起分析。

  1. public class IfTest{
  2. public static void main(String[] arge){
  3. // 定义一个布尔类型的变量,表示性别。
  4. //boolean sex = true;
  5. boolean sex = false;
  6. //业务:当sex为true时表示男,为false时表示女。
  7. /*
  8. if(sex == true){
  9. System.out.println("男");
  10. }else{
  11. System.out.println("女");
  12. }
  13. */
  14. // 改良。
  15. if(sex){
  16. System.out.println("男");
  17. }else{
  18. System.out.println("女");
  19. }
  20. // 可以再进一步改良
  21. // 可以使用三目运算符
  22. System.out.println(sex ? "男" : "女");
  23. // 代码可以这样写吗?
  24. // ()小括号当中最终取的值是sex变量的值。
  25. // 而sex是布尔类型,所以这个可以通过。
  26. if(sex = true){ // 以前sex不管是true还是false,走到这一行sex一定是true。
  27. System.out.println("男");
  28. }else{
  29. // 虽然这种语法可以,但是会导致else分支不能执行。
  30. System.out.println("女");
  31. }
  32. int i = 100;
  33. if(i == 100){
  34. System.out.println("i是100");
  35. }
  36. /*
  37. //错误:不兼容的类型:int无法转换为boolean
  38. if(i = 100){
  39. System.out.println("i是100");
  40. }
  41. */
  42. // 当分支中只有一条java语句的话,大括号可以省略。
  43. if(sex)
  44. System.out.println("男");
  45. else
  46. System.out.println("女");
  47. // 判断一下程序会出现问题吗?会出现什么问题?第几行代码报错?
  48. if(sex)
  49. System.out.println("男");
  50. System.out.ptintln("HelloWorid!"); // 以上的这3行代码没有问题,合乎语法。
  51. else // 这一行编译报错,因为else缺少if
  52. System.out.println("女");
  53. }
  54. }