07 程序执行流程 v1.0

本贴最后更新于 2478 天前,其中的信息可能已经沧海桑田

1.程序运行流程

计算机程序代码按照一定的次序运行的过程称为程序流程。

流程分类:顺序结构、分支结构、循环结构

2.顺序结构

按照语句出现的次序依次执行的程序结构,称为顺序结构

3.分支结构

又称为选择结构,有条件的执行或跳过特定的语句或语句块,实现有选择的执行的流程控制

4.if 语句

if 语句用于实现分支结构,else 不是必需的

if 语句的三种形式

使用 if 语句实现单路分支结构

if (< 条件表达式 >) {

[< 语句块 >]

}

使用 if-else 语句实现双路分支结构

if (< 条件表达式 >) {

[< 语句块 >]

}else {

[< 语句块 >]

}

使用 if-else 语句实现多路分支结构

if (< 条件表达式 >) {

[< 语句块 >]

}

……

else if ( 条件 ) {

[< 语句块 >]

}

[else {

[< 语句块 >]

}] //中括号部分表示可选,可以省略的部分

5.switch 语句

用于实现多路分支结构

switch(< 表达式 >){

case < 常量 1>:

[< 语句块 1>];

break;

case < 常量 2>:

[< 语句块 2>];

break;

……

case < 常量 n-1>:

[< 语句块 n-1>];

break;

[default: < 语句块 n>]

}

  • 表达式的返回值必须是以下几种类型之一:

byte short int char 枚举类型 封装类类型 String 类型

  • case 后面必须跟着不同的常量
  • break 语句用来跳出 switch 语句,break 不能丢!
  • default 语句是可选语句,位置在上面也是没有影响的!

6.三目运算的分支结构:

int result = 4 >5 ? (1+2) : (2-1);

int country = 1;

int privince = 2;

int result = 5>3 ? country++ : privince++;

没有选中的分支并不会被执行!

7.循环结构

在一定的条件下会重复执行特定代码的一种程序结构

8.for 循环

for(< 初始化表达式 >;< 循环条件表达式 >;< 迭代表达式 >){

[< 循环语句或者语句块 >]

}

  1. 执行流程
  2. 执行初始化表达式
  3. 计算循环条件表达式的值,如果为 true,则继续执行第 3 步,否则结束循环
  4. 执行循环体语句
  5. 执行迭代表达式,然后返回第 2 步继续执行

多个初始化参数的 for 循环

public static void forMutiV(){

PrintStream out = System.out;

out.println("For muti-v demo: ");

//for (int i = 1,j=9; (i <= 9)&&(j<=9); i++,j--) {

for (int i = 1,j=20; i <= 9; i++,j-=2) { //j-=2,使用自定义的增减步长

out.print(j+ " * "+ i +" = " + i * j + "\t");

}

out.println();

System.out.println();

}

9.while、do-while 语句

while(< 条件表达式 >){

[< 循环语句或者语句块 >]

}

do{

[< 循环语句或者语句块 >]

}while(< 条件表达式 >);

注意事项

A.do-while 语句至少执行循环体一次,while 有可能一次也不执行循环体

B.循环外定义循环变量;循环体内要有循环变量的迭代表达式,否则会形成死循环

10.for-each 循环 主要用于迭代数值或集合中的元素,从 JDK5.0 开始引入该语句,又称为增强 for 循环

for(< 迭代变量声明 > : < 数值或集合 >){

[< 循环语句或者语句块 >]

}

String[] strs = { "AA", "BB", "CC" }; //声明 String 类型的数组 strs 并赋值

for (String string : strs) {

System.out.println("数组的元素为:" + string);

}

11.continue、break、return 语句

continue 语句 结束所在的循环语句的本次运行,即跳过其后的循环体语句,并开始下一次循环

break 语句 终止所在的 switch 语句或者循环语句的运行

return 直接终止了方法的执行!!------但是它逃脱不了异常处理的 finally 语句块;

12.所有条件判断()后面紧跟的{}语句块,只有在括号内的最终值为 boolean 型的 true 才会执行!!

13.打破循环有哪些方式:

A.使用表达式的循环条件打破; ----打破循环条件所在的循环 eg:i <=5

B.使用 break 语句打破; ----打破循环条件所在的循环,多和 if 搭配

C.使用 return 语句打破,不仅打破循环,而且退出方法了 ----打破所有的循环

D.使用 flag 标志位,循环条件括号里面用此 boolean 型的标志位变量,

