Java 逻辑控制详解分析

目录
  • 顺序结构
  • 分支结构
    • if 语句
    • 悬垂 else 问题
  • switch 语句
  • 循环结构
    • while 循环
    • break
    • continue
    • for循环
    • do while 循环

顺序结构

顺序结构就是按照代码从上往下执行,我们运行的程序就是从上往下的顺序结构,当遇到方法的时候,才去执行方法。例如:

System.out.println("aaa");
System.out.println("bbb");
System.out.println("ccc");

当改变代码顺序的时候,输出的结果也不一样。例如:

System.out.println("bbb");
System.out.println("ccc");
System.out.println("aaa");

分支结构

if 语句

if 语句的基本语法(单判断):

if(布尔表达式){
//条件满足时执行代码
}

if 语句的基本语法(加否定):

if(布尔表达式){
//条件满足时执行代码
}else{
//条件不满足时执行代码
}

if 语句的基本语法(多分支):

if(布尔表达式){
//条件满足时执行代码
}else if(布尔表达式){
//条件满足时执行代码
}else{
//条件都不满足时执行代码
}

if 语句当中可以写很多 else if ,但是 if 和 else 只能有一个。

代码实例 1:判断一个数是奇数还是偶数:

int num = 10;
if (num % 2 == 0) {
    System.out.println("num 是偶数");
} else {
    System.out.println("num 是奇数");
}

代码实例2:判定一个数是正数还是负数。

int num = 10;
if (num > 0) {
    System.out.println("num 是正数");
} else if (num < 0) {
    System.out.println("num 是负数");
} else {
    System.out.println("num 是 0");
}

代码实例3:判定一年是不是闰年。

因为闰年的规律是:如果这一年是 4 的倍数,且不是 100 的倍数,那么这一年就是闰年。或者这个数能整除 400 。

Scanner scanner = new Scanner(System.in);
int i = scanner.nextInt();
if ((i % 4 == 0 && i % 100 != 0) || (i % 400 == 0)) {
System.out.println(i + " 是闰年");
} else {
System.out.println(i + " 不是闰年");
}

这里是通过 Scanner 来输入一个数。

悬垂 else 问题

此代码输出什么?

int x = 10;
int y = 10;
if (x == 20)
 if (y == 10)
 System.out.println("aaa");
else
 System.out.println("bbb");

这里什么都不输出 ,因为这里就涉及到了悬垂 else 。else 只与最近的 if 相匹配,这里最近的 if 是 y==10 所以就什么都不输出了。

所以我们平时写代码,一定要加上括号,这样既方便别人阅读代码,也方便我们自己去修改。

switch 语句

基本语法:

switch(整数|枚举|字符|字符串){
case 内容1 : {
内容满足时执行语句;
[break;]
}
case 内容2 : {
内容满足时执行语句;
[break;]
}
...
default:{
内容都不满足时执行语句;
[break;]
}
}

switch 语句是我们常见的多分支语句,可根据 switch 括号内的变量对应的值去执行相应的 case 语句。而且每个 case 语句下面都要有 break 否则会继续执行下面的 case 语句。当 switch 语句当中没有匹配的 case 语句的时候,就会执行 default 语句。switch 虽然也可以嵌套,但是嵌套之后会很乱,非常不易于阅读代码。所以尽量不要嵌套。

代码示例:

int day = 7;
switch (day) {
    case 1:
        System.out.println("星期一");
        break;
    case 2:
        System.out.println("星期二");
        break;
    case 3:
        System.out.println("星期三");
        break;
    case 4:
        System.out.println("星期四");
        break;
    case 5:
        System.out.println("星期五");
        break;
    case 6:
        System.out.println("星期六");
        break;
    case 7:
        System.out.println("星期日");
        break;
    default:
        System.out.println("此数字不属于星期");
        break;
}

循环结构

while 循环

基本语法:

while(循环条件){
循环语句;
}

要注意的是:循环条件是 true 就执行循环语句,否则就结束循环。例如求 1 - 10 的和:

int n = 1;
int sum = 0;
while (n <= 10){
    sum += n;
    n++;
}
System.out.println(sum);

