分支结构

  Java提供了两种常见的分支控制结构:if语句和switch语句。

if语句

  if语句使用布尔值布尔表达式(表达式结果为布尔值),if语句有3中形式:

  第一种形式:

        if (5 > 3) {
System.out.println("5 > 3");
}

  第二种形式:

        if (5 > 3) {
System.out.println("5 > 3");
}
else{
System.out.println("5 < 3");
}

  第三种形式:

        if (5 > 3) {
System.out.println("5 > 3");
}
else if(5 > 4){
System.out.println("5 > 4");
}
else{
System.out.println("5 < 3 and 5 < 4");
}

  我们看下面一个例子:

        int age = 45;
if (age <= 20) {
System.out.println("年轻人");
}
else if(age > 20 && age < 40){
System.out.println("青年人");
}
else if(age >= 40 && age < 60){
System.out.println("中年人");
}
else{
System.out.println("老年人");
}

  这个是if语句的应用,结果当然是青年人,没有问题。

  但是,如果分支非常多的话,这样写就很麻烦,所以就出现了下面的switch语句。

switch语句

  switch语句由一个控制表达式和多个case标签组成。switch语句后面的控制表达式的数据类型可以是:byte、short、char、int四种基本类型,枚举类型java.lang.String类型(从java7才允许)。总共6种。

  例子:

        String season = "夏天";
switch (season) {
case "春天":
System.out.println("春雨沥沥");
break;
case "夏天":
System.out.println("夏日炎炎");
break;
case "秋天":
System.out.println("秋风瑟瑟");
break;
case "冬天":
System.out.println("东雪皑皑");
break;
default:
System.out.println("四季不分");
break;
}

  注意:每一个case语句后面都要有一个break,当控制表达式的值不等于任何一个case后面的值时,会进入default分支。

  当然,也有一些情况case后面时不需要break的。看下面的例子:

        char score = 'B';
switch (score) {
case 'A':
case 'B':
System.out.println("及格");
break;
case 'C':
case 'D':
System.out.println("不及格");
break;
default:
System.out.println("成绩输入错误");
break;
}

  当score是A或B时,都是及格,当是C或D时,都是不及格。

循环结构

while语句

  结构如下:

        while (expression) {
statement;
}

  其中,expression的结果必须是布尔值。while循环每次执行循环体(statement)之前,都要对expression求值,若值为true,才会进入循环体,否则while循环结束。

  例子:

        int count = 0;
while (count <= 10) {
System.out.println(count);
count++;
}
System.out.println("count已结大于10了,现在为11");

  程序打印11次count后,执行最后一句。

do while循环

  do while循环和while循环的区别在于:while循环线判断循环条件,如果条件为真才执行循环体。do while循环是先执行循环体,再判断循环条件,如果循环体为真,则再执行循环体,如此往复。

  结构如下:

        do {
statement;
} while (condition);

  将上面的例子重写:

        int count = 0;
do {
System.out.println(count);
count++;
} while (count <= 10);
System.out.println("count已结大于10了,现在为11");

for语句

  结构如下:

        for(语句1;语句2;语句3){
循环体
}

  其执行顺序:

  1. 先执行语句1,并且只执行一次
  2. 执行语句2,语句2 是条件控制语句,结果为布尔值,若为false,循环结束,不会执行语句3和循环体了。
  3. 若语句2的结果为true,则执行循环体
  4. 执行循环体后,会执行语句3
  5. 再执行语句2,如此往复,重复2345

  例子:

        int c = 0;
for (int i = 0; i < 10; i++,c++) {
System.out.println("执行循环体"); //打印了10次
}
System.out.println(c); //

  如下语句是合法的,只不过是死循环:

        for(;;){
System.out.println("我是死循环");
}

  也就是说语句1、语句2、语句3不是必须的,这个可以根据情况而定。

控制循环语句

break语句

  break语句作用是跳出当前循环,如下:

        int c = 0;
for(;;c++){
if(c > 10){
break;
}
System.out.println("我不是死循环");
}

  本来for语句构成了死循环,但是现在加了break,就不是死循环了,当c>10 时,就会执行break,跳出for循环。

  break 可以用在任何循环语句中,也会用在switch语句中。

continue语句

  continue语句不会跳出当前循环,只是忽略本次循环。

  例子:

        int c = 0;
while(c < 10){
c++;
if(c == 5){
continue;
}
System.out.println("执行循环体");
}

  本来回打印10次”执行循环体“,但是当c等于5时,忽略了本次循环,下面的语句都不会执行了,直接进行下次循环,所以少打印了一次,最后只打印了9次。

Java学习笔记五——流程控制的更多相关文章

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

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

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

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

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

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

  4. Java学习笔记之---流程控制语句

    Java学习笔记之---流程控制语句 (一)循环语句 (1)if语句 if(布尔表达式){ //如果布尔表达式为true将执行的语句 } if(i%2!=0){ System.out.println( ...

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

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

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

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

  7. JavaSE学习笔记03流程控制

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

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

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

  9. 0039 Java学习笔记-多线程-线程控制、线程组

    join线程 假如A线程要B线程去完成一项任务,在B线程完成返回之前,不进行下一步执行,那么就可以调用B线程的join()方法 join()方法的重载: join():等待不限时间 join(long ...

随机推荐

  1. Chain Of Responsibility(职责连)-对象行为型模式

    1.意图 使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系.将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止. 2.动机 给多个对象处理一个请求的机会,从而 ...

  2. 关于iOS10 Xcode8真机测试项目出现的问题 "code signing is required for product type 'xxxxx' in SDK 'iOS 10.0"..

    昨天用真机测试项目出现这样的错误,在网上搜集了一些信息,所以将自己的经验分享出来帮助更多的人. 第一步: 检查你的1和2是否填写正确,如果你是运行别人的项目,BundleIdentifier要和你的X ...

  3. js-url打开方式

    引用自 : 老张的博客 *.location.href 用法: top.location.href="url"          在顶层页面打开url(跳出框架) self.loc ...

  4. mysql中的SUBSTRING_INDEX

    SUBSTRING_INDEX(str,delim,count) Returns the substring from string str before count occurrences of t ...

  5. [题解]codevs1001 舒适的路线

    h3 { font-family: Consolas; color: #339966 } .math { font-family: Consolas; color: gray } 题目描述 Descr ...

  6. laravel之缓存配置文件

    清除之前配置文件缓存,并生成新的配置文件缓存, get bash: php artisan config:cache 如下图,以上命令会将config文件夹下所有的文件内容缓存到bootstrap/c ...

  7. Linux 安装git

    0.安装git前: 先去git 官网上看一眼,Linux怎么安装git , 原来非常简单,只需要输入命令即可,但是不同的linux 版本对应的命令不一样: 命令行查看Linux版本: $ cat /e ...

  8. DailyRollingFileAppender的使用

    DailyRollingFileAppender是日志记录软件包Log4J中的一个Appender,它能够按一定的频度滚动日志记录文件. 如果您不熟悉Log4J,建议阅读一下 使用Log4j进行日志记 ...

  9. android 使用LinearGradient进行字体渐变的效果

    有这么一种效果,一串字符有一束白光从字体上面闪光的效果.如下图显示: 就像上面的显示效果一样一束白光闪过,这种效果主要还是使用了LinearGradient类来进行的 LinearGradient也称 ...

  10. Java线程池入门

    序 为什么要用线程池?什么情况下才会用到线程池? 并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时间. 因此 ...