Java中的逻辑控制语句详解

目录
  • 顺序结构
  • 分支结构
    • if 语句
      • 基本语法格式:
      • 举例:
      • 注意事项:
    • switch 语句
      • 基本语法格式:
      • 执行流程:
      • 注意事项:
      • 不能做switch参数的类型有哪些?
  • 循环结构
    • while 循环
      • 基本语法格式:
      • while 循环输入
      • 注意事项:
      • break
      • 代码示例:
    • continue
    • for 循环
      • 基本语法格式:
      • 执行顺序:
      • 代码示例:
      • do while 循环
      • 基本语法格式:
      • 代码示例:
  • 总结

顺序结构

我们之前写的大多代码都是顺序结构的,即按照代码的顺序一行一行的执行

代码1
 System.out.println("you");
 System.out.println("and");
 System.out.println("me");
代码2
 System.out.println("and");
 System.out.println("me");
 System.out.println("you");

上述代码 1 运行结果:

you
and
me

代码 2 运行结果:

and
me
you

分支结构

if 语句

基本语法格式:

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

条件语句只能是布尔表达式

布尔表达式的结果为 true,执行代码1,否则执行代码2

举例:

如果 J 这次考到90分以上,奖励一个大鸡腿,否则奖励一个大嘴巴子

int score = 95;
if(score >= 90) {
	System.out.println("奖励一个大鸡腿!");
}else {
	System.out.println("奖励一个大嘴巴子!");
}

注意事项:

悬垂else:

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

运行结果:aaa

有多个 if 语句且没有大括号时,else与最近的 if 匹配,故建议写 if 语句时,加上大括号~

switch 语句

基本语法格式:

switch(表达式) {
 	case 常量值1:{
 		语句1;
 		break;
	}
 	case 常量值2:{
 		语句2;
 		break;
 	}
 	 ...
 	default:{
 	内容都不满足时执行语句;
	 	break;
 	}
}

执行流程:

  • 先计算表达式的值
  • 和 case 依次比较,一旦有响应的匹配就执行该项下的语句,直到遇到 break 时结束
  • 当表达式的值没有与所列项匹配时,执行 default 后的语句

注意事项:

  • break 不能遗漏,否则会失去 “多分支选择” 的效果
  • case 的常量值不能重复
  • 一般不推荐switch 嵌套使用

不能做switch参数的类型有哪些?

long,float,double,boolean

循环结构

while 循环

基本语法格式:

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

循环条件为 true, 则执行循环语句, 否则结束循环

while 循环输入

Scanner scan = new Scanner(System.in);
	// Ctrl+C 直接中断程序
   	// Ctrl+D 正常退出程序
    while(scan.hasNext()){
    	int year = scan.nextInt();
        if((year % 4==0 && year % 100!=0) || year % 400==0){
        	System.out.println("闰年!");
        }else{
            System.out.println("不是闰年!");
        }
   	}

Ctrl+C 直接中断程序

Ctrl+D 正常退出程序

注意事项:

  • 一定记得步进,否则可能出现死循环
  • while 循环条件只能是布尔表达式

break

  • break 功能:让循环提前结束
  • break只能用于两种情况,一个是switch,一个是循环

代码示例:

求100-200中第一个既能被3整除也能被5整除的数:

int num = 100;
while(num<=200){
	if(num % 15==0){
    	System.out.println(num);
       	break;   //此处用break,因为break在while循环里
     }
     num++;
}

执行结果: 105

continue

continue 功能:跳过这次循环,进入下次循环

若将上边break 示例代码 中的 break 换成 continue,则会循环打印 105

for 循环

基本语法格式:

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

执行顺序:

第一趟循环:

  • 首先,执行表达式 1,且表达式 1 只执行一次,即循环的初始化
  • 判断表达式 2 是否为真若为真,
  • 则执行循环体
  • 执行表达式3

第二趟循环

  • 判断表达式 2 是否为真若为真,
  • 则执行循环体
  • 执行表达式3

一直到表达式2为假,循环结束

代码示例:

for(int i=1; i<=10;i++){
	System.out.println(i);
}

do while 循环

先执行循环语句,再判定循环条件,条件成立则继续执行,否则循环结束

基本语法格式:

do{
  循环语句;
}while(循环体);

代码示例:

打印数字 1 - 10

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

注意事项: do while 循环最后的分号一定不要忘记一般不推荐使用do while语句

总结

本篇文章就到这里了,希望能给你带来帮助,也希望您能够多多关注我们的更多内容!

(0)

