Java流程控制

1.顺序结构

  1. java的基本结构就是顺序结构,除非特别指明,否则就按照顺序一句一句往下执行。
  2. 顺序结构是最简单的算法结构,它是任何一个算法都离不开的一种基本算法结构。

2. 选择结构

1.if单选结构

语法:

if(布尔表达式){
//如果布尔表达式为true将执行的语句
}

小例子

Scanner scanner = new Scanner(System.in);
System.out.println("请输入内容:");
String s = scanner.nextLine(); //equals:判断字符串是否相等
if (s.equals("Hello")){
System.out.println(s);
}
System.out.println("End");
scanner.close();

2.if双选结构

语法

if(布尔表达式){
//如果布尔表达式的值为true
}else{
//如果布尔表达式的值为false
}

小例子

Scanner scanner = new Scanner(System.in);
System.out.println("请输入成绩:");
int score = scanner.nextInt(); if (score >= 60){
System.out.println("及格");
}else {
System.out.println("不及格");
}
scanner.close();

3.if多选结构

语法

if(布尔表达式1){
//如果布尔表达式1的值为true执行代码
}else if(布尔表达式2){
//如果布尔表达式2的值为true执行代码
}else if(布尔表达式3){
//如果布尔表达式3的值为true执行代码
}else{
//如果以上布尔表达式都不为true执行代码
}

小例子

Scanner scanner = new Scanner(System.in);
System.out.println("请输入成绩:");
int score = scanner.nextInt();
/*
if语句至多有1个else语句,else语句在所有的 else if 语句之前
if语句可以有若干个 else if 语句,它们必须在 else 语句之前
一旦其中一个else if 语句检测为true,其他的else if 以及 else 语句都将跳过执行
*/
if (score == 100){
System.out.println("恭喜满分");
}else if (score < 100 && score >= 90){
System.out.println("A级");
}else if (score < 90 && score >= 80){
System.out.println("B级");
}else if (score < 80 && score >= 70){
System.out.println("C级");
}else if (score < 70 && score >= 60){
System.out.println("D级");
}else if (score < 60 && score >= 0){
System.out.println("不及格!");
} else {
System.out.println("成绩不合法");
}
scanner.close();

4.嵌套的if结构

语法

if(布尔表达式1){
//如果布尔表达式1的值为true执行代码
if(布尔表达式2){
//如果布尔表达式2的值为true执行代码
}
}

5.switch多选择结构

语法

switch(expression){
case value:
//语句
break;//可选
case value:
//语句
break;
//可以有任意数量的case语句
default :
//语句
}

小例子

//switch匹配一个具体的值
char grade = 'C'; switch (grade){
case 'A':
System.out.println("优秀");
break;//可选
//若没有break,会发生case穿透现象
case 'B':
System.out.println("良好");
break;
case 'C':
System.out.println("及格");
break;
case 'D':
System.out.println("再接再厉");
break;
case 'E':
System.out.println("挂科");
break;
default:
System.out.println("未知等级");
}

从Java SE 7开始,switch支持字符串String类型了,同时case标签必须为字符串常量或字面量

package com.kuang.Struch;

public class SwitchDemo02 {
public static void main(String[] args) { String name = "娑娜";
//JDk7的新特性,表达式结果是字符串
//字体的本质还是数字 switch (name){
case "娑娜" :
System.out.println("大大大!");
break;
case "金克斯":
System.out.println("一马平川~");
break;
default:
System.out.println("......");
}
}
}
1.IDEA反编译

反编译 java--->class(字节码文件)------反编译(IDEA自带可以实现)

  1. 点击File--->选择Project Structure...弹出一个窗口
  2. 选择Project,往下看到Project complier output,有个文件的地址,按地址找到文件的.class文件,拖进idea里去会提示是否要反编译,点确认就行了