这里就是通过 while 循环来计算 1 - 10 的和。

while 循环和 if 语句一样,while 下面的语句可以不写 { } , 但是不写的时候只能支持一条语句。所以为了方便阅读和后期的维护,还是应该加上括号。就像这样:

int num = 1;
while (num <= 10)
 System.out.println(num);
 num++;

因为只能执行一条语句,所以就一直死循环。

break

在循环结构当中,break 也是经常用到的。break 就是让循环提前结束。例如:找到 1 - 10 中第一个 3 的倍数。

int num = 1;
while (num <= 10) {
    if (num % 3 == 0) {
        System.out.println("找到了 3 的倍数 为:" + num);
        break;
    }
    num++;
}

执行到 break 的时候,就会让循环结束。但是要注意的是:如果是多层循环嵌套 break 结束的是最近的一层循环。

continue

continue 的功能是跳过这次循环, 进入下次循环。就是这次循环当中 continue 下面的代码不执行,进入下一次循环。例如:找到 100 - 200 中所有 3 的倍数。

int num = 100;
while (num <= 200) {
 if (num % 3 != 0) {
 num++;
 continue;
 }
 System.out.println("找到了 3 的倍数, 为:" + num);
 num++;
}

执行到 continue 语句的时候, 就会立刻进入下次循环(判定循环条件), 从而不会执行到下方的打印语句,所以不是 3 的倍数的数就没有打印出来。

for循环

语法:

for(表达式1;表达式2;表达式3){
循环体;
}

表达式1: 用于初始化循环变量.
表达式2: 循环条件
表达式3: 更新循环变量.

相对于 while 循环,for 循环会把这三个部分结合在一起,降低出现 bug 的可能。举例:求 1- 100 的和

int sum = 0;
for (int i = 1; i <= 100; i++) {
 sum += i;
}
System.out.println("sum = " + sum);

do while 循环

语法:

do{
循环语句;
}while(循环条件);

do while 循环是先执行循环语句,在判断循环条件,如果循环条件为 true 就继续循环,否则就退出循环。不论如何 do while 循环 都会执行一次。循环最后的分号一定不要忘记。举例:求 1 - 100 的和。

int num = 1;
int sum = 0;
do {
    sum += num;
    num++;
} while (num <= 100);
System.out.println(sum);

一般 do while 很少用到, 更推荐使用 for 和 while 。

