初识Java—(八)流程控制(1)(java8入门教程)
wptr33 2024-11-16 01:27 22 浏览
任何一门编程语言都会提供两种基本的流程控制结构:分支结构和循环结构。其中分支结构根据条件来选择性地执行某段代码,循环结构则用于实现根据循环条件重复执行某段代码。
Java中的分支结构语句为:if、switch
Java中的循环结构语句为:while、do while、for、foreach
Java中提供了break、continue来控制程序的循环结构
这里用到Scanner类。这里简单一说,后续很详细介绍。
Scanner scan = new Scanner(System.in);
int a = scan.nextInt();
4.1 顺序结构
顺序结构就是程序从上到下逐行的执行,中间没有任何判断和跳转。
举例1:
package com.langsin.test;
public class TestCar {
public static void main(String[] args) {
int a = 3;
int b = 5;
int c = a+b;
System.out.println("输出结果:"+c);
}
}
4.2方法以及剖析类
方法就是一段可重复调用的代码段,例如,有某段长度约100行的代码,要在多个地方使用此段代码,如果在各个地方都重复编写此部分代码,则肯定会比较麻烦,而且此部分代码如果进行修改,也比较困难,那么此时可以将些部分代码定义成一个方法,以供程序反复调用。方法在有些书籍称为函数,这两者本身并没有什么区别,是同样的概念,只是称呼方式不一样而已。
定义方法的定义格式:
修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2…) {
函数体;
return 返回值;
}
方法格式解释
(1)修饰符:比较多,后面会详细介绍。目前public static
(2)返回值类型:用于限定返回值的数据类型
(3)方法名:一个名称,为了方便我们调用方法
(4)参数类型:限定调用方法时传入参数的数据类型
(5)参数名:是一个变量,接收调用方法时传入的参数
(6)方法体:完成功能的代码
(7)return:结束方法以及返回方法指定类型的值
(8)返回值 程序被return带回的结果,返回给调用者
要特别注意的是,如果不需要传递参数到方法中,只要将括号写出,不必填入任何内容。此外,如果方法没有返回值,则在返回值类型处要明确写出void,此时,在方法中的return语句可以省略。方法执行完后无论是否存在返回值都将返回到方法的调用处并向下继续执行。
举例1:
package com.langsin.test;
public class TestCar {
public int getNum(int a,int b){
return a+b;
}
Public static void main(String[] args) {
TestCar test = new TestCar();
int result = test.getNum(5, 6);
System.out.println("计算后的结果为:"+result);
}
}
4.3 分支结构
Java语言使用if语句和switch语句来进行分支控制,其中if语句使用boolean表达式或boolean值来作为分支条件进行分支控制;switch语句则用于对多个数值进行匹配,从而实现分支。
4.2.1 if条件语句
if语句格式1 :
if(比较表达式) {
语句体;
}
执行流程:
先计算比较表达式的值,看其返回值是true还是false。
如果是true,就执行语句体;
如果是false,就不执行语句体;
if语句格式2:
if(比较表达式) {
语句体1;
}else {
语句体2;
}
执行流程:
首先计算比较表达式的值,看其返回值是true还是false。
如果是true,就执行语句体1;
如果是false,就执行语句体2;
注意:else后面是没有比较表达式的,只有if后面有。
if语句的格式3:
if(比较表达式1) {
语句体1;
}else if(比较表达式2) {
语句体2;
}else if(比较表达式3) {
语句体3;
}
...
else {
语句体n+1;
}
执行流程:
首先计算比较表达式1看其返回值是true还是false,
如果是true,就执行语句体1,if语句结束。
如果是false,接着计算比较表达式2看其返回值是true还是false,
如果是true,就执行语句体2,if语句结束。
如果是false,接着计算比较表达式3看其返回值是true还是false,
...
如果都是false,就执行语句体n+1
if语句的注意事项:
A:比较表达式无论简单还是复杂,结果必须是boolean类型
B:if语句控制的语句体如果是一条语句,大括号可以省略;
如果是多条语句,就不能省略。建议永远不要省略。
C:一般来说:有左大括号就没有分号,有分号就没有左大括号
举例1:
package com.langsin.test;
public class TestCar {
public static void main(String[] args) {
boolean flag = 5>3;
//使用变量,此种方式为常用方式
if(flag){
System.out.println("条件为真执行");
}
//使用常量
if(true){
System.out.println("使用常量,此代码永远会被执行");
}
//使用表达式,此种方式为常见使用方式
if(5>3){
System.out.println("表达式的结果为true时,代码会被执行");
}
//完整的if分支结构
int a = 5;
int b = 8;
if(a>b){
System.out.println("a的值大于b的值");
}else{
System.out.println("a的值不大于b的值");
}
//分支的嵌套使用
if(a>b){
if(b>0){
System.out.println("a的值大于b的值,并且b的值大于0");
}
}
//此代码段等价于上面的代码
if(a>b && b>0){
System.out.println("a的值大于b的值,并且b的值大于0");
}
//完整结构下的嵌套
if(a>b){
if(b>0){
System.out.println("a的值大于b的值,并且b的值大于0");
}else{
System.out.println("a的值大于b的值,但是b的值不大于0");
}
}else{
if(a>0){
System.out.println("a的值不大于b,并且a的值大于0");
}else{
System.out.println("a的值不大于b,并且a的值不大于0");
}
}
//if语句串联使用
if(a>b){
System.out.println("a的值大于b的值");
}else if(a>0){
System.out.println("a的值不大于b的值,并且a的值大于0");
}
}
}
4.2.2 switch分支语句
switch语句由一个控制表达式和多个case标签组成,表达式的数据类型只能是byte、short、int、char四个整数类型和枚举类型。JDK 1.7开始,可以接收String类型的值 。
switch语句格式:
switch(表达式) {
case 值1:
语句体1;
break;
case 值2:
语句体2;
break;
...
default:
语句体n+1;
break;
}
格式的解释:
switch:表示这是switch选择结构
表达式:这个地方的取值是有限定的
byte,short,int,char
JDK5以后可以是枚举
JDK7以后可以是字符串
case:后面跟的是要和表达式进行比较的值,这个值是常量,而且还得是唯一
语句体:要执行的代码
break:表示中断,结束的意思,可以控制switch语句的结束。
default:当所有的值都和表达式不匹配的时候,就执行default控制的语句。其实它就相当于if语句的else。
举例1:
package com.langsin.test;
public class TestCar {
public static void main(String[] args) {
int a = 1;
switch (a) {
case 1:
System.out.println("当key值为1时的运行代码段");
int x = 2;
int y = 3;
int z = x + y;
System.out.println("计算加法后的结果:"+z);
break;
case 2:
System.out.println("当key值为2时的运行代码段");
int x1 = 2;
int y1 = 3;
int z1 = x1 - y1;
System.out.println("计算减法后的结果:"+z1);
break;
default:
System.out.println("当key值不符合任意条件时,默认执行的代码段");
break;
}
}
}
switch语句的注意事项:
A:case后面只能是常量,不能是变量,而且,多个case后面的值不能出现相同的
B:default可以省略吗?
可以省略,但是不建议,因为它的作用是对不正确的情况给出提示。
特殊情况:
case就可以把值固定。
A,B,C,D
C:break可以省略吗?
可以省略,但是结果可能不是我们想要的。
会出现一个现象:case穿透。
最终我们建议不要省略
D:default一定要在最后吗?
不是,可以在任意位置。但是建议在最后。
E:switch语句的结束条件
a:遇到break就结束了
b:执行到末尾就结束了
相关推荐
- Linux高性能服务器设计
-
C10K和C10M计算机领域的很多技术都是需求推动的,上世纪90年代,由于互联网的飞速发展,网络服务器无法支撑快速增长的用户规模。1999年,DanKegel提出了著名的C10问题:一台服务器上同时...
- 独立游戏开发者常犯的十大错误
-
...
- 学C了一头雾水该咋办?
-
学C了一头雾水该怎么办?最简单的方法就是你再学一遍呗。俗话说熟能生巧,铁杵也能磨成针。但是一味的为学而学,这个好像没什么卵用。为什么学了还是一头雾水,重点就在这,找出为什么会这个样子?1、概念理解不深...
- C++基础语法梳理:inline 内联函数!虚函数可以是内联函数吗?
-
上节我们分析了C++基础语法的const,static以及this指针,那么这节内容我们来看一下inline内联函数吧!inline内联函数...
- C语言实战小游戏:井字棋(三子棋)大战!文内含有源码
-
井字棋是黑白棋的一种。井字棋是一种民间传统游戏,又叫九宫棋、圈圈叉叉、一条龙、三子旗等。将正方形对角线连起来,相对两边依次摆上三个双方棋子,只要将自己的三个棋子走成一条线,对方就算输了。但是,有很多时...
- C++语言到底是不是C语言的超集之一
-
C与C++两个关系亲密的编程语言,它们本质上是两中语言,只是C++语言设计时要求尽可能的兼容C语言特性,因此C语言中99%以上的功能都可以使用C++完成。本文探讨那些存在于C语言中的特性,但是在C++...
- 在C++中,如何避免出现Bug?
-
C++中的主要问题之一是存在大量行为未定义或对程序员来说意外的构造。我们在使用静态分析器检查各种项目时经常会遇到这些问题。但正如我们所知,最佳做法是在编译阶段尽早检测错误。让我们来看看现代C++中的一...
- ESL-通过事件控制FreeSWITCH
-
通过事件提供的最底层控制机制,允许我们有效地利用工具箱,适时选择使用其中的单个工具。FreeSWITCH是一个核心交换与混合矩阵,它周围有几十个模块提供各种功能特性。我们完全控制了所有的即时信息,这些...
- 物理老师教你学C++语言(中篇)
-
一、条件语句与实验判断...
- C语言入门指南
-
当然!以下是关于C语言入门编程的基础介绍和入门建议,希望能帮你顺利起步:C语言入门指南...
- C++选择结构,让程序自动进行决策
-
什么是选择结构?正常的程序都是从上至下顺序执行,这就是顺序结构...
- C++特性使用建议
-
1.引用参数使用引用替代指针且所有不变的引用参数必须加上const。在C语言中,如果函数需要修改变量的值,参数必须为指针,如...
- C++程序员学习Zig指南(中篇)
-
1.复合数据类型结构体与方法的对比C++类:...
- 研一自学C++啃得动吗?
-
研一自学C++啃得动吗?在开始前我有一些资料,是我根据网友给的问题精心整理了一份「C++的资料从专业入门到高级教程」,点个关注在评论区回复“888”之后私信回复“888”,全部无偿共享给大家!!!个人...
- C++关键字介绍
-
下表列出了C++中的常用关键字,这些关键字不能作为变量名或其他标识符名称。1、autoC++11的auto用于表示变量的自动类型推断。即在声明变量的时候,根据变量初始值的类型自动为此变量选择匹配的...
- 一周热门
-
-
C# 13 和 .NET 9 全知道 :13 使用 ASP.NET Core 构建网站 (1)
-
因果推断Matching方式实现代码 因果推断模型
-
git pull命令使用实例 git pull--rebase
-
git pull 和git fetch 命令分别有什么作用?二者有什么区别?
-
面试官:git pull是哪两个指令的组合?
-
git 执行pull错误如何撤销 git pull fail
-
git fetch 和git pull 的异同 git中fetch和pull的区别
-
git pull 之后本地代码被覆盖 解决方案
-
还可以这样玩?Git基本原理及各种骚操作,涨知识了
-
git命令之pull git.pull
-
- 最近发表
- 标签列表
-
- git pull (33)
- git fetch (35)
- mysql insert (35)
- mysql distinct (37)
- concat_ws (36)
- java continue (36)
- jenkins官网 (37)
- mysql 子查询 (37)
- python元组 (33)
- mysql max (33)
- vba instr (33)
- mybatis 分页 (35)
- vba split (37)
- redis watch (34)
- python list sort (37)
- nvarchar2 (34)
- mysql not null (36)
- hmset (35)
- python telnet (35)
- python readlines() 方法 (36)
- munmap (35)
- docker network create (35)
- redis 集合 (37)
- python sftp (37)
- setpriority (34)