2.反编译后效果:
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by Fernflower decompiler) package com.kuang.Struch; public class SwitchDemo02 {
public SwitchDemo02() {
} public static void main(String[] args) {
String name = "娑娜";
byte var3 = -1;
switch(name.hashCode()) {
case 737835:
if (name.equals("娑娜")) {
var3 = 0;
}
break;
case 36544341:
if (name.equals("金克斯")) {
var3 = 1;
}
}
switch(var3) {
case 0:
System.out.println("大大大!");
break;
case 1:
System.out.println("一马平川~");
break;
default:
System.out.println("......");
}
}
}

3.循环结构

1.while循环

//语法
while(布尔表达式){
//循环内容
}
//只要布尔表达式为true,循环就会一直执行下去
//我们大多数情况下是会让循环停下来的,我们需要一个让表达式失效的方式来结束循环
//少部分情况需要循环一直执行,比如服务器的请求响应监听等
//循环条件一直为true就会造成无限循环(死循环)

例子

package com.kuang.Struch;

public class WhiileDemo01 {
public static void main(String[] args) {
//输出1到100
int i = 0;
while (i < 100){
i++;
System.out.println(i);
}
}
}
package com.kuang.Struch;

public class WhileDemo02 {
public static void main(String[] args) {
//计算1+2+3+...+100=?
int i = 0;
int sum = 0; while (i <= 100){
sum += i;
}
System.out.println(sum);//5050
}
}

2.do...while循环

对于while语句而言,如果不满足条件,则不能进入循环,但有时候我们需要即使不满足条件也至少执行一次

do...while循环和while循环相似,不同的是,do...while循环至少会执行一次

//语法
do{
//代码语句
}while(布尔表达式);

while和do...while的区别

  1. while先判断后执行,do...while是先执行后判断!
  2. do...while总是保证循环体会被至少执行一次,这是他们的主要差别。

例子

package com.kuang.Struch;

public class DoWhileDemo01 {
public static void main(String[] args) {
int i = 0;
int sum = 0; do {
sum += i;
i++;
}while (i <= 100); System.out.println(sum);//5050
}
}

While和do...while对比

package com.kuang.Struch;

public class DoWhileDemo02 {
public static void main(String[] args) {
int a = 0;
while (a < 0){
System.out.println(a);
a++;
}
System.out.println("================");
do {
System.out.println(a);
a++;
}while (a < 0);
//输出结果为:
//================
//0
}
}

3.for循环

for循环语句是支持迭代的一种通用结构,是最有效、最灵活的循环结构

for循环执行的次数是在执行前就确定的,语法格式如下:

for(初始化;布尔表达式;更新){
//代码语句
}

例子

package com.kuang.Struch;

public class ForDemo01 {
public static void main(String[] args) {
int a = 1;//初始化条件 while (a <= 100){//条件判断
System.out.println(a);//循环体
a += 2;//迭代
}
System.out.println("while循环结束!");
System.out.println("===================="); //初始化、条件判断、迭代
for (int i = 1; i <= 100; i++){//这里可以使用快捷键:100.for 会直接跳出写好的循环体!!!
System.out.println(i);
}
System.out.println("for循环结束!");
/*
关于for循环有以下几点说明:
1.最先执行初始化步骤,可以声明一种类型,但可以初始化一个或多个循环控制变量,也可以是空语句
2.然后检测布尔表达式的值,如果为true执行循环体的内容,如果为false,循环停止,开始执行循环体后面的语句
3.执行一次循环后,更新循环控制变量(迭代因子控制循环变量的增减)
4.最后再次检测布尔表达式,循环执行上面的过程
*/
}
}
经典例子
例子1
package com.kuang.Struch;

public class ForDemo02 {
public static void main(String[] args) {
//计算0到100之间的奇数和偶数的和
int oddSum = 0;//奇数
int evenSum = 0;//偶数 for (int i = 0; i <= 100; i++) {
if (i % 2 != 0){
oddSum += i;//oddSum = oddSum + i;
}else {
evenSum += i;
}
}
System.out.println("奇数的和:" + oddSum);//2500
System.out.println("偶数的和:" + evenSum);//2550
}
}
例子2
package com.kuang.Struch;