到此这篇关于Java 逻辑控制详解分析的文章就介绍到这了,更多相关Java 逻辑控制内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Java 逻辑控制全面详解

    目录 1 顺序结构 2 分支结构 2.1 if语句 基本语法形式1: 示例代码1: 基本语法形式2: 示例代码2: 基本语法形式3: 示例代码3: 注意事项1: 注意事项2: 2.2 switch语句 基本语法格式 示例代码: 3 循环结构 3.1while循环 基本语法格式: 示例代码:输出1~10 3.2 break语句 3.3 continue语句 3.4 for循环 基本语法格式: for循环执行的顺序是: 示例代码: 3.5 do while 循环 基本语法格式: do whiie 循

  • Java程序的逻辑控制和方法详解

    一.顺序结构 从上往下执行,非常简单,不做过多赘述. 二.分支结构 1.if语句 与c语言不同的是,java的if(布尔表达式)必须是布尔表达式 eg:判断某一年是否是闰年 public static void main(String[] args) { Scanner scan = new Scanner(System.in); int year = scan.nextInt(); if((year%4==0 && year%100 !=10)||(year%400==0)) Syste

  • java基础javeSE程序逻辑控制语法

    目录 顺序结构 分支结构 if 语句 悬垂 else switch 语句 循环结构 while 循环 for 循环 do while 循环 输入输出方式 输出到控制台 从键盘输入 猜数字游戏 顺序结构 按照代码书写的顺序一行一行执行 分支结构 if 语句 基本语法形式: if(布尔表达式){ //条件满足时执行代码 } if(布尔表达式){ //条件满足时执行代码 }else{ //条件不满足时执行代码 } //多分支 if(布尔表达式){ //条件满足时执行代码 }else if(布尔表达式)

  • Java 基础语法中的逻辑控制

    目录 Java 基础语法中的逻辑控制 一.逻辑控制语句 1. 顺序结构 2. 分支结构 3. 循环结构 二.输入输出方式 1. 输出到控制台 2. 从键盘输入 三.猜数字游戏 四.总结 Java 基础语法中的逻辑控制 一.逻辑控制语句 1. 顺序结构 像我们写的代码,执行时会按照从上到下一行一行的执行.这z就是顺序结构,不同的顺序,结果可能就不一样.如 System.out.println(1) System.out.println(2) System.out.println(3) 该代码结果为

  • Java程序顺序结构中逻辑控制语句详解流程

    目录 一.顺序结构 二.分支结构 1.if语句 2.switch 语句 三. 循环结构 1 .while 循环 2. break 3. continue 4.for循环 5.do while循环 四.输入输出 1.输出到控制台 2 .从键盘输入 五.练习 看前欣赏美图! 上才艺! 目录 一.顺序结构二.分支结构1.if语句2.switch 语句 三. 循环结构1 .while 循环2. break3. continue4.for循环5.do while循环 四.输入输出1.输出到控制台2 .从键

  • Java基础语法:逻辑控制

    目录 一.逻辑控制语句 1. 顺序结构 2. 分支结构 2.1 if 语句 2.2 switch 语句 3. 循环结构 3.1 while 循环 3.2 break 3.3 continue 3.4 for 循环 3.5 do while 循环 二.输入输出方式 1. 输出到控制台 1.基本语法 2.代码示例 3.格式化输出表(随用随查) 2. 从键盘输入 1.读入一个字符(不推荐使用) 2.使用 Scanner 读取字符/字符串/整数/浮点数/布尔值 三.猜数字游戏 1.首先我们要知道在 Ja

  • Java中的逻辑控制语句详解

    目录 顺序结构 分支结构 if 语句 基本语法格式: 举例: 注意事项: switch 语句 基本语法格式: 执行流程: 注意事项: 不能做switch参数的类型有哪些? 循环结构 while 循环 基本语法格式: while 循环输入 注意事项: break 代码示例: continue for 循环 基本语法格式: 执行顺序: 代码示例: do while 循环 基本语法格式: 代码示例: 总结 顺序结构 我们之前写的大多代码都是顺序结构的,即按照代码的顺序一行一行的执行 代码1 Syste

  • Java 逻辑控制详解分析

    目录 顺序结构 分支结构 if 语句 悬垂 else 问题 switch 语句 循环结构 while 循环 break continue for循环 do while 循环 顺序结构 顺序结构就是按照代码从上往下执行,我们运行的程序就是从上往下的顺序结构,当遇到方法的时候,才去执行方法.例如: System.out.println("aaa"); System.out.println("bbb"); System.out.println("ccc"

  • Java Mybatis框架多表操作与注解开发详解分析

    目录 一对一查询 多对多查询 Mybatis的注解开发 Mybatis的增删查改 MyBatis的注解实现复杂映射开发 一对一查询 一对一查询的模型 用户表和订单表的关系为,一个用户有多个订单,一个订单只从属于一个用户. 一对一查询的需求:查询一个订单,与此同时查询出该订单所属的用户 一对一查询的语句 对应的sql语句: select * from orders o,user u where o.uid=u.id;查询的结果如下: 创建Order和User实体 创建OrderMapper接口 p

  • Java Mybatis框架Dao层的实现与映射文件以及核心配置文件详解分析

    目录 Mybatis的Dao层实现 传统开发方式 代理开发方式 MyBatis映射文件深入 动态sql语句 动态SQL之<if> 动态SQL之<foreach> SQL片段抽取 总结 Mybatis核心配置文件深入 typeHandlers标签 plugins标签 总结 Mybatis的Dao层实现 传统开发方式 1.编写UserDao接口 public interface UserMapper { public List<User> findAll() throws

  • Java SpringMVC拦截器与异常处理机制详解分析

    目录 拦截器(interceptor)的作用 拦截器快速入门 案例:用户登录权限控制 拦截器方法说明 SpringMVC异常处理 异常处理的思路 异常处理两种方式 拦截器(interceptor)的作用 Spring MVC的拦截器类似于Servlet开发中的过滤器Filter,用于对处理器进行预处理和后处理. 将拦截器按一定的顺序联结成一条链,这条链称为拦截器链(Interceptor Chain).在访问被拦截的方法或字段时,拦截器链中的拦截器就会按其之前定义的顺序被调用.拦截器也是AOP思

  • Java并发编程之Volatile变量详解分析

    目录 一.volatile变量的特性 1.1.保证可见性,不保证原子性 1.2.禁止指令重排 二.内存屏障 三.happens-before Volatile关键字是Java提供的一种轻量级的同步机制.Java 语言包含两种内在的同步机制:同步块(或方法)和 volatile 变量, 相比synchronized(synchronized通常称为重量级锁),volatile更轻量级,因为它不会引起线程上下文的切换和调度. 但是volatile 变量的同步性较差(有时它更简单并且开销更低),而且其

  • java 多线程与并发之volatile详解分析

    目录 CPU.内存.缓存的关系 CPU缓存 什么是CPU缓存 为什么要有多级CPU Cache Java内存模型(Java Memory Model,JMM) JMM导致的并发安全问题 可见性 原子性 有序性 volatile volatile特性 volatile 的实现原理 总结 CPU.内存.缓存的关系 要理解JMM,要先从计算机底层开始,下面是一份大佬的研究报告 计算机在做一些我们平时的基本操作时,需要的响应时间是不一样的!如果我们计算一次a+b所需要的的时间: CPU读取内存获得a,1

  • Java Spring Boot消息服务万字详解分析

    目录 消息服务概述 为什么要使用消息服务 异步处理 应用解耦 流量削峰 分布式事务管理 常用消息中间件介绍 ActiveMQ RabbitMQ RocketMQ RabbitMQ消息中间件 RabbitMQ简介 RabbitMQ工作模式介绍 Work queues(工作队列模式) Public/Subscribe(发布订阅模式) Routing(路由模式) Topics(通配符模式) RPC Headers RabbitMQ安装以及整合环境搭建 安装RabbitMQ 下载RabbitMQ 安装R

  • Java 虚拟机栈详解分析

    Java虚拟机栈 1. 定义 栈:线程运行时需要的内存空间,一个栈存在多个栈帧.栈具有先入后出,后入先出的特点. 栈帧:每个方法运行时需要的内存(局部变量表.操作数栈.动态链接和方法返回值等信息.),每次调用一个方法,便会将栈帧压入栈中,方法执行完毕将栈帧从栈顶压出 活动栈帧:指在栈顶的栈帧,既正在调用的方法,每个线程只能有一个活动栈帧,对应着该线程正在调用的那个方法 现在我们用代码来演示一下Java虚拟机如何将栈帧压入及压出栈中 public class Main { public stati

  • Java 详解分析链表的中间节点

    目录 1.题目描述 2.解法 3.复杂度 1.题目描述 给定一个头结点为 head 的非空单链表,返回链表的中间结点. 如果有两个中间结点,则返回第二个中间结点. 题目来源:力扣(LeetCode) 2.解法 定义一个快指针 fast 和一个慢指针 slow :fast 走两步, slow 走一步,当 fas t走到尽头时, slow 就刚好在中间节点.因为 fast 比slow 多走一半路程 class Solution { public ListNode middleNode(ListNod

  • Java BigDecimal详解_动力节点Java学院整理

    1.引言 借用<Effactive Java>这本书中的话,float和double类型的主要设计目标是为了科学计算和工程计算.他们执行二进制浮点运算,这是为了在广域数值范围上提供较为精确的快速近似计算而精心设计的.然而,它们没有提供完全精确的结果,所以不应该被用于要求精确结果的场合.但是,商业计算往往要求结果精确,例如银行存款数额,这时候BigDecimal就派上大用场啦. 2.BigDecimal简介 BigDecimal 由任意精度的整数非标度值 和32 位的整数标度 (scale) 组

随机推荐