07 程序执行流程 v1.0

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

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 技术具有卓越的通用性、高效性、平台移植性和安全性。

    3169 引用 • 8208 回帖
  • 开发
    37 引用 • 156 回帖 • 2 关注

相关帖子

欢迎来到这里!

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

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

推荐标签 标签

  • DevOps

    DevOps(Development 和 Operations 的组合词)是一组过程、方法与系统的统称,用于促进开发(应用程序/软件工程)、技术运营和质量保障(QA)部门之间的沟通、协作与整合。

    45 引用 • 25 回帖 • 1 关注
  • Q&A

    提问之前请先看《提问的智慧》,好的问题比好的答案更有价值。

    7017 引用 • 31715 回帖 • 220 关注
  • 知乎

    知乎是网络问答社区,连接各行各业的用户。用户分享着彼此的知识、经验和见解,为中文互联网源源不断地提供多种多样的信息。

    10 引用 • 66 回帖
  • 链书

    链书(Chainbook)是 B3log 开源社区提供的区块链纸质书交易平台,通过 B3T 实现共享激励与价值链。可将你的闲置书籍上架到链书,我们共同构建这个全新的交易平台,让闲置书籍继续发挥它的价值。

    链书社

    链书目前已经下线,也许以后还有计划重制上线。

    14 引用 • 257 回帖 • 1 关注
  • IBM

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

    16 引用 • 53 回帖 • 130 关注
  • 小薇

    小薇是一个用 Java 写的 QQ 聊天机器人 Web 服务,可以用于社群互动。

    由于 Smart QQ 从 2019 年 1 月 1 日起停止服务,所以该项目也已经停止维护了!

    34 引用 • 467 回帖 • 712 关注
  • Electron

    Electron 基于 Chromium 和 Node.js,让你可以使用 HTML、CSS 和 JavaScript 构建应用。它是一个由 GitHub 及众多贡献者组成的活跃社区共同维护的开源项目,兼容 Mac、Windows 和 Linux,它构建的应用可在这三个操作系统上面运行。

    15 引用 • 136 回帖 • 6 关注
  • Redis

    Redis 是一个开源的使用 ANSI C 语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value 数据库,并提供多种语言的 API。从 2010 年 3 月 15 日起,Redis 的开发工作由 VMware 主持。从 2013 年 5 月开始,Redis 的开发由 Pivotal 赞助。

    284 引用 • 248 回帖 • 123 关注
  • TensorFlow

    TensorFlow 是一个采用数据流图(data flow graphs),用于数值计算的开源软件库。节点(Nodes)在图中表示数学操作,图中的线(edges)则表示在节点间相互联系的多维数据数组,即张量(tensor)。

    20 引用 • 19 回帖 • 1 关注
  • API

    应用程序编程接口(Application Programming Interface)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。

    76 引用 • 429 回帖
  • Elasticsearch

    Elasticsearch 是一个基于 Lucene 的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于 RESTful 接口。Elasticsearch 是用 Java 开发的,并作为 Apache 许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。

    116 引用 • 99 回帖 • 250 关注
  • V2Ray
    1 引用 • 15 回帖 • 2 关注
  • 黑曜石

    黑曜石是一款强大的知识库工具,支持本地 Markdown 文件编辑,支持双向链接和关系图。

    A second brain, for you, forever.

    10 引用 • 88 回帖
  • 链滴

    链滴是一个记录生活的地方。

    记录生活,连接点滴

    143 引用 • 3752 回帖
  • Latke

    Latke 是一款以 JSON 为主的 Java Web 框架。

    70 引用 • 533 回帖 • 735 关注
  • 人工智能

    人工智能(Artificial Intelligence)是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门技术科学。

    77 引用 • 159 回帖
  • LeetCode

    LeetCode(力扣)是一个全球极客挚爱的高质量技术成长平台,想要学习和提升专业能力从这里开始,充足技术干货等你来啃,轻松拿下 Dream Offer!

    209 引用 • 72 回帖
  • ngrok

    ngrok 是一个反向代理,通过在公共的端点和本地运行的 Web 服务器之间建立一个安全的通道。

    7 引用 • 63 回帖 • 613 关注
  • ActiveMQ

    ActiveMQ 是 Apache 旗下的一款开源消息总线系统,它完整实现了 JMS 规范,是一个企业级的消息中间件。

    19 引用 • 13 回帖 • 641 关注
  • 资讯

    资讯是用户因为及时地获得它并利用它而能够在相对短的时间内给自己带来价值的信息,资讯有时效性和地域性。

    54 引用 • 85 回帖
  • 快应用

    快应用 是基于手机硬件平台的新型应用形态;标准是由主流手机厂商组成的快应用联盟联合制定;快应用标准的诞生将在研发接口、能力接入、开发者服务等层面建设标准平台;以平台化的生态模式对个人开发者和企业开发者全品类开放。

    15 引用 • 127 回帖 • 1 关注
  • 新人

    让我们欢迎这对新人。哦,不好意思说错了,让我们欢迎这位新人!
    新手上路,请谨慎驾驶!

    51 引用 • 226 回帖
  • Openfire

    Openfire 是开源的、基于可拓展通讯和表示协议 (XMPP)、采用 Java 编程语言开发的实时协作服务器。Openfire 的效率很高,单台服务器可支持上万并发用户。

    6 引用 • 7 回帖 • 94 关注
  • JavaScript

    JavaScript 一种动态类型、弱类型、基于原型的直译式脚本语言,内置支持类型。它的解释器被称为 JavaScript 引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在 HTML 网页上使用,用来给 HTML 网页增加动态功能。

    713 引用 • 1174 回帖 • 104 关注
  • Docker

    Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的操作系统上。容器完全使用沙箱机制,几乎没有性能开销,可以很容易地在机器和数据中心中运行。

    483 引用 • 906 回帖
  • PHP

    PHP(Hypertext Preprocessor)是一种开源脚本语言。语法吸收了 C 语言、 Java 和 Perl 的特点,主要适用于 Web 开发领域,据说是世界上最好的编程语言。

    165 引用 • 407 回帖 • 509 关注
  • Jenkins

    Jenkins 是一套开源的持续集成工具。它提供了非常丰富的插件,让构建、部署、自动化集成项目变得简单易用。

    51 引用 • 37 回帖 • 3 关注