相关推荐

  • 关于java命令的本质逻辑揭秘过程

    前言 在日常编码中,有了ide的支持,我们已经很少直接在命令行中直接执行java XXX命令去启动一个项目了.然而我们有没有想过,一个简单的java命令背后究竟做了些什么事情?让我们看下下面几个简单的问题 1.java命令之后可以跟很多参数,那么这些参数是如何被解析的?为何-version会返回版本号而如果紧跟一个类名则会启动jvm? 2.为何我们自己定义的入口方法必须满足如下的签名?是否还有其他可能性? public static void main(String[] args) { } 3.

  • 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程序的逻辑控制和方法详解

    一.顺序结构 从上往下执行,非常简单,不做过多赘述. 二.分支结构 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命令的本质逻辑揭秘

    前言 在日常编码中,有了ide的支持,我们已经很少直接在命令行中直接执行java XXX命令去启动一个项目了.然而我们有没有想过,一个简单的java命令背后究竟做了些什么事情?让我们看下下面几个简单的问题 1.java命令之后可以跟很多参数,那么这些参数是如何被解析的?为何-version会返回版本号而如果紧跟一个类名则会启动jvm? 2.为何我们自己定义的入口方法必须满足如下的签名?是否还有其他可能性? public static void main(String[] args) { } 3.

  • Java基础之逻辑运算符知识总结

    一.前言 逻辑运算符 左右都是布尔类型的操作数,表达式的结果也是布尔类型 true或false 二.逻辑运算符 & 逻辑与 只要有一个操作数是false,那么结果一定是false && 短路与 效率高点,只要左边是false,那么右边就不计算,结果一定是false | 逻辑或 只要有一个操作数是true,那么结果一定是true || 短路或 效率高点,只要左边是true,那么右边就不计算,结果一定是true ! 逻辑非 结果相反 ^ 逻辑异或 左右操作数不一样结果是true,左右操

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

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

  • 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中变量和常量详解

    变量和常量 在程序中存在大量的数据来代表程序的状态,其中有些数据在程序的运行过程中值会发生改变,有些数据在程序运行过程中值不能发生改变,这些数据在程序中分别被叫做变量和常量. 在实际的程序中,可以根据数据在程序运行中是否发生改变,来选择应该是使用变量代表还是常量代表. 变量 变量代表程序的状态.程序通过改变变量的值来改变整个程序的状态,或者说得更大一些,也就是实现程序的功能逻辑. 为了方便的引用变量的值,在程序中需要为变量设定一个名称,这就是变量名.例如在2D游戏程序中,需要代表人物的位置,则需

  • Java中的关键字volatile详解

    volatile关键字经常用来修饰变量.不过,volatile本身很容易被误用.本篇就介绍一下volatile的原理和使用方式. 在介绍volatile关键字原理前,我们首先要了解JVM运行时的内存分配逻辑. 对于成员变量i,它存储在堆内存中.每个线程在运行时都会有一个自己的线程栈,线程如果要访问类的成员变量i,会通过引用获取到堆中变量i实际的值10,然后把这个变量值拷贝到自己的栈内存中,作为一个变量副本,之后线程便不再会与堆中的变量有实际联系.每个线程都有一个自己的本地副本,相互隔离.线程访问

  • java中Locks的使用详解

    之前文章中我们讲到,java中实现同步的方式是使用synchronized block.在java 5中,Locks被引入了,来提供更加灵活的同步控制. 本文将会深入的讲解Lock的使用. Lock和Synchronized Block的区别 我们在之前的Synchronized Block的文章中讲到了使用Synchronized来实现java的同步.既然Synchronized Block那么好用,为什么会引入新的Lock呢? 主要有下面几点区别: synchronized block只能写

  • java中TestNG使用教程详解

    目录 一.TestNG介绍 二.TestNG安装(基于eclipse+maven) 三.TestNG基本使用和运行 1.直接运行: 2.xml方式运行 四.注解说明 五.TestNG断言 六.TestNG预期异常测试 七.TestNG忽略测试 八.TestNG超时测试 九.分组测试 十.分suite测试 十一.依赖测试 十二.参数化测试 十三.XML配置文件说明 1.suite标签 2.test标签 3.group标签 4.其他 十四.TestNG报告 一.TestNG介绍 TestNG是Jav

  • Java中自动生成构造方法详解

    Java中自动生成构造方法详解 每个类在没有声明构造方法的前提下,会自动生成一个不带参数的构造方法,如果类一但声明有构造方法,就不会产生了.证明如下: 例1: class person { person(){System.out.println("父类-person");} person(int z){} } class student extends person { // student(int x ,int y){super(8);} } class Rt { public st

  • 基于Java中的StringTokenizer类详解(推荐)

    StringTokenizer是字符串分隔解析类型,属于:Java.util包. 1.StringTokenizer的构造函数 StringTokenizer(String str):构造一个用来解析str的StringTokenizer对象.java默认的分隔符是"空格"."制表符('\t')"."换行符('\n')"."回车符('\r')". StringTokenizer(String str,String delim)

  • JAVA中string数据类型转换详解

    在JAVA中string是final类,提供字符串不可以修改,string类型在项目中经常使用,下面给大家介绍比较常用的string数据类型转换: String数据类型转换成long.int.double.float.boolean.char等七种数据类型 复制代码 代码如下: * 数据类型转换 * @author Administrator * */ public class 数据类型转换 { public static void main(String[] args) { String c=

  • java 中 阻塞队列BlockingQueue详解及实例

    java 中 阻塞队列BlockingQueue详解及实例 BlockingQueue很好的解决了多线程中数据的传输,首先BlockingQueue是一个接口,它大致有四个实现类,这是一个很特殊的队列,如果BlockQueue是空的,从BlockingQueue取东西的操作将会被阻断进入等待状态,直到BlockingQueue进了东西才会被唤醒.同样,如果BlockingQueue是满的,任何试图往里存东西的操作也会被阻断进入等待状态,直到BlockingQueue里有空间才会被唤醒继续操作.

随机推荐