前言

在上一篇文章中,壹哥给大家讲解了Java里的输入与输出语句,现在你知道怎么用了吗?接下来我们继续往下学习Java里的流程控制语句,今天先给大家讲一下if和else这一对好基友,这个知识点可以说是每个Java程序员都必会的内容哦。

------------------------------前戏已做完,精彩即开始----------------------------

全文大约【3400】字,不说废话,只讲可以让你学到技术、明白原理的纯干货!本文带有丰富案例及配图,让你更好地理解和运用文中的技术概念,并可以给你带来具有足够启迪的思考......

一. 流程控制

1. 简介

在Java项目中,大多数的代码都是编写在一个个的类里面。每个类中还有很多个语句,并且会以英文的分号;来表示语句的结束。有些小白会很好奇,这一行行的代码语句是按照什么顺序执行的呢?是按照我们看到的从上到下的顺序执行的吗?

其实在实际的代码中,程序经常需要进行各种条件判断、循环控制等操作,并不是简单的从上到下机械执行。因此,我们的项目中就需要有多种流程控制语句,来实现程序的分支跳转和循环等功能。

我们这里所谓的流程控制语句,就是用来控制程序中各语句执行顺序的语句,它可以把多个语句组合成能够完成一定功能的逻辑模块。

那么在Java中,又有哪些具体的流程控制语句呢?请往下看!

2. 分类

Java中的流程控制语句,根据结构化程序设计的规范,整体上可以分为3大类:

顺序结构

分支结构

循环结构

接下来壹哥先简单给大家介绍一下这几种类型都是啥子意思。

3. 顺序结构

顺序结构可以说是项目中最简单、最基本的流程控制语句了。它也没有特定的语法结构,就是按照代码默认的先后顺序依次执行,程序中大多数的代码语句都是顺序执行的。简单地说,顺序结构就是程序里的语句按照从上到下的顺序依次执行,如下图所示:

咱们前面学过的很多个案例,都是最简单的顺序结构语句,例如:

public class Demo01 {

	public static void main(String[] args) {
//输出语句
//不换行输出
System.out.print("Hello");
System.out.print(" World"); //换行输出
System.out.println("你好");
System.out.println("一一哥"); //标准的错误输出,控制台会用红色文字显示
System.err.append("标准的错误输出,哈哈哈");
} }

4. 分支结构

所谓的分支结构,就是根据一定的条件,有选择性地去执行某段代码。在Java中,分支结构分为if…else...和switch-case两种条件分支语句,其中的if...else...语句就是我们今天要学习的重点,后面壹哥会详细讲解。

5. 循环结构

循环结构是在满足某些条件的情况下,反复执行特定的代码。在Java中,循环结构包括while、do…while、for、foreach等4种循环语句,壹哥会在后续的文章中进行细讲。

二. 条件分支

顺序结构没什么好讲的,就是从上到下的写代码,所以接下来,壹哥就直接带各位来学习分支结构里的条件分支。我们在前面说过,分支结构,或者叫做条件分支,其实有两种情况。一种是if...else...类型的条件分支,一种是switch...case...类型的条件分支,今天我们先来学习if和else的使用。

1. if基本语法

在Java代码中,如果我们要根据某个条件来决定是否执行一段代码,就可以考虑使用if语句。if语句的基本语法是:

if(条件表达式){
//满足条件时要执行的语句
}

在上面的语法中,会根据if(条件表达式)里的计算结果(true或者false),由JVM决定是否执行{}里的代码块。如果为true,就执行,否则就不执行。

2. if的单分支语句

首先我们通过一个简单的需求,来学习if的单分支语句。所谓的单分支语句,就是说只有一种判断情况,条件为真就执行,否则就不执行。比如这个需求:“如果你年满18岁,就可以攒劲的节目”。

public class Demo01 {

	public static void main(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("恭喜你,可以当模特了");
}
} }

另外如果{}语句块里面只有一条执行语句,{}可以省略,但建议保留。因为如果我们采用缩进的格式,很容易把后面的语句都看成是if语句的执行块,所以不推荐忽略花括号的写法。

