Java常用类编程实践:String、Math与日期处理
1. 项目概述sdut-Java面向对象-10 常用类编程题8-15是一组针对Java常用类的编程练习题目主要面向计算机专业学生和Java初学者。这组题目涵盖了Java标准库中最常用的几个核心类包括String、Math、Date、Calendar等类的实际应用场景。作为Java语言学习的重要环节常用类的掌握程度直接影响后续开发效率。这组题目从基础到进阶通过8个编程练习第8题至第15题帮助学习者深入理解这些类的API设计思想和使用技巧。我在大学任教期间曾用类似题目训练过数百名学生发现这是突破Java学习瓶颈的关键阶段。2. 核心需求解析2.1 题目设计目标这组编程题主要考察以下几个核心能力字符串处理能力String/StringBuilder数学运算能力Math类日期时间处理能力Date/Calendar包装类使用Integer/Double等正则表达式基础应用2.2 典型题目分析以第10题为例通常要求实现以下功能给定一个包含多种字符的字符串统计其中字母、数字、空格和其他字符的数量输出各类型字符的占比这类题目看似简单但涉及String的charAt()、length()方法Character的isLetter()、isDigit()等方法以及格式化输出的处理非常考验对API的熟悉程度。3. 核心实现细节3.1 字符串处理专题3.1.1 String与StringBuilder的选择// 适合使用String的场景 String greeting Hello; String name World; String message greeting , name !; // 适合使用StringBuilder的场景 StringBuilder sb new StringBuilder(); for(int i0; i100; i){ sb.append(i).append(, ); } String result sb.toString();关键经验单次拼接用String循环拼接必须用StringBuilder否则会产生大量临时对象。3.1.2 字符串分割与正则String data Java,Python,C,JavaScript; String[] languages data.split(,); // 简单分割 String complexData A1,B2,C3,D4; String[] items complexData.split((?\\D)(?\\d)|(?\\d)(?\\D)); // 复杂正则分割3.2 数学运算专题3.2.1 Math类常用方法double a 3.6, b 2.4; // 四舍五入 long rounded Math.round(a); // 4 // 向上取整 double ceil Math.ceil(b); // 3.0 // 向下取整 double floor Math.floor(a); // 3.0 // 幂运算 double power Math.pow(2, 10); // 1024.0 // 随机数 double random Math.random(); // [0,1)3.2.2 精度处理技巧// 保留两位小数 double value 123.45678; double formatted Math.round(value * 100) / 100.0; // 123.46 // 更精确的方式 DecimalFormat df new DecimalFormat(#.##); String result df.format(value); // 123.463.3 日期时间处理专题3.3.1 Date与Calendar转换// Date转Calendar Date now new Date(); Calendar cal Calendar.getInstance(); cal.setTime(now); // Calendar转Date cal.add(Calendar.DAY_OF_MONTH, 7); Date nextWeek cal.getTime();3.3.2 日期计算模式// 计算两个日期相差天数 Calendar cal1 Calendar.getInstance(); Calendar cal2 Calendar.getInstance(); cal2.add(Calendar.MONTH, 1); long diffInMillis cal2.getTimeInMillis() - cal1.getTimeInMillis(); long diffInDays diffInMillis / (1000 * 60 * 60 * 24);4. 常见问题与解决方案4.1 字符串编码问题// 错误示范 String str new String(bytes); // 可能产生乱码 // 正确做法 String str new String(bytes, UTF-8);4.2 日期格式化线程安全// 非线程安全用法多线程环境下可能出错 SimpleDateFormat sdf new SimpleDateFormat(yyyy-MM-dd); // 线程安全方案1每次创建新实例 // 线程安全方案2使用ThreadLocal private static final ThreadLocalSimpleDateFormat dateFormat ThreadLocal.withInitial(() - new SimpleDateFormat(yyyy-MM-dd));4.3 数学运算精度丢失// 错误示范 double result 0.1 0.2; // 0.30000000000000004 // 解决方案1使用BigDecimal BigDecimal bd1 new BigDecimal(0.1); BigDecimal bd2 new BigDecimal(0.2); BigDecimal sum bd1.add(bd2); // 0.3 // 解决方案2限定精度范围 double epsilon 0.000001; if(Math.abs(result - 0.3) epsilon) { // 视为相等 }5. 高级应用技巧5.1 正则表达式优化// 基础匹配 String pattern \\d{3}-\\d{2}-\\d{4}; // 美国社保号格式 // 预编译正则提升性能 Pattern compiledPattern Pattern.compile(pattern); Matcher matcher compiledPattern.matcher(input); if(matcher.matches()) { // 匹配成功 }5.2 自定义工具类封装public class StringUtils { // 判空处理 public static boolean isBlank(String str) { return str null || str.trim().isEmpty(); } // 反转字符串 public static String reverse(String input) { if(isBlank(input)) return input; return new StringBuilder(input).reverse().toString(); } }5.3 Java 8时间API迁移// 传统Date转LocalDate Date date new Date(); Instant instant date.toInstant(); LocalDate localDate instant.atZone(ZoneId.systemDefault()).toLocalDate(); // 日期计算更简洁 LocalDate tomorrow LocalDate.now().plusDays(1); LocalTime nextHour LocalTime.now().plusHours(1);6. 实战项目建议基于这组编程题可以扩展以下实战项目学生成绩管理系统字符串处理文件IO银行利息计算器Math类应用会议日程安排工具日期时间处理数据清洗工具正则表达式应用我在实际教学中发现当学生完成8-15题后再让他们尝试这些实战项目能够显著提升对Java常用类的理解深度。特别是日期时间处理部分建议额外增加时区转换的练习这是企业开发中的常见需求。

