作为一名名 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.pswp.cn/news/917259.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/917259.shtml
英文地址,请注明出处:http://en.pswp.cn/news/917259.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android常用的adb和logcat命令

ADB ADB,即 Android Debug Bridge 是一种允许模拟器或已连接的 Android 设备进行通信的命令行工具,它可为各种设备操作提供便利,如安装和调试应用,并提供对 Unix shell(可用来在模拟器或连接的设备上运行各种命令&…

重学JS-001 --- JavaScript算法与数据结构(一)JavaScript 基础知识

文章目录 变量 变量命名规则 变量命名 let vs const 变量使用范围 赋值 = 控制台输出 运算符 ++ -- == === !== 注释 转义字符 数据类型 7种 原始数据类型 1. string​​ 2. number​​ 3. ​​boolean​​ 4. null​​ 5. undefined​​ 6. ​​symbol​​(ES6 新增) 7. big…

MySQL数据闪回工具my2sql的使用

场景: 当你或者其它人员误操作数据库不小心删除或者更新了一批数据,但是是当时又没事先备份时,你可以 用这个 my2sql工具快速帮你找回数据。就是如此的丝滑。但是要注意的是只限于dml语句,所以我们在操作数据库前必需先备份哦&…

9.1无法恢复的错误与 panic!

无法恢复的错误与 panic! 有时你的代码中会发生严重问题,而你无能为力。在这些情况下,Rust 提供了 panic! 宏。实际上,有两种方式会导致 panic:一种是执行某个操作使代码产生 panic(例如访问数组越界)&…

分享低功耗单火线开关语音识别方案

在众多老旧建筑和常规家居环境里,单火线布线是主流方式。单火线语音识别芯片方案通过研发和应用特殊的单火线语音识别芯片,实现设备在单火线供电条件下稳定运行,并精准识别语音指令,为智能家居、智能照明等领域带来便捷的语音控制…

如何在Windows操作系统上通过conda 安装 MDAnalysis

MDAnalysis 是一个开源的 Python 库,旨在提供一个高效且灵活的方式来分析和处理分子动力学(MD)模拟数据。它可以从不同的文件格式中读取模拟轨迹和结构数据,进行复杂的数据处理和分析,广泛应用于生物物理学、化学、材料科学等领域。 一、创建虚拟环境 为了能够顺利安装,减…

实用PDF演示解决方案

它打破了传统阅 读模式,让PDF文档也能像PPT一样流畅播放,特别适合汇报、讲解等展示场景。它是绿色单文件版,无需安装,双击红色图标即点即用。运行后第一件事,建议把界面语言切换成中文,操作更顺手。导入PDF…

VS Code中如何关闭Github Copilot

点击顶部搜索栏后面的Copilot图标,在下拉菜单中选择Hide Copilot。在弹出的提示框中,点击Hide Copilot按钮就可以了。

MySQL学习从零开始--第六部分

Binlog是什么?有哪几种格式?推荐使用哪种,为什么 Binlog是什么 Binlog二进制日志是MySQL Server层记录所有更改数据库内容的操作日志的二进制文件,如操作UPDATE,DELETE,INSERTBinlog不记录SELECT,SHOW等查询操作使主从…

走进computed,了解computed的前世今生

computed(计算属性)并不是vue独创的,而是源自计算机科学和响应式编程的长期发展 计算理论的奠基: 函数式编程的纯函数思想:计算属性的核心特征(无副作用、依赖输入确定输出)直接来源于函数式编程…

Java 23 新特性解析与代码示例

Java 23 新特性解析与代码示例 文章目录Java 23 新特性解析与代码示例1. 引言2. 正式特性2.1. Markdown文档注释 (JEP 467)2.2. 废弃sun.misc.Unsafe的内存访问方法以移除 (JEP 471)2.3. ZGC:默认启用代际模式 (JEP 474)3. 预览特性3.1. 原始类型在模式、instanceof…

spring boot + mybatis + mysql 只有一个实体类的demo

使用MyBatis进行数据库操作,配置简单。主要演示了mybatis可以不用只使用方法名来对应mapper.java和mapper.xml。 目录结构 pom.xml src/ ├── main/ │ ├── java/ │ │ └── com/ │ │ └── springbootjdbcweb/ │ │ └── …

iRemovalPro完美绕iCloud插卡打电话,A12+支持iOS 18.1.1

iRemovalPro 专业工具全解析与操作指南 (支持iOS 14.0 - 16.6.1,A7-A15芯片设备) 👉下载地址见文末 iRemoval Pro iRemoval 专业版是一款来自外国安全研究员的工具,用来帮助一些人因为忘记自己的ID或者密码&#xff0c…

安卓SELinux策略语法

目录前言一、 通用AV规则语法1.1 allow source target:class permissions;1.2 neverallow source target:class permissions;二、type三、attribute四、typeattribute五、alias六、typealias七、init_daemon_domain7.1 init_daemon_domain 宏概述7.2 宏展开与实现7.2.1 展开后规…

vscode cursor配置php的debug,docker里面debug

VSCode PHP调试配置指南 概述 本文介绍如何在VSCode中配置PHP调试环境,包括本地和Docker环境。 前置要求 VSCodePHP 7.0Xdebug扩展PHP Debug VSCode扩展 本地调试配置 1. 安装Xdebug # Ubuntu/Debian sudo apt-get install php-xdebug# MacOS brew install p…

elk部署加日志收集

清华大学镜像源地址:Index of /elasticstack/8.x/yum/8.13.2/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror 一、elasticsearch 1.安装 rpm -ivh elastic-agent-8.13.2-x86_64.rpm 2.修改配置 vim /etc/elasticsearch/elasticsearch.yml 修改如下&…

dify 升级1.7.1 插件无法下载依赖

dify 升级1.7.1 插件无法下载依赖 1. 安装通义千问插件,各种报错; 使用下面命令查看docker 镜像日志 docker logs -f --tail100 docker-plugin_daemon-1 2025/08/01 07:42:21 full_duplex.go:59: [INFO]init environment for plugin langgenius/tongyi…

linux中简易云盘系统项目实战:基于 TCP协议的 Socket 通信、json数据交换、MD5文件区别与多用户文件管理实现

📋 项目介绍 本项目是一个基于Linux环境的简易云盘系统,采用C/S(客户端/服务器)架构,实现了类似百度网盘的基本功能。系统通过TCP Socket进行网络通信,使用JSON格式进行数据交换,利用SQLite3数据…

linux中posix消息队列的使用记录

在linux中使用posix中的消息队列时遇到了一个问题,就是在发送消息时,如果队列满了,mq_send接口会一直阻塞,经过查找资料后才发现,该接口默认是阻塞的,也就是说,当队列满了以后,接口会…

01 基于sklearn的机械学习-机械学习的分类、sklearn的安装、sklearn数据集及数据集的划分、特征工程(特征提取与无量纲化、特征降维)

文章目录机械学习机械学习分类1. 监督学习2. 半监督学习3. 无监督学习4. 强化学习机械学习的项目开发步骤scikit-learn1 scikit-learn安装2 sklearn数据集1. sklearn 玩具数据集鸢尾花数据集糖尿病数据集葡萄酒数据集2. sklearn现实世界数据集20 新闻组数据集3. 数据集的划分特…