Java 基础语法
本章内容
本章介绍 Java 的基础语法,包括变量、数据类型、运算符和控制流程等核心概念。
一、变量与数据类型
1.1 变量声明
在 Java 中,变量必须先声明后使用:
1.2 基本数据类型
Java 有 8 种基本数据类型:
| 类型 | 大小 | 范围 | 默认值 |
|---|---|---|---|
byte | 1字节 | -128 ~ 127 | 0 |
short | 2字节 | -32,768 ~ 32,767 | 0 |
int | 4字节 | -2^31 ~ 2^31-1 | 0 |
long | 8字节 | -2^63 ~ 2^63-1 | 0L |
float | 4字节 | IEEE 754 | 0.0f |
double | 8字节 | IEEE 754 | 0.0d |
char | 2字节 | 0 ~ 65,535 | '\u0000' |
boolean | 1位 | true/false | false |
// 基本数据类型示例
byte b = 100;
short s = 1000;
int i = 100000;
long l = 100000L; // 注意L后缀
float f = 3.14f; // 注意f后缀
double d = 3.14159;
char c = 'A';
boolean flag = true;
1.3 引用数据类型
除了基本数据类型,其他都是引用数据类型:
// 字符串
String str = "Hello Java";
// 数组
int[] numbers = {1, 2, 3, 4, 5};
// 对象
Scanner scanner = new Scanner(System.in);
1.4 类型转换
自动类型转换(隐式)
强制类型转换(显式)
// 大范围 → 小范围,需要强制转换
double d = 3.14;
int i = (int) d; // 结果:3(小数部分丢失)
// 注意精度丢失
long l = 123456789L;
int i2 = (int) l; // 可能溢出
二、运算符
2.1 算术运算符
int a = 10, b = 3;
System.out.println(a + b); // 13 加法
System.out.println(a - b); // 7 减法
System.out.println(a * b); // 30 乘法
System.out.println(a / b); // 3 除法(整数除法)
System.out.println(a % b); // 1 取余
// 自增自减
int x = 5;
System.out.println(++x); // 6 先自增再使用
System.out.println(x++); // 6 先使用再自增
System.out.println(x); // 7
2.2 关系运算符
int a = 5, b = 3;
System.out.println(a > b); // true
System.out.println(a < b); // false
System.out.println(a >= b); // true
System.out.println(a <= b); // false
System.out.println(a == b); // false
System.out.println(a != b); // true
2.3 逻辑运算符
boolean x = true, y = false;
System.out.println(x && y); // false 逻辑与
System.out.println(x || y); // true 逻辑或
System.out.println(!x); // false 逻辑非
// 短路运算
int a = 5, b = 0;
if (b != 0 && a / b > 2) { // b != 0 为 false,不会执行 a / b
System.out.println("条件成立");
}
2.4 赋值运算符
int a = 10;
a += 5; // a = a + 5; 结果:15
a -= 3; // a = a - 3; 结果:12
a *= 2; // a = a * 2; 结果:24
a /= 4; // a = a / 4; 结果:6
a %= 5; // a = a % 5; 结果:1
2.5 三元运算符
// 语法:条件 ? 值1 : 值2
int a = 10, b = 20;
int max = a > b ? a : b; // 结果:20
String result = (score >= 60) ? "及格" : "不及格";
三、控制流程
3.1 条件语句
if 语句
int score = 85;
// 单分支
if (score >= 60) {
System.out.println("及格");
}
// 双分支
if (score >= 60) {
System.out.println("及格");
} else {
System.out.println("不及格");
}
// 多分支
if (score >= 90) {
System.out.println("优秀");
} else if (score >= 80) {
System.out.println("良好");
} else if (score >= 60) {
System.out.println("及格");
} else {
System.out.println("不及格");
}
switch 语句
int dayOfWeek = 3;
switch (dayOfWeek) {
case 1:
System.out.println("星期一");
break;
case 2:
System.out.println("星期二");
break;
case 3:
System.out.println("星期三");
break;
case 4:
System.out.println("星期四");
break;
case 5:
System.out.println("星期五");
break;
case 6:
case 7:
System.out.println("周末");
break;
default:
System.out.println("无效的日期");
}
// Java 14+ 新语法
String dayName = switch (dayOfWeek) {
case 1 -> "星期一";
case 2 -> "星期二";
case 3 -> "星期三";
case 4 -> "星期四";
case 5 -> "星期五";
case 6, 7 -> "周末";
default -> "无效日期";
};
3.2 循环语句
for 循环
// 基本 for 循环
for (int i = 1; i <= 5; i++) {
System.out.println("第 " + i + " 次循环");
}
// 增强 for 循环(for-each)
int[] numbers = {1, 2, 3, 4, 5};
for (int num : numbers) {
System.out.println(num);
}
// 嵌套循环
for (int i = 1; i <= 3; i++) {
for (int j = 1; j <= 3; j++) {
System.out.print("(" + i + "," + j + ") ");
}
System.out.println();
}
while 循环
// while 循环
int i = 1;
while (i <= 5) {
System.out.println("第 " + i + " 次循环");
i++;
}
// do-while 循环
int j = 1;
do {
System.out.println("第 " + j + " 次循环");
j++;
} while (j <= 5);
3.3 跳转语句
break 和 continue
// break:跳出循环
for (int i = 1; i <= 10; i++) {
if (i == 5) {
break; // 跳出循环
}
System.out.println(i); // 输出:1 2 3 4
}
// continue:跳过本次循环
for (int i = 1; i <= 5; i++) {
if (i == 3) {
continue; // 跳过本次循环
}
System.out.println(i); // 输出:1 2 4 5
}
// 标签跳转
outer: for (int i = 1; i <= 3; i++) {
for (int j = 1; j <= 3; j++) {
if (i == 2 && j == 2) {
break outer; // 跳出外层循环
}
System.out.println("i=" + i + ", j=" + j);
}
}
四、输入输出
4.1 输出
// 基本输出
System.out.print("不换行输出");
System.out.println("换行输出");
// 格式化输出
String name = "张三";
int age = 25;
double salary = 8500.5;
System.out.printf("姓名:%s,年龄:%d,工资:%.2f%n", name, age, salary);
// 输出:姓名:张三,年龄:25,工资:8500.50
4.2 输入
import java.util.Scanner;
public class InputExample {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入姓名:");
String name = scanner.nextLine();
System.out.print("请输入年龄:");
int age = scanner.nextInt();
System.out.print("请输入身高:");
double height = scanner.nextDouble();
System.out.println("姓名:" + name + ",年龄:" + age + ",身高:" + height);
scanner.close(); // 关闭资源
}
}
五、常见陷阱与注意事项
5.1 整数除法
int a = 5, b = 2;
System.out.println(a / b); // 2(整数除法)
System.out.println(5.0 / 2); // 2.5(浮点除法)
System.out.println((double)a / b); // 2.5(强制转换)
5.2 浮点数比较
// 错误的比较方式
double d1 = 0.1 + 0.2;
double d2 = 0.3;
System.out.println(d1 == d2); // false!
// 正确的比较方式
double epsilon = 1e-10;
System.out.println(Math.abs(d1 - d2) < epsilon); // true
5.3 字符串比较
// 错误的比较方式
String s1 = "hello";
String s2 = "hello";
String s3 = new String("hello");
System.out.println(s1 == s2); // true(字符串常量池)
System.out.println(s1 == s3); // false(不同对象)
// 正确的比较方式
System.out.println(s1.equals(s3)); // true(内容相同)
5.4 Scanner 的 nextLine() 问题
Scanner scanner = new Scanner(System.in);
System.out.print("输入数字:");
int num = scanner.nextInt();
System.out.print("输入字符串:");
scanner.nextLine(); // 消费换行符
String str = scanner.nextLine();
六、编程规范
6.1 命名规范
// 类名:大驼峰命名法
class StudentManager { }
// 方法名和变量名:小驼峰命名法
int studentAge;
void calculateScore() { }
// 常量:全大写,下划线分隔
final int MAX_SIZE = 100;
final String DEFAULT_NAME = "Unknown";
6.2 代码风格
// 良好的代码风格
public class Calculator {
private static final double PI = 3.14159;
public double calculateArea(double radius) {
if (radius <= 0) {
throw new IllegalArgumentException("半径必须大于0");
}
return PI * radius * radius;
}
}
总结
Java 基础语法是学习 Java 编程的基石,主要包括:
- 数据类型:8种基本类型 + 引用类型
- 运算符:算术、关系、逻辑、赋值、三元
- 控制流程:if/switch 条件语句,for/while 循环语句
- 输入输出:System.out 输出,Scanner 输入
学习建议:多练习编程,熟练掌握基础语法,为后续学习面向对象编程打下坚实基础。