Java 基本语法详解(二)
四、流程控制语句
2. 循环结构(重复执行代码块)
循环结构用于在满足条件时重复执行一段代码,Java 中常用的循环有for、while和do-while三种。
(1)for 循环(适合已知循环次数的场景)
格式:
for (初始化表达式; 条件表达式; 更新表达式) {
// 循环体(条件为true时执行的代码)
}
-
初始化表达式:循环开始前执行一次,用于初始化循环变量(如int i = 0);
-
条件表达式:每次循环前判断,结果为true则执行循环体,为false则退出循环;
-
更新表达式:每次循环体执行后执行,用于更新循环变量(如i++)。
示例 1:遍历 1 到 5 的整数并打印
public class ForLoopDemo1 {
public static void main(String[] args) {
// 遍历1-5
for (int i = 1; i <= 5; i++) {
System.out.println("i = " + i);
}
}
}
输出结果:
i = 1
i = 2
i = 3
i = 4
i = 5
示例 2:遍历数组(增强 for 循环,JDK 5 + 支持)
增强 for 循环(foreach)简化数组 / 集合的遍历,无需关注下标,格式:
for (元素类型 变量名 : 数组/集合) {
// 循环体(变量名代表当前遍历的元素)
}
public class ForLoopDemo2 {
public static void main(String[] args) {
int[] scores = {85, 92, 78, 95, 88};
// 增强for循环遍历数组
for (int score : scores) {
System.out.println("成绩:" + score);
}
}
}
输出结果:
成绩:85
成绩:92
成绩:78
成绩:95
成绩:88
(2)while 循环(适合未知循环次数,仅需条件判断的场景)
格式:
while (条件表达式) {
// 循环体(条件为true时执行)
}
-
先判断条件表达式,若为true则执行循环体,执行后再次判断条件,直至条件为false退出循环;
-
注意:若条件始终为true,会导致 “死循环”(需避免,除非有特殊业务场景)。
示例:计算 1 到 100 的累加和
public class WhileLoopDemo {
public static void main(String[] args) {
int sum = 0; // 存储累加和
int i = 1; // 循环变量
// 当i<=100时,执行循环
while (i <= 100) {
sum += i; // 等价于sum = sum + i
i++; // 更新循环变量
}
System.out.println("1到100的累加和:" + sum); // 输出:5050
}
}
(3)do-while 循环(先执行一次循环体,再判断条件)
格式:
do {
// 循环体(至少执行一次)
} while (条件表达式);
- 与while的区别:do-while先执行循环体,再判断条件,因此循环体至少执行一次;while先判断条件,条件不满足则一次都不执行。
示例:获取用户输入,直到输入正确的数字
import java.util.Scanner; // 导入输入类
public class DoWhileLoopDemo {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in); // 创建输入对象
int correctNum = 5; // 正确数字
int inputNum; // 存储用户输入
do {
System.out.print("请输入数字5:");
inputNum = scanner.nextInt(); // 获取用户输入
} while (inputNum != correctNum); // 输入不正确则继续循环
System.out.println("输入正确!");
scanner.close(); // 关闭输入流
}
}
输出结果(假设用户先输入 3,再输入 5):
请输入数字5:3
请输入数字5:5
输入正确!
3. 循环控制语句(改变循环执行流程)
(1)break 语句
-
作用:跳出当前循环(for/while/do-while)或switch语句;
-
若在嵌套循环中,仅跳出当前所在的内层循环。
示例:找到 10 以内的第一个偶数并跳出循环
public class BreakDemo {
public static void main(String[] args) {
for (int i = 1; i <= 10; i++) {
if (i % 2 == 0) { // 判断是否为偶数
System.out.println("10以内的第一个偶数:" + i); // 输出:2
break; // 跳出循环,后续循环不再执行
}
}
}
}
(2)continue 语句
-
作用:跳过当前循环的剩余代码,直接进入下一次循环的条件判断;
-
不会跳出循环,仅跳过当前次循环。
示例:打印 1 到 10 中的奇数(跳过偶数)
public class ContinueDemo {
public static void main(String[] args) {
for (int i = 1; i <= 10; i++) {
if (i % 2 == 0) { // 判断是否为偶数
continue; // 跳过当前次循环,不执行后续打印
}
System.out.println("奇数:" + i);
}
}
}
输出结果:
奇数:1
奇数:3
奇数:5
奇数:7
奇数:9
五、方法(函数)的定义与调用
方法是一段封装好的、可重复调用的代码块,用于实现特定功能,能提高代码的复用性和可读性。
1. 方法的基本结构
格式:
修饰符 返回值类型 方法名(参数列表) {
// 方法体(实现功能的代码)
[return 返回值;] // 若返回值类型不为void,需用return返回对应类型的值
}
-
修饰符:控制方法的访问权限,常见的有public(公开)、static(静态,可直接通过类名调用);
-
返回值类型:方法执行后返回的数据类型,若无需返回值,用void表示;
-
方法名:遵循 “小驼峰命名法”(如calculateSum),见名知意;
-
参数列表:方法接收的输入数据,格式为 “数据类型 参数名”,多个参数用逗号分隔(如int a, int b);
-
return 语句:若返回值类型不为void,必须用return返回一个与类型匹配的值;若为void,return可省略(或用于提前退出方法)。
2. 方法的分类
(1)无参数无返回值方法
示例:定义一个打印欢迎信息的方法
public class MethodDemo1 {
// 无参数无返回值方法
public static void printWelcome() {
System.out.println("欢迎学习Java!");
System.out.println("一起加油!");
}
public static void main(String[] args) {
// 调用方法(静态方法通过“类名.方法名()”调用)
MethodDemo1.printWelcome();
// 也可省略类名(当前类中的静态方法)
printWelcome();
}
}
输出结果:
欢迎学习Java!
一起加油!
欢迎学习Java!
一起加油!
(2)有参数无返回值方法
示例:定义一个方法,接收姓名参数并打印问候语
public class MethodDemo2 {
// 有参数无返回值方法(参数:String name)
public static void printGreeting(String name) {
System.out.println("你好," + name + "!");
}
public static void main(String[] args) {
// 调用方法时需传入与参数类型匹配的值(实参)
printGreeting("Alice");
printGreeting("Bob");
}
}
输出结果:
你好,Alice!
你好,Bob!
(3)有参数有返回值方法
示例:定义一个方法,接收两个整数参数,返回它们的和
public class MethodDemo3 {
// 有参数有返回值方法(参数:int a, int b;返回值类型:int)
public static int calculateSum(int a, int b) {
int sum = a + b;
return sum; // 返回计算结果
}
public static void main(String[] args) {
// 调用方法,接收返回值并打印
int result1 = calculateSum(3, 5);
System.out.println("3 + 5 = " + result1); // 输出:8
// 直接在表达式中使用返回值
int result2 = calculateSum(10, 20) * 2;
System.out.println("(10 + 20) * 2 = " + result2); // 输出:60
}
}
3. 方法的重载(Overload)
方法重载是指在同一个类中,定义多个方法名相同但参数列表不同的方法(参数个数不同、或参数类型不同、或参数顺序不同),用于实现相似功能,提高代码灵活性。
注意:
-
方法重载与返回值类型无关,仅由方法名和参数列表决定;
-
调用重载方法时,JVM 会根据传入的实参类型和个数,自动匹配对应的方法。
示例:定义多个计算和的重载方法
public class MethodOverloadDemo {
// 1. 两个int相加
public static int calculateSum(int a, int b) {
return a + b;
}
// 2. 三个int相加(参数个数不同,重载)
public static int calculateSum(int a, int b, int c) {
return a + b + c;
}
// 3. 两个double相加(参数类型不同,重载)
public static double calculateSum(double a, double b) {
return a + b;
}
public static void main(String[] args) {
System.out.println("2 + 3 = " + calculateSum(2, 3)); // 调用1,输出5
System.out.println("2 + 3 + 4 = " + calculateSum(2, 3, 4)); // 调用2,输出9
System.out.println("2.5 + 3.5 = " + calculateSum(2.5, 3.5)); // 调用3,输出6.0
}
}
六、Java 语法规范(编码习惯)
遵循规范的语法格式能让代码更易读、易维护,是团队开发的基础,常见规范如下:
-
缩进:代码块(如if、for、方法体)需缩进(通常 4 个空格),层次分明;
-
命名:
-
类名:遵循 “大驼峰命名法”,首字母大写(如HelloWorld、Student);
-
方法名 / 变量名:遵循 “小驼峰命名法”,首字母小写,后续单词首字母大写(如calculateSum、studentName);
-
常量名:全大写,单词间用下划线分隔(如MAX_SCORE、PI);
- 注释:
-
单行注释:// 注释内容(用于解释单行代码);
-
多行注释:/* 注释内容 */(用于解释多行代码或代码块);
-
文档注释:/** 注释内容 /(用于生成 API 文档,可包含方法功能、参数、返回值说明,如/* @param a 第一个整数 */);
- 代码换行:
-
分号;、逗号,后换行(如循环变量定义、参数列表);
-
大括号{与代码同行,}单独换行(如类、方法、循环体);
- 空格:
-
运算符(如+、=、>)前后加空格(如int sum = a + b;);
-
括号()前后不加空格(如if (i > 0),而非if ( i > 0 ))。
示例:规范的 Java 代码格式
/**
* 这是一个计算工具类(文档注释)
* 包含求和、求最大值等方法
*/
public class CalculationUtil {
// 常量:最大值(单行注释)
public static final int MAX_VALUE = 1000;
/**
* 计算两个整数的和(文档注释)
* @param a 第一个整数
* @param b 第二个整数
* @return 两个整数的和
*/
public static int getSum(int a, int b) {
// 多行注释:
// 1. 计算a和b的和
// 2. 返回结果
int sum = a + b;
return sum;
}
public static void main(String[] args) {
int num1 = 10;
int num2 = 20;
int result = getSum(num1, num2);
System.out.println(num1 + " + " + num2 + " = " + result);
}
}

3212

被折叠的 条评论
为什么被折叠?