相关新闻

多智能体编排实战:集成Copilot与Claude构建Antigravity系统

多智能体编排实战:集成Copilot与Claude构建Antigravity系统

最近一年,多智能体系统这个词几乎被各种框架和社区项目反复包装,但真正能落地解决问题的编排方案并没有想象中那么多。我最近在做的 Antigravity 多智能体系统,就是一套把代码生成能力和通用对话能力拆开,分别交给 Copilot 与 Cla…

2026/10/13 8:01:27 阅读更多 →
MySQL数据可视化实战:从SQL到图表的全链路指南

MySQL数据可视化实战:从SQL到图表的全链路指南

记得第一次接到数据可视化需求时,我天真地以为"把SQL查出来,拖进Excel画个折线图"就算完工。结果业务方看了一眼就问:"为什么周末的销售永远是坑?"我排查半天,才发现是时区字段混了,晚…

2026/10/13 8:01:27 阅读更多 →
数据字典设计实战:表结构、新增逻辑与缓存一致性避坑指南

数据字典设计实战:表结构、新增逻辑与缓存一致性避坑指南

我做的后台系统多了,几乎每个系统都要碰一遍数据字典。但说实话,不少项目直到上线半年后才开始认真做这个模块,而"新增数据字典"这个看起来简单的需求,背后藏着不少容易踩的坑。这篇文章我打算把数据字典从表结构设计到…

2026/10/13 8:01:27 阅读更多 →

最新新闻

基于PaddleOCR与PyQt5的GUI车票识别系统设计与实现

基于PaddleOCR与PyQt5的GUI车票识别系统设计与实现

简介:这是一套基于GUI的OCR车票识别完整毕业设计项目,面向计算机视觉、机器学习方向的本科生及入门开发者,重点解决车票日期、车次、座位号等关键信息的自动提取与可视化操作问题。压缩包共82个文件,整体约4.01MB,包含…

2026/10/13 8:37:52 阅读更多 →
Prim算法详解:最小生成树的原理、实现与工程实践

Prim算法详解:最小生成树的原理、实现与工程实践

1. “Prime算法”到底在讲什么先把这个名字聊透。“Prime算法”在计算机与数据结构的语境下,最常被对应到两条线:一条是图论里求最小生成树的经典贪心算法——Prim算法,另一条则是素数(Prime Number)相关的数论算法&am…

2026/10/13 8:37:52 阅读更多 →
改限制不如改记录:AI内容安全审查记录实战解析

改限制不如改记录:AI内容安全审查记录实战解析

我先不跟你聊那些参数、榜单、跑分,最近这轮更新日志读下来,真正值得关心的变化往往藏在模型之外的“运行记录”里。不少团队把“每日AI观察”的焦点,从“这次又收紧了多少条限制规则”,转向了“审查记录到底长什么样”。我最近正…

2026/10/13 8:37:52 阅读更多 →
终端显示‘impeccable‘?揭秘CLI认证成功标识与误搜根源

终端显示‘impeccable‘?揭秘CLI认证成功标识与误搜根源

1. 项目概述:一个被误读的 CLI 工具命名现象最近在多个技术社区和开发者群聊里,频繁看到“impeccable”这个词被当作某个命令行工具的名称反复提及——它既不是 npm 官方包、也不是主流开源组织发布的 CLI,更没有对应的 GitHub 仓库或文档站。…

2026/10/13 8:37:52 阅读更多 →
UG/NX教程筛选与学习路径:从版本匹配到建模、加工实战

UG/NX教程筛选与学习路径:从版本匹配到建模、加工实战

简介:这是一份整理50套UG(Unigraphics NX)学习教程下载地址的PDF文档,面向使用UG进行产品设计、模具设计、逆向工程及数控加工的工程师和学员,旨在解决教程资源分散、难以系统查找的问题。文档收录了从UG NX4.0到NX7.5…

2026/10/13 8:37:52 阅读更多 →
视频目标跟踪标注工具VATIC非Docker安装全攻略

视频目标跟踪标注工具VATIC非Docker安装全攻略

如果你要做目标检测或者视频目标跟踪,第一步往往不是调模型,而是先把训练数据准备好。标注一个视频里每个目标每一帧的位置,听起来不复杂,真做起来又磨人又容易出错。VATIC 就是干这个的开源视频标注工具:打开浏览器&a…

2026/10/13 8:36:51 阅读更多 →

日新闻

物联网系统集成避坑指南:从选型到验收的关键要点

物联网系统集成避坑指南:从选型到验收的关键要点

做了这么多年物联网系统集成的项目,我最大的感受是,大部分坑不是出在技术前沿,而是出在一些看起来很平常的地方。设备选了便宜的、协议没问清楚、现场没摸透、验收标准写得含糊——这些细枝末节,最后都会变成延期、超支和扯皮的大…

2026/10/13 0:00:57 阅读更多 →
ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

如果你玩ESP32有一阵子了,很难不碰到舵机控制这道坎。做智能小车要转方向,做机械臂要抬关节,做云台要偏航俯仰,背后都是同一个东西在干活:舵机。而我见过太多人卡在“代码能编译、舵机就是不听话”这个阶段&#xff0c…

2026/10/13 0:00:57 阅读更多 →
CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

1. 为什么CAN总线至今仍是工业现场的“硬通货”?——从汽车底盘到智能温室的真实需求你有没有拆过一辆老款燃油车的中控台?或者调试过某高校实验室里那台跑着Modbus协议却频频丢帧的PLC控制柜?又或者,在某个农业物联网项目里&…

2026/10/13 0:00:57 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/13 2:54:56 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/12 0:16:38 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 21:05:09 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 14:48:49 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 18:11:17 阅读更多 →