单分支语句应对的情况是很简单的,在实际开发中可能会很复杂,这就需要使用多分支语句来进行处理。

3. if的多分支语句

3.1 if...else结构

if...else...结构会根据条件表达式的结果进行判断,当表达式的结果为true,则执行语句块A;否则执行else后面的语句块B。基本语法结构如下:

 if(逻辑条件){
//满足逻辑条件执行的代码
}else{
//不满足逻辑条件执行的代码
}

案例如下:

public class Demo01 {

	public static void main(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("跳转登录页面");
}
} }

我们要注意,在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多分支的语法结构如下:

if(逻辑条件1){
//满足逻辑条件1执行的代码
}else if(逻辑条件2){
//隐藏条件(不满足条件1) 满足逻辑条件2执行的代码
}else if(逻辑条件3){
//隐藏条件(不满足条件1、2) 满足逻辑条件3执行的代码
}else{
//不满足以上所有逻辑条件执行的代码
}

需求案例:请你根据手上的资金选择购买的手机品牌。如果你手里的钱大于10000,就买个苹果;如果大于7000, 就买个华为;如果大于5000,就买个小米;如果大于3000,就买个诺基亚;否则,乖乖地去打公共电话。

public class Demo01 {

	public static void main(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("苹果手机");
}else if(money > 7000){ //money <= 10000
System.out.println("华为手机");
}else if(money > 5000){
System.out.println("小米手机");
}else if(money > 3000){
System.out.println("诺基亚手机");
}else{
System.out.println("打公共电话");
}
} }

大家要注意,我们在串联使用多个if时,要特别注意判断顺序和边界条件的判断。

4. if嵌套

if嵌套的语法结构如下:

if(逻辑条件1){
if(逻辑条件2){
//满足逻辑条件1且满足条件2执行的代码
}else{
//满足逻辑条件1但不满足条件2执行的代码
}
}else{
//不满足逻辑条件1执行的代码
}

需求案例:学校举行跑步比赛,如果成绩在15秒以内,可以进入决赛,男的进入男子组决赛,女的进入女子组决赛。

public class Demo01 {

	public static void main(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("很遗憾你被淘汰了!!!");
}
} }

------------------------------正片已结束,来根事后烟----------------------------

三. 结语

至此,壹哥就把流程控制里的第一个知识点讲解完毕了,现在你知道if和else的使用了吗?if你觉得壹哥的文章对你有帮助,else我就继续努力咯。

四. 今日作业

第一题

请用代码实现如下需求:如果你的余额大于100元,中午吃饭就加个鸡腿,否则就吃馒头榨菜。

第二题

从键盘输入一个整数,判断是否能被3或者被5整除。如果可以,则输出:"该数是3或5的倍数";否则就输出:"该数不能被3或5中的任何一个数整除"。