public class ForDemo03 {
public static void main(String[] args) {
//用for循环输出1-1000之间能被5整除的数,并且每行输出3个 //计数器
int count=0; for(int i = 1; i <= 1000; i++) {
if (i % 5 == 0) {
System.out.print(i + "\t");
count++;
}
if (count == 3) {//换行,每满3个数字就换行
System.out.println();
//System.out.println("\n");
/*
println:输出完会换行
print:输出完不会换行
*/
count = 0;//换完清零,再重新计数
}
}
/*运行结果: 5 10 15
20 25 30
35 40 45
*/
}
}
例子3
package com.kuang.Struch;

public class ForDemo04 {
public static void main(String[] args) {
//九九乘法表
for (int i = 1; i <= 9; i++) {
for (int j = 1; j <= i; j++) {
System.out.print(j + "*" + i + "=" + (j * i) + "\t");
}
System.out.println();
}
}
}

4.增强型for循环

Java5引入了一种主要作用于数组或集合的增强型for循环

for(声明语句 : 表达式){
//代码句子
}

例子

package com.kuang.Struch;
//for与foreach对比
public class ForDemo05 {
public static void main(String[] args) { int[] numbers = {10,20,30,40,50};//定义了一个数组 for (int i = 0; i < 5; i++) {
System.out.print(numbers[i] + "\t");
}
System.out.println("\n" + "==================="); //遍历数组的元素
for (int x:numbers) {
System.out.print(x + "\t");
}
}
}

5.break和continue

break在任何循环语句的主体部分,均可用break控制循环流程。break用于强行退出循环,不执行循环中剩余的语句。(break也在switch语句中使用)

例子

package com.kuang.Struch;

public class BreakDemo01 {
public static void main(String[] args) {
int i = 0;
while (i < 100){
i++;
System.out.println(i);
if(i == 30){
break;
}
}
System.out.println("hhh~");
//运行结果:输出到30后,停止循环,再输出hhh
}
}

continue语句用在循环语句体中,用于终止某次循环过程,即跳过循环体中尚未执行的语句,接着进行下一次是否执行循环的判定。

package com.kuang.Struch;

public class ContinueDemo01 {
public static void main(String[] args) {
int i = 0;
while (i < 100){
i++;
if(i % 10 == 0){
System.out.println();
continue;
}
System.out.print(i + "\t");
/*输出结果:
1 2 3 4 5 6 7 8 9
11 12 13 14 15 16 17 18 19
21 22 23 24 25 26 27 28 29
... */
}
}
}

6.练习

package com.kuang.Struch;

public class TestDemo {
public static void main(String[] args) {
//打印三角形,5行 for (int i = 1; i <= 5; i++) {
for (int j = 5; j >= i; j--){
System.out.print(" ");
}
for (int j = 1; j <= i; j++){
System.out.print("*");
}
for (int j = 1; j < i; j++){
System.out.print("*");
}
System.out.println();
/*运行结果:
*
***
*****
*******
*********
*/
}
}
}

