当前位置: 首页 > news >正文

Java 学习笔记:常用类、String 与日期时间处理

作为一名名 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 提供了对应的包装类:

    基本类型包装类
    intInteger
    charCharacter
    doubleDouble
    booleanBoolean

    包装类最常用的功能是类型转换:

// 字符串转整数
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 学习的道路上共同进步!

 

 

 

 

 

 

 

 

 

 

 

 

 

http://www.lryc.cn/news/606848.html

相关文章:

  • 新手小白做一个简单的微服务
  • oracle的安全加密有哪些?
  • Linux基础 -- 内核快速向用户态共享内核变量方案之ctl_table
  • 编程与数学 03-002 计算机网络 17_云计算与网络
  • 无人设备遥控器之多设备协同技术篇
  • Java,八股,cv,算法——双非研0四修之路day22
  • 如何解决pip安装报错ModuleNotFoundError: No module named ‘altair’问题
  • 【Leetcode hot 100】1.两数之和
  • 切比雪夫不等式
  • qcustomplot 大量数据拖拽卡顿,开启opengl
  • SketchUp扩展工具分享:Ropefall v1.02插件轻松实现绳索模拟
  • 1、【C语言】【进阶】数组,指针与退化
  • 函数fdopendir的用法
  • [vue3 echarts] echarts 动态数据更新 setInterval
  • 深度学习(鱼书)day08--误差反向传播(后三节)
  • 轻钢屋顶电动排烟窗(工业用)
  • ansible.cfg 配置文件的常见配置项及其说明
  • SQL中的HAVING用法
  • MySQL--组从复制的详解及功能演练
  • 从O(n²)到O(n log n):深度剖析快速排序的内存优化与cache-friendly实现
  • 高级11-Java日志管理:使用Log4j与SLF4J
  • Oracle EBS 缺少adcfgclone.pl文件
  • 电商前端Nginx访问日志收集分析实战
  • 汇川ITS7100E触摸屏交互界面开发(一)调试事项说明
  • 25电赛e题杂乱环境稳定识别矩形框(附源码)
  • Vue3 Vue3中的响应式原理
  • StarRocks vs. Trino
  • 九联UNT403HS_海思MV320处理器_安卓9-优盘强刷刷机包
  • 嵌入式 Linux 深度解析:架构、原理与工程实践(增强版)
  • 企业级LLM智能引擎 的完整解决方案,整合了 SpringAI框架、RAG技术、模型控制平台(MCP)和实时搜索,提供从架构设计到代码实现的全面指南: