1. 程序骨架与入口
Java 是面向对象的语言,一切代码必须写在类(Class)中,main 方法是程序的唯一入口。
java
// 类名必须与文件名一致,首字母大写
public class JavaBasics {
// 主方法:程序从这里开始执行
public static void main(String[] args) {
System.out.println("Hello, Java!");
}
}
2. 变量与数据类型
Java 是强类型语言,每个变量必须先声明类型再使用。
java
// 1. 基本数据类型(8种)
int age = 25; // 整数
double price = 19.99; // 浮点数
boolean isActive = true; // 布尔值
char grade = 'A'; // 单个字符
// 2. 引用数据类型
String name = "Alice"; // 字符串(不可变对象)
int[] scores = {90, 85, 88}; // 数组
// 3. 常量:final 修饰后不可重新赋值
final double PI = 3.14159;
3. 运算符与表达式
java
// 1. 算术与赋值
int a = 10, b = 3;
int mod = a % b; // 1(取模)
a += 5; // 15(复合赋值)
// 2. 逻辑运算(短路特性)
boolean check = (a > 0) && (b++ > 0); // 若 a>0 为假,b++ 不会执行
// 3. 三元运算符
String status = (age >= 18) ? "成年" : "未成年";
4. 流程控制
条件判断
java
if (score >= 90) {
System.out.println("优秀");
} else if (score >= 60) {
System.out.println("及格");
} else {
System.out.println("不及格");
}
循环结构
java
// 1. 增强 for(推荐遍历集合/数组)
for (int score : scores) {
System.out.println(score);
}
// 2. 传统 for
for (int i = 0; i < 10; i++) {
System.out.println(i);
}
// 3. while / do-while
while (condition) {
// 循环体
}
5. 面向对象核心(OOP)
类与对象
java
// 定义一个类
public class Student {
private String name; // 封装:私有属性
private int age;
// 构造器
public Student(String name, int age) {
this.name = name;
this.age = age;
}
// getter / setter
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
// 使用
Student stu = new Student("Alice", 20);
System.out.println(stu.getName());
继承与多态
java
public class Animal {
public void speak() {
System.out.println("动物叫");
}
}
public class Dog extends Animal {
@Override
public void speak() {
System.out.println("汪汪");
}
}
接口
java
public interface Printable {
void print(); // 抽象方法
}
public class Report implements Printable {
@Override
public void print() {
System.out.println("打印报告");
}
}
6. 异常处理
java
try {
int result = 10 / 0;
} catch (ArithmeticException e) {
System.err.println("计算错误: " + e.getMessage());
} finally {
System.out.println("资源清理"); // 始终执行
}
// try-with-resources:自动关闭资源
try (var reader = new java.io.BufferedReader(new java.io.FileReader("data.txt"))) {
System.out.println(reader.readLine());
} catch (java.io.IOException e) {
e.printStackTrace();
}
7. 集合框架(常用)
java
// 1. List(动态数组)
var names = new java.util.ArrayList<String>();
names.add("Alice");
names.add("Bob");
names.removeIf(n -> n.startsWith("A")); // Lambda 过滤
// 2. Map(键值对)
var map = new java.util.HashMap<String, Integer>();
map.put("Alice", 90);
map.getOrDefault("Bob", 0); // 安全获取,不存在返回默认值
// 3. Stream API(函数式处理)
long count = names.stream()
.filter(n -> n.length() > 3)
.count();
8. JDK 21 语法特点速览
JDK 21 作为长期支持版本(LTS),带来了多项正式语法特性,让代码更简洁、更安全:
| 特性 | 语法示例 | 说明 |
|---|---|---|
| Record | record Point(int x, int y) {} |
不可变数据类,自动生成构造器、getter、equals、hashCode、toString |
| 增强 Switch | case String s -> "字符串: " + s |
箭头语法 + 模式匹配,告别 break 穿透,支持返回值 |
| 文本块 | """ ... """ |
多行字符串,写 SQL/JSON/HTML 更直观 |
| 虚拟线程 | Executors.newVirtualThreadPerTaskExecutor() |
极轻量线程,可轻松创建百万级并发任务 |
| Sealed 类 | sealed class Shape permits Circle, Rect |
限制继承体系,增强类型安全 |
| var 类型推断 | var list = new ArrayList<String>() |
局部变量类型推断,减少冗余代码 |
java
// 示例:Record + 增强 Switch 组合使用
public record User(String name, int age) {}
Object obj = new User("Alice", 25);
String desc = switch (obj) {
case User u -> "用户: " + u.name() + ", 年龄: " + u.age();
case String s -> "字符串: " + s;
case null -> "空值";
default -> "未知类型";
};
9. 总结
Java 基础语法围绕类与对象 展开,掌握变量、流程控制、面向对象、异常处理和集合框架即可应对绝大多数日常开发。JDK 21 在保持向后兼容的同时,通过 Record、增强 Switch、虚拟线程等特性大幅提升了开发效率和运行性能,值得学习和应用。
,减少冗余