改变标志位的值,从而打破循环。----比较友好温柔的方式

其他知识:

A.Eclipse 中:ctrl+alt+ 向下箭头,复制选中的行;

B.Eclipse 的自动提示配置:Java、JavaScript、html,XML

修改编辑器的提示触发值为 .abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ@({[<&=:

手动触发的快捷键是 alt+/

C.Eclipse 中:在代码区,输入 syso 回车,自动完成:System.out.println();

练习题:

1.求 1-100 之间的数之和;

2.打印 1-100 之间的 1、7、13、19....的数;

3.打印实心等腰三角形,三角形的大小可以随着输入参数的改变而改变!

4.打印乘法口诀表;

package com.ddb.javacore.branch;

import java.util.Scanner;

public class PrintTriangle {

public static void printStars(Integer lgth,int hight) {

int tmp= hight -lgth;

lgth--;

if (lgth < 0) {

return;

}

for (int i = 1; i <= hight*2+1; i++) {

int min = hight + 1 - tmp;

int max = hight + 1 + tmp;

if (i >= min && i <= max) {

System.out.print("*");

} else {

System.out.print(" ");

}

}

System.out.println("\n");

printStars(lgth, hight);

}

public static void main(String[] args) {

// TODO Auto-generated method stub

System.out.println("请输入三角形的高:");

Scanner input = new Scanner(System.in);

int hight = input.nextInt();

int length = hight * 2 + 1;

System.out.println("三角形的底边长是:" +length);

Integer lgth = hight;

printStars(lgth, hight);

}

}

  • Java

    Java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的。Java 技术具有卓越的通用性、高效性、平台移植性和安全性。

    3168 引用 • 8207 回帖
  • 开发
    37 引用 • 156 回帖 • 2 关注

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...

推荐标签 标签

  • 30Seconds

    📙 前端知识精选集,包含 HTML、CSS、JavaScript、React、Node、安全等方面,每天仅需 30 秒。

    • 精选常见面试题,帮助您准备下一次面试
    • 精选常见交互,帮助您拥有简洁酷炫的站点
    • 精选有用的 React 片段,帮助你获取最佳实践
    • 精选常见代码集,帮助您提高打码效率
    • 整理前端界的最新资讯,邀您一同探索新世界
    488 引用 • 383 回帖 • 3 关注
  • HTML

    HTML5 是 HTML 下一个的主要修订版本,现在仍处于发展阶段。广义论及 HTML5 时,实际指的是包括 HTML、CSS 和 JavaScript 在内的一套技术组合。

    103 引用 • 294 回帖
  • 电影

    这是一个不能说的秘密。

    120 引用 • 597 回帖
  • Vim

    Vim 是类 UNIX 系统文本编辑器 Vi 的加强版本,加入了更多特性来帮助编辑源代码。Vim 的部分增强功能包括文件比较(vimdiff)、语法高亮、全面的帮助系统、本地脚本(Vimscript)和便于选择的可视化模式。

    27 引用 • 66 回帖 • 1 关注
  • VirtualBox

    VirtualBox 是一款开源虚拟机软件,最早由德国 Innotek 公司开发,由 Sun Microsystems 公司出品的软件,使用 Qt 编写,在 Sun 被 Oracle 收购后正式更名成 Oracle VM VirtualBox。

    10 引用 • 2 回帖 • 6 关注
  • 微信

    腾讯公司 2011 年 1 月 21 日推出的一款手机通讯软件。用户可以通过摇一摇、搜索号码、扫描二维码等添加好友和关注公众平台,同时可以将自己看到的精彩内容分享到微信朋友圈。

    129 引用 • 793 回帖 • 1 关注
  • SpaceVim

    SpaceVim 是一个社区驱动的模块化 vim/neovim 配置集合,以模块的方式组织管理插件以
    及相关配置,为不同的语言开发量身定制了相关的开发模块,该模块提供代码自动补全,
    语法检查、格式化、调试、REPL 等特性。用户仅需载入相关语言的模块即可得到一个开箱
    即用的 Vim-IDE。

    3 引用 • 31 回帖 • 71 关注
  • JetBrains

    JetBrains 是一家捷克的软件开发公司,该公司位于捷克的布拉格,并在俄国的圣彼得堡及美国麻州波士顿都设有办公室,该公司最为人所熟知的产品是 Java 编程语言开发撰写时所用的集成开发环境:IntelliJ IDEA

    18 引用 • 54 回帖 • 1 关注
  • flomo

    flomo 是新一代 「卡片笔记」 ,专注在碎片化时代,促进你的记录,帮你积累更多知识资产。

    3 引用 • 80 回帖 • 1 关注
  • Flume

    Flume 是一套分布式的、可靠的,可用于有效地收集、聚合和搬运大量日志数据的服务架构。

    9 引用 • 6 回帖 • 594 关注
  • danl
    62 关注
  • Quicker

    Quicker 您的指尖工具箱!操作更少,收获更多!

    19 引用 • 73 回帖 • 1 关注
  • etcd

    etcd 是一个分布式、高可用的 key-value 数据存储,专门用于在分布式系统中保存关键数据。

    5 引用 • 26 回帖 • 492 关注
  • C++

    C++ 是在 C 语言的基础上开发的一种通用编程语言,应用广泛。C++ 支持多种编程范式,面向对象编程、泛型编程和过程化编程。

    106 引用 • 152 回帖
  • SQLServer

    SQL Server 是由 [微软] 开发和推广的关系数据库管理系统(DBMS),它最初是由 微软、Sybase 和 Ashton-Tate 三家公司共同开发的,并于 1988 年推出了第一个 OS/2 版本。

    19 引用 • 31 回帖 • 3 关注
  • Wide

    Wide 是一款基于 Web 的 Go 语言 IDE。通过浏览器就可以进行 Go 开发,并有代码自动完成、查看表达式、编译反馈、Lint、实时结果输出等功能。

    欢迎访问我们运维的实例: https://wide.b3log.org

    30 引用 • 218 回帖 • 606 关注
  • InfluxDB

    InfluxDB 是一个开源的没有外部依赖的时间序列数据库。适用于记录度量,事件及实时分析。

    2 引用 • 55 关注
  • IBM

    IBM(国际商业机器公司)或万国商业机器公司,简称 IBM(International Business Machines Corporation),总公司在纽约州阿蒙克市。1911 年托马斯·沃森创立于美国,是全球最大的信息技术和业务解决方案公司,拥有全球雇员 30 多万人,业务遍及 160 多个国家和地区。

    16 引用 • 53 回帖 • 123 关注
  • Vditor

    Vditor 是一款浏览器端的 Markdown 编辑器,支持所见即所得、即时渲染(类似 Typora)和分屏预览模式。它使用 TypeScript 实现,支持原生 JavaScript、Vue、React 和 Angular。

    313 引用 • 1666 回帖 • 1 关注
  • ReactiveX

    ReactiveX 是一个专注于异步编程与控制可观察数据(或者事件)流的 API。它组合了观察者模式,迭代器模式和函数式编程的优秀思想。

    1 引用 • 2 回帖 • 126 关注
  • Mac

    Mac 是苹果公司自 1984 年起以“Macintosh”开始开发的个人消费型计算机,如:iMac、Mac mini、Macbook Air、Macbook Pro、Macbook、Mac Pro 等计算机。

    164 引用 • 594 回帖
  • abitmean

    有点意思就行了

    22 关注
  • Sphinx

    Sphinx 是一个基于 SQL 的全文检索引擎,可以结合 MySQL、PostgreSQL 做全文搜索,它可以提供比数据库本身更专业的搜索功能,使得应用程序更容易实现专业化的全文检索。

    1 引用 • 179 关注
  • WebClipper

    Web Clipper 是一款浏览器剪藏扩展,它可以帮助你把网页内容剪藏到本地。

    3 引用 • 9 回帖 • 6 关注
  • CentOS

    CentOS(Community Enterprise Operating System)是 Linux 发行版之一,它是来自于 Red Hat Enterprise Linux 依照开放源代码规定释出的源代码所编译而成。由于出自同样的源代码,因此有些要求高度稳定的服务器以 CentOS 替代商业版的 Red Hat Enterprise Linux 使用。两者的不同在于 CentOS 并不包含封闭源代码软件。

    238 引用 • 224 回帖 • 1 关注
  • Maven

    Maven 是基于项目对象模型(POM)、通过一小段描述信息来管理项目的构建、报告和文档的软件项目管理工具。

    185 引用 • 318 回帖 • 346 关注
  • 周末

    星期六到星期天晚,实行五天工作制后,指每周的最后两天。再过几年可能就是三天了。

    14 引用 • 297 回帖 • 1 关注