程序构造没什么好讲的,就是从上到下的写代码,所以接下来,壹哥就间接带各位来学习分支构造里的条件分支。咱们在后面说过,分支构造,或者叫做条件分支,其实有两种状况。一种是if...else...类型的条件分支,一种是switch...case...类型的条件分支,明天咱们先来学习if和else的应用。
1、if根本语法
在Java代码中,如果咱们要依据某个条件来决定是否执行一段代码,就能够思考应用if语句。if语句的根本语法是:
<code class="language-plaintext hljs">if(条件表达式){ //满足条件时要执行的语句 } </code>
在下面的语法中,会依据if(条件表达式)里的计算结果(true或者false),由JVM决定是否执行{}里的代码块。如果为true,就执行,否则就不执行。
2、if的单分支语句
首先咱们通过一个简略的需要,来学习if的单分支语句。所谓的单分支语句,就是说只有一种判断状况,条件为真就执行,否则就不执行。比方这个需要:“如果你年满18岁,就能够攒劲的节目”。
<code class="language-plaintext hljs">publicclassDemo01 { publicstaticvoidmain(String[] args) { // if语句 //案例1:如果年龄大于等于18岁,就可以看攒劲的节目了 System.out.println("请输出你的年龄"); //获取Scanner对象 Scanner sc=new Scanner(System.in); //获取年龄 int age = sc.nextInt(); //如果语句块{}外面只有一条执行语句,{}能够省略,但倡议保留。 if(age >= 18){ System.out.println("本节目只对成年人凋谢,未成年人请在父母陪同下观看,节目正在缓冲......"); } //案例2:如果身高大于180,且体重小于180,就能够当模特 System.out.println("请输出你的身高"); int height = sc.nextInt(); System.out.println("请输出你的体重"); int weight = sc.nextInt(); //条件表达式中,能够联合之前学习过的逻辑运算符//采纳短路与&&,提高效率 if(height > 180 && weight < 180){ System.out.println("祝贺你,能够当模特了"); } }}</code>
另外如果{}语句块外面只有一条执行语句,{}能够省略,但倡议保留。因为如果咱们采纳缩进的格局,很容易把前面的语句都看成是if语句的执行块,所以不举荐疏忽花括号的写法。
单分支语句应答的状况是很简略的,在理论开发中可能会很简单,这就须要应用多分支语句来进行解决。
3、if的多分支语句
3.1 if...else构造
if...else...构造会依据条件表达式的后果进行判断,当表达式的后果为true,则执行语句块A;否则执行else前面的语句块B。根本语法结构如下:
<code class="language-plaintext hljs">if(逻辑条件){ //满足逻辑条件执行的代码 }else{ //不满足逻辑条件执行的代码 }</code>
案例如下:
<code class="language-plaintext hljs">publicclassDemo01 { publicstaticvoidmain(String[] args) { // if多分支语句 Scanner sc=new Scanner(System.in); //案例:如果用户名为admin、明码为123456,就跳转到首页,否则跳转到登录页面 System.out.println("请输出用户名"); String username = sc.next(); System.out.println("请输出明码"); String password = sc.next(); //equals()比拟办法 if("admin".equals(username) && "123456".equals(password)){ System.out.println("跳转首页"); }else{ System.out.println("跳转登录页面"); } }}</code>
咱们要留神,在java中,"=="比拟的是两个对象的内存地址是否雷同,String类中的equals()办法比拟的是内容是否雷同。如果是根本数据类型,咱们能够应用==进行比拟;而对于String字符串,个别是应用equals()办法进行比拟。
另外咱们在应用equals()办法进行比拟时,要采纳相似"admin".equals(username)的写法,而不要采纳username.equals("admin")的写法。因为username对象的值有可能为null,这样就可能会产生NullPointerException异样。
3.2 if多分支
if多分支就是能够利用多个if ... else if ...else...进行串联。多分支能够依据多个条件表达式的后果进行判断:
● 如果条件表达式1的后果为true,则执行语句块1;否则去判断条件表达式2;
● 如果条件表达式2的后果为true,则执行语句块2,否则去判断条件表达式3;
● ....
● 如果所有的条件表达式后果都为false,则执行语句块N+1;
● else是可选的,依据须要能够省略。
if多分支的语法结构如下:
<code class="language-plaintext hljs">if(逻辑条件1){ //满足逻辑条件1执行的代码 }else if(逻辑条件2){ //暗藏条件(不满足条件1) 满足逻辑条件2执行的代码 }else if(逻辑条件3){ //暗藏条件(不满足条件1、2) 满足逻辑条件3执行的代码 }else{ //不满足以上所有逻辑条件执行的代码 }</code>
需要案例:请你依据手上的资金抉择购买的手机品牌。如果你手里的钱大于10000,就买个苹果;如果大于7000, 就买个华为;如果大于5000,就买个小米;如果大于3000,就买个诺基亚;否则,乖乖地去打公共电话。
<code class="language-plaintext hljs">publicclassDemo01 { publicstaticvoidmain(String[] args) { // if多分支语句 Scanner sc=new Scanner(System.in); //请你依据手上的资金抉择购买的手机品牌。如果你手里的钱大于10000,就买个苹果; //如果大于7000, 就买个华为;如果大于5000,就买个小米;如果大于3000,就买个诺基亚; //否则,乖乖地去打公共电话。 System.out.println("请输出余额"); int money = sc.nextInt(); if(money > 10000){ System.out.println("苹果手机"); }elseif(money > 7000){ //money <= 10000 System.out.println("华为手机"); }elseif(money > 5000){ System.out.println("小米手机"); }elseif(money > 3000){ System.out.println("诺基亚手机"); }else{ System.out.println("打公共电话"); } }}</code>
大家要留神,咱们在串联应用多个if时,要特地留神判断程序和边界条件的判断。
- if嵌套
if嵌套的语法结构如下:
<code class="language-plaintext hljs">if(逻辑条件1){ if(逻辑条件2){ //满足逻辑条件1且满足条件2执行的代码 }else{ //满足逻辑条件1但不满足条件2执行的代码 } }else{ //不满足逻辑条件1执行的代码 }</code>
需要案例:学校举办跑步较量,如果问题在15秒以内,能够进入决赛,男的进入男子组决赛,女的进入女子组决赛。
<code class="language-plaintext hljs">publicclassDemo01 { publicstaticvoidmain(String[] args) { // if多条件嵌套 Scanner sc=new Scanner(System.in); //学校举办跑步较量,如果问题在15秒以内,能够进入决赛,男的进入男子组决赛,女的进入女子组决赛 System.out.println("请输出你的较量问题"); double score = sc.nextDouble(); if(score < 15){ System.out.println("请输出你的性别"); String sex = sc.next(); if("男".equals(sex)){ System.out.println("祝贺进入男子组"); }else{ System.out.println("祝贺进入女子组"); } }else{ System.out.println("很遗憾你被淘汰了!!!"); } }}</code>