java基础讲义03
java基础讲义
- 一 流程控制
- 1.1流程控制语句介绍
- 1.2顺序结构
- 二 选择控制
- 2.1 选择结构介绍
- 2.2 选择语句if
- 2.2.1 格式1
- 2.2.2 if格式2
- 2.2.3 if格式3
- 2.3 选择语句switch
- 2.3.1 switch语句介绍
- 2.3.2 switch注意事项
- 2.3.3 switch面试题
- 2.3.4 if语句与switch语句区别
- 三 循环语句
- 3.1 循环语句介绍及分类
- 3.2 for循环
- 3.3 循环语句while
- 3.4 循环语句do...while
- 3.5 循环语句区别
- 3.6 多重循环语句
- 3.6.1 多重循环介绍
- 3.6.1 多重循环案例
- 3.7 死循环语句
- 3.8 控制跳转语句
- 3.8.1 控制语句介绍
- 3.8.2 案例演示
一 流程控制
1.1流程控制语句介绍
一个java程序有很多条语句组成,流程控制语句是用来控制程序中的各语句执行的顺序,通过流程语句控制让
程序执行顺序达到我们想要实现的功能。
其流程控制方式采用结构化程序设计中规定的三种基本流程结构:
顺序结构
选择结构
循环结构
1.2顺序结构
顺序结构介绍
是程序中最简单最基本的流程控制,没有特定的语法结构,按照代码的先后顺序,依次执行,程序中大多数的代码都是这样执行的。
总结:写在前面的先执行,写在后面的后执行
public static void main(String[] args){System.out.println("买菜");System.out.println("摘菜");System.out.println("洗菜");System.out.println("切菜");System.out.println("配菜");System.out.println("炒菜");System.out.println("吃饭");System.out.println("吃完了");System.out.println("锅和碗一起扔了,就可以不用洗了O(∩_∩)O");
}
二 选择控制
2.1 选择结构介绍
选择也被称为分支结构,选择结构有特定的语法规则,代码要执行具体的逻辑运算进行判断,逻辑运算的结果有两个,所以产生选择,按照不同的选择执行不同的代码。
2.2 选择语句if
2.2.1 格式1
if(逻辑表达式或boolean类型的值){语句体;
}
先计算比较表达式的值,看其返回值是true还是false。
true:行语句体
false:不执行语句体
流程图:
//判断两个变量是否相同
public static void main(String[] args){// 定义两个变量
int a = 1;
int b = 2;
//判断两个变量是否相等
if (a == b){System.out.println("a等于b");
}
System.out.println("程序运行完毕!");
}
1.比较表达式无论简单还是复杂,结果必须是boolean类型
2.if语句控制的语句体如果是一条语句,大括号可以省略;如果是多条语句,就不能省略。建议永远不要省略。
2.2.2 if格式2
if(比较表达式) {
语句体1;
}else {
语句体2;
}首先计算比较表达式的值,看其返回值是true还是false。
true:执行语句体1
false:执行语句体2
流程图:
判断一个数是奇数还是偶数
public static void main(String[] args){// 判断给定的数据是奇数还是偶数
// 定义变量int a = 1;if(a % 2 == 0) {System.out.println("a变量是一个偶数");} else{System.out.println("a变量是一个奇数");}System.out.println("程序运行完毕!");
}
三元格式:
boolean flag = a % 2 == 0 ? true : false
2.2.3 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语句结束。else是可以省略,但是不建议省略。
首先判断关系表达式1看其结果是true还是false
true:执行语句体1,if语句结束
false:继续判断关系表达式2看其结果是true还是false
true:执行语句体2,if语句结束
false:就继续判断关系表达式…看其结果是true还是false
false:执行语句体n+1
流程图:
案例
判断学生成绩等级
90~100 优秀
80~89 良
70~79 中
60~69 及格
0~59 差
int score = 80;
if( score >= 90 && score <= 100 ){System.out.println("优秀") ;
}else if(score >= 80 && score <= 89 ){System.out.println("良") ;
}else if(score >= 70 && score <= 79 ){System.out.println("中") ;
}else if(score >= 60 && score <= 69 ){System.out.println("及格") ;
}else {System.out.println("你真的好差,简直差得一匹啊!o(╥﹏╥)o") ;
}
2.3 选择语句switch
2.3.1 switch语句介绍
一个 switch 语句允许测试一个变量等于多个值时的情况。每个值称为一个case,且被测试的变量会对每个switch case 进行检查。
switch语句格式
switch(表达式) {
case 值1 :
语句体1 ;
break ;
case 值2 :
语句体2 ;
break ;
case 值3 :
语句体3 ;
break ;
…
default:
语句体 n + 1 ;
break ;
}
1.switch表示这是switch语句
表达式的取值:byte,short,int,char
JDK5以后可以是枚举(什么是枚举,以后再讲)
JDK7以后可以是String
2.case后面跟的是要和表达式进行比较的值
3.语句体部分可以是一条或多条语句
4.break表示中断,结束的意思,可以结束switch语句
5.default语句表示所有情况都不匹配的时候,就执行该处的内容,和if语句的else相似
执行流程
先计算表达式的值,依次和case后面的值进行比较,如果匹配成功就是case中的语句体,遇到break结束。
如果和所有的case后面的值都不能匹配成功,就执行default中的语句体后结束程序。
流程图
案例
public static void main(final String[] args) {final int a = 2;/**
星期二
星期三
星期四
星期五
星期六*/switch (a) {case 1:System.out.println("星期一");case 2:System.out.println("星期二");case 3:System.out.println("星期三");case 4:System.out.println("星期四");case 5:System.out.println("星期五");case 6:System.out.println("星期六");}}
2.3.2 switch注意事项
1.case后面只能是常量,不能是变量,而且,多个case后面的值不能出现相同的
2.default可以省略吗?
可以省略,但是不建议,因为它的作用是对不正确的情况给出提示。
3.break可以省略吗?
可以省略,但是结果可能不是我们想要的。
会出现一个现象:case穿透。
最终我们建议不要省略
4.default一定要在最后吗?
不是,可以在任意位置。但是建议在最后。
5.switch语句的结束条件
遇到break就结束
执行到末尾就结束
2.3.3 switch面试题
byte可以作为switch的表达式吗? 可以
long可以作为switch的表达式吗? 不可以
String可以作为switch的表达式吗? 可以
2.3.4 if语句与switch语句区别
在做判断的时候,我们有两种选择,if语句和switch语句,那么,我们到底该如何选择使用那种语句呢?
if语句使用场景:
针对结果是boolean类型的判断
针对一个范围的判断
针对几个常量值的判断
switch语句使用场景:
针对几个常量值的判断
三 循环语句
3.1 循环语句介绍及分类
循环语句介绍
循环语句的作用是可以让一段代码(语句)重复执行,重复执行的次数可以根据需求进行控制。
循环语句分类
for循环
while循环
do…while循环
3.2 for循环
for循环格式
for(初始化表达式语句;判断条件语句;控制条件语句) {
循环体语句;
}
执行流程
1.先执行初始化表达式语句,只会执行一次
2.执行判断条件语句,看其返回值是true还是false
如果是true,就继续执行
如果是false,就结束循环
3.执行循环体语句;
4.执行控制条件语句
5.继续判断条件语句
判断1949到2022有多少个闰年(4年一闰,百年不闰;400年一闰)
public static void main(final String[] args) {int num = 0;for (int a = 1949; a <= 2022; a++) {if (a % 4 == 0 && a % 100 != 0 || a % 400 == 0) {num += 1;} else {continue;}}System.out.println("一共有" + num + "闰年");}
3.3 循环语句while
while语句格式
初始化条件语句;
while(判断条件语句) {
循环体语句;
控制条件语句;
}
while执行流程
a:执行初始化条件语句;
b:执行判断条件语句,看其返回值是true还是false
如果是true,就继续执行
如果是false,就结束循环
c:执行循环体语句;
d:执行控制条件语句
e:回到b继续
循环输出10次helloworld
int x = 1 ;
// 使用while循环
while( x <= 10 ){System.out.println("HelloWorld!") ;
x++ ;
}
3.4 循环语句do…while
do…while格式
初始化条件语句;
do {
循环体语句;
控制条件语句;
}while(判断条件语句);
执行流程
执行初始化条件语句;
执行循环体语句;
执行控制条件语句;
执行判断条件语句,看其返回值是true还是false
true,就继续执行
false,就结束循环
流程图
循环输出10次Helloworld
int y = 1 ;
do {System.out.println("HelloWorld") ;
y++ ;
}while( y <= 3) ;
3.5 循环语句区别
1.do…while循环至少执行一次循环体。
而for,while循环必须先判断条件是否成立,然后决定是否执行循环体语句。
2.如果你想在循环结束后,继续使用控制条件的那个变量,用while循环,否则用for循环。不知道改用谁优
先用for循环。
因为for循环中变量及早的从内存中消失,可以提高内存的使用效率。
while循环的变量是定义在类里面的,需要等整个类执行完后,变量才会消失;当然for循环的变量也可以定义到类里面,建议定义在for循环里面
3.建议优先考虑for循环,然后是while循环 ,最后是do…while循环
3.6 多重循环语句
3.6.1 多重循环介绍
循环里面还有循环,如for循环中且套for循环或且套while循环等。
总循环次数 = 外循环次数 * 内循环次数
格式:
for(初始化表达式;条件判断表达式;控制条件表达式){
for(初始化表达式;条件判断表达式;控制条件表达式){
}
}
3.6.1 多重循环案例
九九乘法表
public static void main(final String[] args) {for (int i = 0; i <= 9; i++) {for (int j = 0; j <= i; j++) {final int num = i * j;System.out.print(i + "*" + j + "=" + num + " ");}System.out.println();}}
如何理解多重for循环的过程
分析九九乘法表的执行流程
1.执行int i=0;i<=9;满足条件,进入第一层for循环里面;
2.(当在语句体里面的第一句不是for循环,则执行那句话,按着顺序执行的流程)执行int j=0;j<=i,满足条件,进入第二层for循环里面;
3.执行第二层for循环里面的语句,直到不满足条件为止,跳出第二层for循环;
4.第一层for循环执行控制条件语句,继续判断第一层
…
总结,进入第二层for循环后,需一直执行到第二层for循环不满足条件为止才跳出第二层for循环,继续接下来的流程
3.7 死循环语句
死循环介绍
判断条件语句的结果永远都为true,那么循环体会一直无休止的执行下去。
死循环可能导致系统资源占用过高及系统全盘崩溃。
简单理解:判断条件一直为true
while(true){...}
for(;;){...}
3.8 控制跳转语句
3.8.1 控制语句介绍
什么是控制语句
控制语句的目的是为了控制程序跳转、中断等操作,goto是java中保留字目前还不能用,但java中提供了
break、continue、return来实现控制语句的跳转和中断。
控制跳转语句的分类
break:
中断,结束单层循环,是单层
continue
继续,结束本次循环继续下一次循环
return
返回,结束方法执行
1.break和continue关键字不影响for循环后面的语句执行
2.return是结束当前方法,for循环结束同时整个方法也结束了,一般程序会将return放在最后
3.8.2 案例演示
break演示
for(int x = 1 ; x <= 10 ; x++){if(x == 3){break ;}System.out.println("HelloWorld") ;//第一次能被3整除的时候,这条语句不会执行,整个for循环结束
}
continue演示
for(int x = 1; x <= 10; x++) {if( x % 3 == 0) {continue;}System.out.println("HelloWorld");//能被3整除的时候,这条语句就不会执行
}
return演示
for(int x = 1; x <= 10; x++) {if( x % 3 == 0) {return;
}
System.out.println("HelloWorld");//第一次能被3整除的时候,这条语句不会执行,整个for循环结束,整个方法也结束
}
java基础讲义03相关推荐
- JAVA学习-java基础讲义02
java基础讲义02 一 进制 1.1 进制介绍 1.2 二进制 1.3 任意进制到十进制转换 1.4 十进制到任意进制之间的转换 1.5 快速转换法 1.6 有符号数据表示法 二 Java变量和数据 ...
- JAVA学习-java基础讲义01
java基础讲义 一 java语言 1.1 java语言介绍 1.1.1 什么是java 1.1.2 java之父 1.1.3 java语言发展史 1.2 java语言的特点 二 java环境搭建相关 ...
- Java基础篇(03):流程控制语句,和算法应用
本文源码:GitHub·点这里 || GitEE·点这里 一.分支语句 流程控制语句对任何一门编程语言都是非常重要的,Java中基于流程控制程序执行的不同步骤和代码块. 1.IF条件 IF条件语句会根 ...
- java基础学习03
迭代器 常用方法: Iterator接口的常用方法如下: public E next():返回迭代的下一个元素. public boolean hasNext():如果仍有元素可以迭代,则返回 tru ...
- Java基础语法-03
一. 运算符 1. 运算符和表达式 运算符:对常量或者变量进行操作的符 表达式:用运算符把常量或者变量连接起来符合java语法的式子就可以称为表达式. 不同运算符连接的表达式体现的是不同类型的表达 ...
- JAVA基础讲义06-面向对象
面向对象 一.编程思想 什么是编程思想 面向过程和面向对象 面向过程编程思想 面向过程思想 面向过程实现 应用场景 面向过程特点 面向过程代表语言 面向对象介绍 面向对象编程思想 面向对象的三大特征 ...
- Java基础题03:(单选题)存储一个24X24点阵的汉字(每个点1bit),需要多少字节
- Java基础 - 内部类03 - 匿名内部类详解
1.什么是匿名内部类 定义 : 1.匿名内部类是定义在类的局部位置,如方法中.代码块中,且没有明确的类名: 2.是一个内部类,本质还是一个类: 3.没有类名: 4.同时还是一个对象. 2.匿名内部类的 ...
- 【重难点】【Java基础 03】hashCode() 和 equals()、代理模式
[重难点][Java基础 03]重写hashCode() 和equals(). 文章目录 [重难点][Java基础 03]重写hashCode() 和equals(). 一.hashCode() 和 ...
最新文章
- vs mysql搭建_VS+mysql+EF搭建
- 爱情第五课,终极选择题
- 【职场】程序员摆地摊都能月入过万,是真的吗?
- 联想一体机电源键不亮_联想/兄弟打印机复印一体机激光器清洁教程
- python 递归函数_Python尚学堂高淇|P82P86面向对象和面向过程的区别LEGB规则nonlocal_global递归函数阶乘计算案例...
- Google 2020游戏开发者峰会回顾、比尔•盖茨的夏日书单、Libaom 2.0.0发布等|Decode the Week...
- [Win 7]Windows7 RC 简体中文版测试正式开始了哦!!
- lisp 图元 天正 自定义_C# 自定义autolisp 函数 研究
- opencv java水平投影_使用OpenCv中Mat进行水平投影与垂直投影并实现字符切分
- bat脚本中,常用的开头与结尾(关闭回显,让输出变得更加简洁)
- PHP+MYSQL 出现乱码的解决方法
- apulSoft apUnmask for mac(音频放大组件)
- 何波: 程序化交易系统构建与风险控制
- 一款用VBS编写的修仙风格打怪游戏
- 军犬信息采编发系统vs网络神采
- 数据结构与算法邓俊辉——(三)
- 导出pdf内容包换特殊符号,或转行符号等解决方法
- 文末福利|使用Python转换PDF,Word/Excel/PPT/md/HTML都能转!
- VQLS:变分量子算法解线性方程组
- TP全行业小程序运营管理系统源码+一键生成小程序