Java里if和else的用法的更多相关文章

  1. Java里this的作用和用法

    this, 一个官方的说法是,this首先是一个对象,它代表调用这个函数的对象. 根据面向对象的基本语法,每当调用变量或者函数的时候,都要按照类名.变量(函数)的格式来调用,意即每个变量或函数都必须属 ...

  2. 转:JAVA里面的int类型 和Integer类型,有什么不一样

    JAVA里面的int类型 和Integer类型,有什么不一样 原文链接:http://blog.csdn.net/wuxinliulei/article/details/11099565 java.l ...

  3. Java 里如何实现线程间通信(转载)

    出处:http://www.importnew.com/26850.html 正常情况下,每个子线程完成各自的任务就可以结束了.不过有的时候,我们希望多个线程协同工作来完成某个任务,这时就涉及到了线程 ...

  4. Java并发-volatile的原理及用法

    Java并发-volatile的原理及用法 volatile属性:可见性.保证有序性.不保证原子性.一.volatile可见性 在Java的内存中所有的变量都存在主内存中,每个线程有单独CPU缓存内存 ...

  5. Java 里如何实现线程间通信

    正常情况下,每个子线程完成各自的任务就可以结束了.不过有的时候,我们希望多个线程协同工作来完成某个任务,这时就涉及到了线程间通信了. 本文涉及到的知识点:thread.join(), object.w ...

  6. Java 里的异常(Exception)详解

    作为一位初学者, 本屌也没有能力对异常谈得很深入.   只不过Java里关于Exception的东西实在是很多. 所以这篇文章很长就是了.. 一, 什么是java里的异常   由于java是c\c++ ...

  7. java中静态代码块的用法 static用法详解和static静态导入

    (一)java 静态代码块 静态方法区别一般情况下,如果有些代码必须在项目启动的时候就执行的时候,需要使用静态代码块,这种代码是主动执行的;需要在项目启动的时候就初始化,在不创建对象的情况下,其他程序 ...

  8. Java中try,catch,finally的用法

    Java中try,catch,finally的用法,以前感觉还算熟悉,但看到一篇博文才有更深点的理解,总结网友博客如下. Java异常处理的组合方式: 1.try+catch  运行流程:运行到try ...

  9. ABAP和Java里的单例模式攻击

    面向对象编程世界里的单例模式(Singleton)可能是设计模式里最简单的一种,大多数开发人员都觉得可以很容易掌握它的用法.单例模式保证一个类仅有一个实例,并提供一个访问它的全局访问点. 然而在某些场 ...

  10. 【转】Java里如何实现线程间通信

    正常情况下,每个子线程完成各自的任务就可以结束了.不过有的时候,我们希望多个线程协同工作来完成某个任务,这时就涉及到了线程间通信了. 本文涉及到的知识点:thread.join(), object.w ...

随机推荐

  1. 从Sql Server转战Oracle 之 变量声明

    1 --两种声明方法:没有sql所谓的select或者select @para from table 以及 set 赋值,且赋值的时候需要在begin end事务内 2 一 直接声明 3 declar ...

  2. nchu第三次面向对象编程博客作业

    前言:   本次博客包含的内容有pta题目集6-8(电信计费)三次题目集.这次的难点主要是理解老师给的类图的内容,明白各部分的作用,以及如何使各类之间联系起来.只要能够理解老师给的类图结构之后就可以比 ...

  3. Linux 使用Apache服务部署静态网站

    网站服务程序 我们平时访问的网站服务就是Web网络服务,一般是指允许用户通过浏览器访问到互联网中各种资源的服务.如图所示,Web网络服务是一种被动访问的服务程序,即只有接收到互联网中其他主机发出的请求 ...

  4. Vue中的样式穿透,修改element-ui组件样式不生效

    在Vue项目中用的比较多的就是组件,为了实现组件的样式模块化.我们通常会在style标签中添加一个scoped属性,这样css样式只能作用于当前的Vue组件.使组件之间的样式相互独立,当调用该组件的时 ...

  5. 动手搭建ssm框架

    现在很多公司用的开源框架很多都是ssm框架的一个结构,这里我自己试着自己搭一个简单的框架,大家共同学习.下面一起跟着我搭建吧,本人菜鸟,有任何不对的地方有望指出. 框架结构:spring(4.3.9. ...

  6. 字符流---->字符过滤流 缓冲流 : -----> printWrite用法:和BufferedReader用法

    printWrite用法:1.创建字符节点流FileWriter fw = new FileWriter("Files\\bufchar.txt");2创建字符过滤流 PrintW ...

  7. 通过富文本编辑器操作HTML页面

    <pre id="list_css" class="brush:css;toolbar:false">/*外部css,多个换行*/ https:// ...

  8. NOIP2019 树的重心

    Description \[\sum_{(u,v)\in E}\Biggl(\sum_{x为S_u重心}x+\sum_{y为S_v重心}y\Biggr) \] \(1\leqslant n\leqsl ...

  9. IDEA创建Spring Boot项目无法连接http://start.spring.io 解决方法

    1.修改代理 2. 搭建自己的SpringBoot initializer构建服务器 https://blog.csdn.net/KingBoyWorld/article/details/773732 ...

  10. 【内存管理】ION内存管理器浅析(system heap)(基于linux 4.14)

    什么是ION ION具体不知道是什么的缩写,只知道是android系统上google引入的内存管理方式,为了实现用户与内核间数据共享时零拷贝.多用于多媒体,比如camera和display,graph ...