JavaSE学习笔记03流程控制的更多相关文章

  1. Python学习笔记 - day4 - 流程控制

    Python流程控制 Python中的流程控制主要包含两部分:条件判断和循环. Python的缩进和语法 为什么要在这里说缩进和语法,是因为将要学习的条件判断和分支将会涉及到多行代码,在java.c等 ...

  2. PYTHON 学习笔记2 流程控制工具以及函数定义、匿名函数

    前言 在上一节的学习中.已经介绍了几种基本类型.包括字符串的定义,以及字符串中索引.切片.字符串拼接的使用方法.以及基本的整形数据运算.一些之前都没有了解过的运算符.比如 ** 乘方 //整数除法等. ...

  3. 【原】Java学习笔记005 - 流程控制

    package cn.temptation; public class Sample01 { public static void main(String[] args) { // 程序的流程控制(流 ...

  4. C#学习笔记_04_流程控制

    04_流程控制 程序的执行结构: 顺序结构 分支结构 循环结构 可以通过某些特定的控制语句来控制代码的执行结构 分支流程控制 if else 基本语法 可以只有if没有else,但是不能没有if只有e ...

  5. Java学习笔记五——流程控制

    分支结构 Java提供了两种常见的分支控制结构:if语句和switch语句. if语句 if语句使用布尔值或布尔表达式(表达式结果为布尔值),if语句有3中形式: 第一种形式: if (5 > ...

  6. 【原】Java学习笔记007 - 流程控制

    package cn.temptation; public class Sample01 { public static void main(String[] args) { // for循环 // ...

  7. 【原】Java学习笔记006 - 流程控制

    package cn.temptation; public class Sample01 { public static void main(String[] args) { // 需求:写一万次&q ...

  8. Python学习笔记:流程控制

    单分支: if 条件: 满足条件后执行的代码 程序举例: leiyu=28if leiyu > 22: print("You can find girl friend..." ...

  9. JavaSE 学习笔记03丨继承、接口、多态、内部类

    Chapter. 5 继承 继承作为面向对象的三大特征之一,它是多态的前提.它主要解决的问题是共性抽取. Java中的继承,是单继承.多级继承的. 已存在的类,被称为超类.基类.父类(parent c ...

随机推荐

  1. 故事:坐在我隔壁的小王问我什么是HyperLogLog

    1 最近坐我隔壁的小王同志,心情真是糟透了.不但工作不顺心,被老板狠狠的批了一顿,连女朋友也跟别人跑了(Y 的让你天天在我面前秀). 真是不可谓不惨,我都快要同情他了. 看着他萎靡又迷离的眼神,我实在 ...

  2. swift基本数据类型使用-数组使用

    目录 数组的使用 1.数组的定义 2.对可变数组的基本操作 3.数组的遍历 4.数组的合并 5. 示例 数组的使用 1.数组的定义 1> 定义不可变数组 2> 定义可变数组 2.对可变数组 ...

  3. Java学习预热

    预备知识 什么是计算机 点击进入百度百科(计算机) 计算机硬件组成 主要部件 CPU 内存 主板 IO设备 键盘 鼠标 麦克风 显示器 音箱 冯·诺依曼体系结构 计算机软件 系统软件 DOS wind ...

  4. 【Unity 插件】Lean Pool 使用

    2020-09-11 Lean Pool 是一个轻量级的游戏对象池库,它可以轻松的帮助你的游戏提高性能.当然,Lean Pool也可以工作于普通的C#类. 目录: 1.Lean Pool使用 2.Le ...

  5. Oracle学习(十三)优化专题

    一.查询频繁,数据量大 索引 使用时机:表中经常查询的字段可以考虑添加索引. 联合索引:若能确认多个条件会同时使用时,可以将这几个条件作为联合索引. 单列索引:若条件查询时,这几个条件不是同时用到的话 ...

  6. cnpm install 报错

    报错如图所示,请观下文 1,npm cache clean --force 2,进入文件,rm -rf node_modules/ ---- 暴力直接

  7. linux下Crontab定时任务

    1.命令格式 crontab [-u user] file crontab [-u user] [-e | -l | -r ] 2.命令参数 -u user:用来设定某个用户的crontab服务: f ...

  8. linux与linux间,互相拷贝文件

    直接使用scp命令 和远程Linux主机 进行文件的拷贝    1.可以将远程Linux系统上的文件拷贝到本地计算机    2.也可以将本地计算机上的文件拷贝到远程Linux系统上. 比如:我们要拷贝 ...

  9. hadoop分布式格式化时出现异常java.net.unknownhostexception

    当搭建好分布式集群后,准备使用命令格式化时 hdfs namenode format 在日志的最后一行出现 java.net.unknownhostexception的异常,通常是你的主机名没有配置好 ...

  10. Hibernate4.3基础知识2

    一.数据库的隔离级别   脏读 不可重复读 幻读 Read uncommited Y Y Y Read commited N Y Y Repeatable read N N Y Serializabl ...