初识Java—(八)流程控制(1)(java8入门教程)
wptr33 2024-11-16 01:27 20 浏览
任何一门编程语言都会提供两种基本的流程控制结构:分支结构和循环结构。其中分支结构根据条件来选择性地执行某段代码,循环结构则用于实现根据循环条件重复执行某段代码。
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:执行到末尾就结束了
相关推荐
- 【推荐】一款开源免费、美观实用的后台管理系统模版
-
如果您对源码&技术感兴趣,请点赞+收藏+转发+关注,大家的支持是我分享最大的动力!!!项目介绍...
- Android架构组件-App架构指南,你还不收藏嘛
-
本指南适用于那些已经拥有开发Android应用基础知识的开发人员,现在想了解能够开发出更加健壮、优质的应用程序架构。首先需要说明的是:AndroidArchitectureComponents翻...
- 高德地图经纬度坐标批量拾取(高德地图批量查询经纬度)
-
使用方法在桌面上新建一个index.txt文件,把下面的代码复制进去保存,再把文件名改成index.html保存,双击运行打开即可...
- flutter系列之:UI layout简介(flutter ui设计)
-
简介对于一个前端框架来说,除了各个组件之外,最重要的就是将这些组件进行连接的布局了。布局的英文名叫做layout,就是用来描述如何将组件进行摆放的一个约束。...
- Android开发基础入门(一):UI与基础控件
-
Android基础入门前言:...
- iOS的布局体系-流式布局MyFlowLayout
-
iOS布局体系的概览在我的CSDN博客中的几篇文章分别介绍MyLayout布局体系中的视图从一个方向依次排列的线性布局(MyLinearLayout)、视图层叠且停靠于父布局视图某个位置的框架布局(M...
- TDesign企业级开源设计系统越发成熟稳定,支持 Vue3 / 小程序
-
TDesing发展越来越好了,出了好几套组件库,很成熟稳定了,新项目完全可以考虑使用。...
- WinForm实现窗体自适应缩放(winform窗口缩放)
-
众所周知,...
- winform项目——仿QQ即时通讯程序03:搭建登录界面
-
上两篇文章已经对CIM仿QQ即时通讯项目进行了需求分析和数据库设计。winform项目——仿QQ即时通讯程序01:原理及项目分析...
- App自动化测试|原生app元素定位方法
-
元素定位方法介绍及应用Appium方法定位原生app元素...
- 61.C# TableLayoutPanel控件(c# tabcontrol)
-
摘要TableLayoutPanel在网格中排列内容,提供类似于HTML元素的功能。TableLayoutPanel控件允许你将控件放在网格布局中,而无需精确指定每个控件的位置。其单元格...
- 12个python数据处理常用内置函数(python 的内置函数)
-
在python数据分析中,经常需要对字符串进行各种处理,例如拼接字符串、检索字符串等。下面我将对python中常用的内置字符串操作函数进行介绍。1.计算字符串的长度-len()函数str1='我爱py...
- 如何用Python程序将几十个PDF文件合并成一个PDF?其实只要这四步
-
假定你有一个很无聊的任务,需要将几十个PDF文件合并成一个PDF文件。每一个文件都有一个封面作为第一页,但你不希望合并后的文件中重复出现这些封面。即使有许多免费的程序可以合并PDF,很多也只是简单的将...
- Python入门知识点总结,Python三大数据类型、数据结构、控制流
-
Python基础的重要性不言而喻,是每一个入门Python学习者所必备的知识点,作为Python入门,这部分知识点显得很庞杂,内容分支很多,大部分同学在刚刚学习时一头雾水。...
- 一周热门
-
-
C# 13 和 .NET 9 全知道 :13 使用 ASP.NET Core 构建网站 (1)
-
因果推断Matching方式实现代码 因果推断模型
-
面试官:git pull是哪两个指令的组合?
-
git pull命令使用实例 git pull--rebase
-
git 执行pull错误如何撤销 git pull fail
-
git pull 和git fetch 命令分别有什么作用?二者有什么区别?
-
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)