初识Java—(八)流程控制(1)(java8入门教程)
wptr33 2024-11-16 01:27 39 浏览
任何一门编程语言都会提供两种基本的流程控制结构:分支结构和循环结构。其中分支结构根据条件来选择性地执行某段代码,循环结构则用于实现根据循环条件重复执行某段代码。
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:执行到末尾就结束了
相关推荐
- [常用工具] git基础学习笔记_git工具有哪些
-
添加推送信息,-m=messagegitcommit-m“添加注释”查看状态...
- centos7安装部署gitlab_centos7安装git服务器
-
一、Gitlab介1.1gitlab信息GitLab是利用RubyonRails一个开源的版本管理系统,实现一个自托管的Git项目仓库,可通过Web界面进行访问公开的或者私人项目。...
- 太高效了!玩了这么久的Linux,居然不知道这7个终端快捷键
-
作为Linux用户,大家肯定在Linux终端下敲过无数的命令。有的命令很短,比如:ls、cd、pwd之类,这种命令大家毫无压力。但是,有些命令就比较长了,比如:...
- 提高开发速度还能保证质量的10个小窍门
-
养成坏习惯真是分分钟的事儿,而养成好习惯却很难。我发现,把那些对我有用的习惯写下来,能让我坚持住已经花心思养成的好习惯。...
- 版本管理最好用的工具,你懂多少?
-
版本控制(Revisioncontrol)是一种在开发的过程中用于管理我们对文件、目录或工程等内容的修改历史,方便查看更改历史记录,备份以便恢复以前的版本的软件工程技术。...
- Git回退到某个版本_git回退到某个版本详细步骤
-
在开发过程,有时会遇到合并代码或者合并主分支代码导致自己分支代码冲突等问题,这时我们需要回退到某个commit_id版本1,查看所有历史版本,获取git的某个历史版本id...
- Kubernetes + Jenkins + Harbor 全景实战手册
-
Kubernetes+Jenkins+Harbor全景实战手册在现代企业级DevOps体系中,Kubernetes(K8s)、Jenkins和Harbor组成的CI/CD流水...
- git常用命令整理_git常见命令
-
一、Git仓库完整迁移完整迁移,就是指,不仅将所有代码移植到新的仓库,而且要保留所有的commit记录1.随便找个文件夹,从原地址克隆一份裸版本库...
- 第三章:Git分支管理(多人协作基础)
-
3.1分支基本概念分支是Git最强大的功能之一,它允许你在主线之外创建独立的开发线路,互不干扰。理解分支的工作原理是掌握Git的关键。核心概念:HEAD:指向当前分支的指针...
- 云效Codeup怎么创建分支并进行分支管理
-
云效Codeup怎么创建分支并进行分支管理,分支是为了将修改记录分叉备份保存,不受其他分支的影响,所以在同一个代码库里可以同时进行多个修改。创建仓库时,会自动创建Master分支作为默认分支,后续...
- git 如何删除本地和远程分支?_git怎么删除远程仓库
-
Git分支对于开发人员来说是一项强大的功能,但要维护干净的存储库,就需要知道如何删除过时的分支。本指南涵盖了您需要了解的有关本地和远程删除Git分支的所有信息。了解Git分支...
- git 实现一份代码push到两个git地址上
-
一直以来想把自己的博客代码托管到github和coding上想一次更改一次push两个地址一起更新今天有空查资料实践了下本博客的github地址coding的git地址如果是Gi...
- git操作:cherry-pick和rebase_git cherry-pick bad object
-
在编码中经常涉及到分支之间的代码同步问题,那就需要cherry-pick和rebase命令问题:如何将某个分支的多个commit合并到另一个分支,并在另一个分支只保留一个commit记录解答:假设有两...
- 模型文件硬塞进 Git,GitHub 直接打回原形:使用Git-LFS管理大文件
-
前言最近接手了一个计算机视觉项目代码是屎山就不说了,反正我也不看代码主要就是构建一下docker镜像,测试一下部署的兼容性这本来不难但是,国内服务器的网络环境实在是恶劣,需要配置各种镜像(dock...
- 防弹少年团田柾国《Euphoria》2周年 获世界实时趋势榜1位 恭喜呀
-
当天韩国时间凌晨3时左右,该曲在Twitter上以“2YearsWithEuphoria”的HashTag登上了世界趋势1位。在韩国推特实时趋势中,从上午开始到现在“Euphoria2岁”的Has...
- 一周热门
-
-
C# 13 和 .NET 9 全知道 :13 使用 ASP.NET Core 构建网站 (1)
-
程序员的开源月刊《HelloGitHub》第 71 期
-
详细介绍一下Redis的Watch机制,可以利用Watch机制来做什么?
-
假如有100W个用户抢一张票,除了负载均衡办法,怎么支持高并发?
-
Java面试必考问题:什么是乐观锁与悲观锁
-
如何将AI助手接入微信(打开ai手机助手)
-
SparkSQL——DataFrame的创建与使用
-
redission YYDS spring boot redission 使用
-
一文带你了解Redis与Memcached? redis与memcached的区别
-
如何利用Redis进行事务处理呢? 如何利用redis进行事务处理呢英文
-
- 最近发表
- 标签列表
-
- git pull (33)
- git fetch (35)
- mysql insert (35)
- mysql distinct (37)
- concat_ws (36)
- java continue (36)
- jenkins官网 (37)
- mysql 子查询 (37)
- python元组 (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)
- c语言 switch (34)
- git commit (34)