作为一名名 Java 初学者,最近在学习过程中整理了一些关于常用类、String 类以及日期时间处理的知识点。这些内容是 Java 基础中的重点,也是日常编程练习中频繁用到的工具,掌握它们能让我们在写代码时更加得心应手。今天把这些笔记分享出来,希望能和大家一起交流进步。
一、Java 中的常用基础类
Java 提供了许多内置的基础类,它们就像工具箱里的工具,帮我们解决各种常见问题。
Object 类 —— 所有类的 "老祖宗"
Object 类是 Java 中所有类的直接或间接父类,不管我们有没有显式声明,所有类都继承了它的方法。其中最常用的有两个:
equals()
:用于比较两个对象是否相等。需要注意的是,默认的equals()
比较的是对象的内存地址,很多类(比如后面要讲的 String)会重写这个方法,改为比较内容是否相同。toString()
:返回对象的字符串表示。默认格式是 "类名 @哈希值",通常我们会在自定义类中重写它,让输出的信息更有意义。比如:class Student {String name;int age;@Overridepublic String toString() {return "Student{name='" + name + "', age=" + age + "}";} }
包装类 —— 基本类型的 "包装器"
Java 的基本数据类型(如 int、double)不是对象,为了能在需要对象的场景(比如集合框架)中使用它们,Java 提供了对应的包装类:
基本类型 包装类 int Integer char Character double Double boolean Boolean 包装类最常用的功能是类型转换:
// 字符串转整数
int num = Integer.parseInt("123");
// 整数转字符串
String str = Integer.toString(123);
// 自动装箱拆箱(Java 5+)
Integer a = 100; // 自动装箱(int→Integer)
int b = a; // 自动拆箱(Integer→int)
二、String 类 —— 字符串处理利器
String 类用于处理文本数据,是 Java 中最常用的类之一,掌握它的用法能让字符串处理变得简单高效。
String 的重要特性
不可变性:字符串一旦创建,其内容就不能被修改。当我们执行拼接、替换等操作时,其实是创建了新的 String 对象。
String s = "hello"; s += " world"; // 这里创建了新的String对象,原"hello"并未改变
字符串常量池:为了节省内存,Java 会把字符串常量存放在常量池中。如果创建的字符串已经存在于常量池,就直接引用而不重复创建。
String s1 = "hello"; String s2 = "hello"; System.out.println(s1 == s2); // 输出true,因为指向同一个常量池对象
必学的 String 常用方法
length()
:获取字符串长度"hello".length(); // 返回5
substring(int start, int end)
:截取子串(包含 start,不包含 end)
"hello world".substring(0, 5); // 返回"hello"
equals(Object obj)
:比较字符串内容是否相等(注意与==
的区别)
"hello".equals("hello"); // 返回true
"hello" == "hello"; // 返回true(常量池机制)
new String("hello") == "hello"; // 返回false(new创建了新对象)
indexOf(String str)
:查找子串首次出现的位置,找不到返回 - 1
"hello world".indexOf("world"); // 返回6
replace(CharSequence old, CharSequence new)
:替换字符串中的字符 / 子串
"hello".replace('l', 'x'); // 返回"hexxo"
三、日期时间处理 —— 时间的 "记录者"
在编程中,处理日期时间是很常见的需求,比如记录日志时间、计算时间差等。Java 提供了两套日期时间 API,我们都需要了解。
旧版 API(Date 和 Calendar)
这是 Java 早期的日期时间类,虽然部分方法已过时,但在老项目中仍能看到它们的身影:
Date 类:表示特定的时间点
Date now = new Date();
System.out.println(now); // 输出当前时间,格式如:Fri Aug 01 16:30:45 CST 2025
Calendar 类:用于更灵活地操作日期时间
Calendar cal = Calendar.getInstance();
int year = cal.get(Calendar.YEAR); // 获取当前年份
int month = cal.get(Calendar.MONTH) + 1; // 月份从0开始,需加1
int day = cal.get(Calendar.DAY_OF_MONTH); // 获取日期
新版 API(Java 8+)
Java 8 引入了全新的日期时间 API(位于java.time
包下),解决了旧版 API 线程不安全、设计混乱等问题,推荐优先使用:
LocalDate:只包含日期(年、月、日)
LocalDate today = LocalDate.now();
int year = today.getYear(); // 获取年份
Month month = today.getMonth(); // 获取月份(Month枚举类型)
int day = today.getDayOfMonth(); // 获取日期
LocalTime:只包含时间(时、分、秒)
LocalTime now = LocalTime.now();
int hour = now.getHour(); // 小时
int minute = now.getMinute(); // 分钟
LocalDateTime:包含日期和时间(最常用)
LocalDateTime now = LocalDateTime.now(); // 获取当前日期时间
日期时间格式化:使用DateTimeFormatter
LocalDateTime now = LocalDateTime.now();
// 定义格式
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
// 格式化
String formatted = now.format(formatter);
System.out.println(formatted); // 输出如:2025-08-01 16:45:30
日期计算:轻松实现加减操作
LocalDate tomorrow = LocalDate.now().plusDays(1); // 明天
LocalDate lastMonth = LocalDate.now().minusMonths(1); // 上个月
总结
以上就是我整理的关于 Java 常用类、String 类和日期时间处理的核心知识点。这些内容虽然基础,但在实际编程中应用广泛,尤其是 String 类和新版日期时间 API,建议多写代码练习巩固。
作为一名学生,我深知学习编程需要不断实践和总结。如果笔记中有错误或不完善的地方,欢迎大家在评论区指正交流,让我们一起在 Java 学习的道路上共同进步!