一、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;
*方法名:命名应遵循驼峰命名法;
*参数列表:参数可以是零个或多个,之间用逗号间隔;
形式参数:在方法被调用时由于接受外界输入的数据;
实参:调用方法时实际传给方法的数据。
*方法体:包含具体的语句,用{}包含。
调用语法形式:
对象名.方法名(实参列表);
(二)方法重载
方法重载:在同一个类中定义多个同名的方法,但这些方法的参数列表不同。返回值类型可以相同可以不同,但不能仅通过返回值类型区分重载方法。
方法名称相同时,编译器会根据调用方法的参数个数、参数类型去逐个匹配,以选择对应的方法,如果匹配失败,则编译器会报错。
(三)可变参数
可变参数:允许函数接受不定数量的参数。在方法声明中,在指定参数类型后加...
一个方法中只能指定一个可变参数,它必须是方法的最后一个参数,任何普通参数都必须在它声明之前。
(四)递归
递归:通过函数调用自身来解决问题,将复杂问题分解为更小的子问题。
递归结构包括两个部分:
基线条件:递归停止的条件,没有基线条件,将陷入死循环。
递归条件:继续调用自身的条件。