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

Java字符串、时间、数字知识点

文章目录

        • 一、兼容性
        • 二、字符串处理类
          • 1. StringBuffer与StringBuilder
          • 2. append(null)的处理
        • 三、字符串分割工具
          • 1. StringTokenizer
          • 2. String.split()
        • 四、日期时间处理
          • 1. Date类
          • 2. 数据库时间存储
          • 3. SimpleDateFormat
        • 五、数学相关类
          • 1. Math类
          • 2. BigInteger类

一、兼容性
  • 向上兼容:指新的软件版本能够兼容旧版本的功能、数据或接口。例如,高版本Java编译器编译的代码,在低版本Java运行环境中可能仍能正常运行(需注意部分新增特性可能不兼容)。
二、字符串处理类
1. StringBuffer与StringBuilder
特性StringBufferStringBuilder
线程安全线程安全(方法被synchronized修饰)非线程安全(无同步机制)
性能相对较低(同步开销)相对较高(无同步开销)
append()方法返回值返回当前对象(this),支持链式调用(如sb.append("a").append("b")同StringBuffer,支持链式调用
2. append(null)的处理
  • 当调用StringBufferStringBuilderappend(null)方法时,存储的是字符串实体"null",而非null引用。
三、字符串分割工具
1. StringTokenizer
  • 默认分隔符:默认以空格(包括空格、制表符\t、换行符\n等空白字符)作为分隔符。
  • 构造函数:不同构造函数可指定自定义分隔符,例如new StringTokenizer(str, ",;")表示以,;为分隔符。
  • 使用场景:较古老的工具类,功能有限,目前已较少使用,推荐使用String.split()方法。
2. String.split()
  • 基于正则表达式进行字符串分割,灵活性更高。例如"a,b,c".split(",")返回["a", "b", "c"]
  • 注意:特殊正则字符(如.、*、+等)需转义(使用\\)。
四、日期时间处理
1. Date类
  • 表示特定的时间点,底层存储为自1970年1月1日00:00:00 GMT以来的毫秒数。
  • 注意:java.util.Date类部分方法(如getYear())已过时,推荐使用java.time包下的新类(如LocalDateTime)。
2. 数据库时间存储
  • 数据库中时间通常以字符串形式存储(如"2023-10-01 12:00:00"),或使用数据库原生时间类型(如MySQL的DATETIMETIMESTAMP)。
3. SimpleDateFormat
  • 用于日期与字符串的转换,其中y(年)、M(月)、d(日)、H(24小时制时)、m(分)、s(秒)是特殊占位符,必须严格区分大小写(例如M代表月,m代表分)。
  • 示例:new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")可格式化时间为"2023-10-01 14:30:00"
五、数学相关类
1. Math类
  • 包含一系列数学运算静态方法(如abs()sqrt()random()等)。
  • 部分方法被native修饰(如Math.random()),表示其实现依赖底层C语言代码,通过JNI(Java Native Interface)调用。
2. BigInteger类
  • 用于处理任意精度的整数,可直接通过字符串初始化(如new BigInteger("12345678901234567890")),解决了long等基本类型精度有限的问题。
http://www.dtcms.com/a/279030.html

相关文章:

  • dify 原生mcp应用案例
  • 美丽田园发布盈喜公告,预计净利增长超35%该咋看?
  • 【Linux-云原生-笔记】Rsyslog日志相关
  • AI进化论13:生成式AI的浪潮——AI不光能“说”,还能“画”和“拍”
  • 编译器 VS 解释器
  • YOLOv11开发流程
  • Linux 基础操作:vim 编辑器、网络配置与远程登录全解析
  • 学习笔记(36):用概率密度方式来了解:正态分布拟合曲线
  • sqlserver迁移日志文件和数据文件
  • java学习 day4 分布式锁
  • 《Librosa :一个专为音频信号处理和音乐分析设计的Python库》
  • 阿里云可观测 2025 年 3 月产品动态
  • APK安装器(安卓端)一键解除VX限制!轻松安装各种手机应用
  • VScode设计平台demo&前端开发中的常见问题
  • 中级统计师-经济学基础知识-第五章 国民收入决定的总收入-总支出模型
  • RK3568/3588 Android 12 源码默认使用蓝牙mic录音
  • 【安卓笔记】进程和线程的基础知识
  • Educational Codeforces Round 170 (Rated for Div. 2)
  • 第十六章 STL(仿函数、 常用算法)
  • 如何在 Ubuntu 上安装 Microsoft Edge 浏览器?
  • Solid Edge多项目并行,浮动许可如何高效调度?
  • cpp减小可执行文件、动态库大小
  • 4.2TCP/IP
  • 什么是微服务?-核心思想:化整为零,各自为战
  • 单向链表、双向链表、栈、队列复习(7.14)
  • Windows 安装配置Claude Code
  • Java实现文件自动下载,XXL-Job定时任务中的HTTP文件下载最佳实践
  • C++-linux 7.文件IO(二)文件描述符、阻塞与非阻塞
  • .net天擎分钟降水数据统计
  • .NET控制台应用程序中防止程序立即退出