Java流程控制与方法全解析

一、Java流程控制

(一)用户交互Scanner

Java中,Scanner类常用于从控制台读取用户输入。

语法形式:

Scanner scanner =nwe Scanner (System.in);

1.基础输入

语法形式:

读取字符串:next()、nextLine();

读取整数:nextInt()

读取浮点数:nextDouble()

*next()是读取以空白字符为分隔符;nextLine()会读取输入中的一整行文本,直到遇到换行符为止,但是返回值不包括换行符。

2.多行输入

如果需要逐行读取用户输入,可以使用hasNextLine()和nextLine()结合循环;

*通过Scanner类的next()和nextLine()方法获取输入的字符串,在读取前一般需要使用hasNext和hasNextLine判断是否还有输入的数据。

(二)顺序结构

顺序结构是程序最基本的执行方式,代码从上到下的顺序执行,无跳转或分支。

(三)选择结构

选择结构通过条件判断决定代码执行路径,常见的形式为if-else和switch-case。用于处理需要分支逻辑的场景。

1.if-else结构

语法形式:

if(condition){

//代码块1;

}else if(condition){

//代码块2;

}else{

//代码块3;

}

适用于复杂的条件判断,可以处理布尔表达式、比较运算符等;可以嵌套。

2.switch-case结构

switch-case适用于对单一变量的多个离散值进行匹配,通常在变量有多个固定选项时使用。

语法形式:

switch(variable){

case value1:

//代码块1;

break;

case value2:

//代码块2:

default:

//代码块3;

}

(四)循环结构

循环结构重复执行一段代码,直到满足终止条件。主要包括for循环和while循环,适用于需要重复操作的场景。

1.while循环

while 循环基于条件判断执行代码块,只要条件为真,循环就会继续。适用于不确定循环次数的情况。

语法形式:

while(condition){

//代码块;

}

2.for循环

for循环用于遍历序列或可迭代对象,循环次数由序列长度决定,适用于一致迭代次数或需要遍历元素的情况。

语法形式:

for(初始化;判断;迭代){

//代码块;

}

(五)break、continue、goto

1.break

break会立即终止当前循环或switch语句的执行,跳出循环或switch结构。

2.continue

continue会跳过当前循环的剩余部分,直接进入下一次循环的条件判断。

3.goto

goto会无条件跳转到程序中的指定标签位置。

*goto容易导致代码结构混乱,应谨慎使用。

二、Java方法

Java方法:语句的集合,执行一个功能。方法是解决一类问题的步骤的有序结合,包含在类或对象中,方法在程序中创建,在其他地方被引用。

*一个方法尽量只完成一个功能,保持高内聚内耦合。

(一)方法的定义与调用

语法形式:

修饰符 返回类型 方法名(参数列表){

//方法体

return 返回值;

}

*修饰符:定义方法的访问类型,可有可没有;

*返回类型:方法可能会返回值,返回类型就是返回值的类型;有时方法没有返回值,返回类型为void;

*方法名:命名应遵循驼峰命名法;

*参数列表:参数可以是零个或多个,之间用逗号间隔;

形式参数:在方法被调用时由于接受外界输入的数据;

实参:调用方法时实际传给方法的数据。

*方法体:包含具体的语句,用{}包含。

调用语法形式:

对象名.方法名(实参列表);

(二)方法重载

方法重载:在同一个类中定义多个同名的方法,但这些方法的参数列表不同。返回值类型可以相同可以不同,但不能仅通过返回值类型区分重载方法。

方法名称相同时,编译器会根据调用方法的参数个数、参数类型去逐个匹配,以选择对应的方法,如果匹配失败,则编译器会报错。

(三)可变参数

可变参数:允许函数接受不定数量的参数。在方法声明中,在指定参数类型后加...

一个方法中只能指定一个可变参数,它必须是方法的最后一个参数,任何普通参数都必须在它声明之前。

(四)递归

递归:通过函数调用自身来解决问题,将复杂问题分解为更小的子问题。

递归结构包括两个部分:

基线条件:递归停止的条件,没有基线条件,将陷入死循环。

递归条件:继续调用自身的条件。

相关推荐
灯澜忆梦9 小时前
GO_并发编程---定时器
开发语言·后端·golang
鱟鲥鳚10 小时前
Spring Boot 集成 LangChain4j:从模型调用到 Tool Calling(Demo版)
java·spring boot
-银雾鸢尾-10 小时前
C#中的StringBuilder相关方法
开发语言·c#
-银雾鸢尾-10 小时前
C#中结构体与类的区别;抽象类与接口的区别
开发语言·c#
大模型码小白11 小时前
【Python零基础教程】继承、多态与魔法函数:面向对象编程三大核心特性详解
java·大数据·开发语言·人工智能·python·ai编程
腾渊信息科技公司12 小时前
Spring Boot对接MES实战:视觉检测数据自动同步方案
java·人工智能·spring boot·后端·计算机视觉·ai·软件需求
爱笑的源码基地13 小时前
高并发 Redis 缓存门诊HIS系统源码,含财务统计药房进销存
java·程序·门诊系统·诊所系统·云诊所源码
wuqingshun31415913 小时前
TCP超时重传机制是为了解决什么问题?
java
段一凡-华北理工大学13 小时前
向量数据库实战:选型、调优与落地~系列文章12:文本分块策略实战:chunk_size 怎么选?重叠多少?
开发语言·数据库·后端·oracle·rust·工业智能体·高炉智能化
Ljwuhe13 小时前
C++——多态
开发语言·c++