注解
注解(Annotation)是代码里的「标记」,本身不改变逻辑,但可以被编译器、工具或反射读取。 1. 常见内置注解1234567891011121314151617public class BuiltInAnnotationDemo { @Override // 标记这是重写父类的方法,写错会编译报错 public String toString() { return "这是重写的方法"; } @Deprecated // 标记已过时,不推荐使用 public void oldMethod() { System.out.println("过时的方法"); } @SuppressWarnings("unused") // 压制编译警告 public void anotherMethod() { int x = 10; /...
反射
反射让你在运行时动态获取类的信息(字段、方法、构造方法),并调用它们。框架(如 Spring)大量使用反射。 1. 获取 Class 对象12345678910111213141516171819public class Person { private String name; public int age; public Person() {} public Person(String name, int age) { this.name = name; this.age = age; } public void sayHello() { System.out.println("你好,我是" + name); } private void secret() { System.out.println("这是私有方法"); }} 1...
IO 流
IO 流用来读写文件、网络等数据。分「字节流」和「字符流」两大类,字符流专门处理文本。 1. File 类File 表示一个文件或目录的路径,可以判断、创建、删除。 12345678910111213141516171819import java.io.File;public class FileDemo { public static void main(String[] args) { File file = new File("test.txt"); System.out.println(file.exists()); // 是否存在 System.out.println(file.getName()); // test.txt System.out.println(file.getAbsolutePath()); // 绝对路径 System.out.println(file.isDirectory()); // 是否是目录 ...
泛型
泛型让类或方法可以处理「任意类型」,同时保证类型安全。常见的 <T>、List<String> 里的 <> 就是泛型。 1. 为什么需要泛型没有泛型时,集合里什么都往里放,取出来还要强转,容易出错。 123456789101112131415import java.util.ArrayList;import java.util.List;public class NoGenericDemo { public static void main(String[] args) { // 没有泛型(不推荐) List list = new ArrayList(); list.add("hello"); list.add(123); // 能放任意类型 // 取出来是 Object,要强转,容易 ClassCastException String s = (String) list.get(0); Syste...
异常处理
程序运行时出问题会抛「异常」。用 try-catch 可以捕获并处理,避免程序崩溃。 1. 常见异常 异常 触发场景 NullPointerException 调用 null 对象的方法 ArrayIndexOutOfBoundsException 数组下标越界 ArithmeticException 除零等算术错误 NumberFormatException 字符串转数字格式不对 ClassCastException 类型转换错误 123456public class ExceptionDemo { public static void main(String[] args) { int[] arr = {1, 2, 3}; System.out.println(arr[5]); // 数组越界,抛 ArrayIndexOutOfBoundsException }} 2. try-catch 捕获异常12345678910111213publi...
集合之 Set 与 Map
Set 是无序、不可重复的集合;Map 是键值对(key-value)。 1. Set 集合Set 不允许重复元素。常用实现是 HashSet(无序)和 TreeSet(有序)。 1234567891011121314151617181920212223import java.util.HashSet;import java.util.Set;public class SetDemo { public static void main(String[] args) { Set<String> set = new HashSet<>(); set.add("Java"); set.add("Python"); set.add("Java"); // 重复的不会加进去 set.add("C++"); System.out.println(set); /...
集合之 List
List 是有序、可重复的集合,按索引访问。最常用的是 ArrayList。 1. 为什么用集合而不是数组数组长度固定,集合长度可动态变化。 12345// 数组:长度固定int[] arr = new int[3];// 集合:长度自动增长List<String> list = new ArrayList<>(); 2. 常用操作12345678910111213141516171819202122232425262728293031323334353637383940import java.util.ArrayList;import java.util.List;public class ListDemo { public static void main(String[] args) { // 创建集合(JDK 7 起右边可省略泛型类型) List<String> list = new ArrayList<>(); // 添加 list.add...
日期与时间
JDK 8 引入的 java.time 包是处理日期时间的首选,比旧的 Date 好用得多。 1. 获取当前日期时间123456789101112131415import java.time.LocalDate;import java.time.LocalTime;import java.time.LocalDateTime;public class NowDemo { public static void main(String[] args) { LocalDate date = LocalDate.now(); // 当前日期(年-月-日) LocalTime time = LocalTime.now(); // 当前时间(时:分:秒) LocalDateTime now = LocalDateTime.now(); // 日期 + 时间 System.out.println(date); // 例如 2026-09-05 System.out.p...
包装类
包装类把 8 种基本类型「包」成对象。基本类型不是对象,有些场景(比如泛型、集合)必须用对象,这时就需要包装类。 1. 8 种包装类 基本类型 包装类 byte Byte short Short int Integer long Long float Float double Double char Character boolean Boolean 2. 自动装箱和拆箱123456789101112131415161718public class BoxingDemo { public static void main(String[] args) { // 自动装箱:基本类型 → 包装类 Integer i = 10; // 自动拆箱:包装类 → 基本类型 int j = i; System.out.println(i); // 10 System.out.println(j); // 10 // 参与运...
String 字符串
String 是 Java 里最常用的类,表示一串字符。注意它是不可变的。 1. 创建字符串123456789101112public class StringCreateDemo { public static void main(String[] args) { // 方式一:直接赋值(常用) String s1 = "hello"; // 方式二:new(不常用) String s2 = new String("hello"); System.out.println(s1); System.out.println(s2); }} 2. 字符串比较:equals 和 ==123456789101112131415161718public class StringEqualsDemo { public static void main(String[] args) &...