Java 常用语法极简通关(四):数组与字符串的常用操作
开篇一个巡检成绩表处理程序上一章的成绩统计里数组已经露过脸了int[] scores {92, 85, ...}。这一章把它讲透再把日常开发中刷屏的 String 方法一口气过完。还是先看一段完整程序——录入一组成绩做排序展示、查最高最低、格式化输出一张简易成绩表public class ScoreTableApp { public static void main(String[] args) { // 1. 声明并初始化数组 int[] scores {85, 92, 74, 66, 90}; String[] names {张伟, 李强, 王磊, 赵鹏, 陈刚}; // 2. 求最高分、最低分、平均分 int max scores[0]; int min scores[0]; int sum 0; for (int i 0; i scores.length; i) { if (scores[i] max) { max scores[i]; } if (scores[i] min) { min scores[i]; } sum scores[i]; } double avg (double) sum / scores.length; // 3. 打印成绩表拼接出整齐的表头 StringBuilder table new StringBuilder(); table.append( 巡检成绩表 \n); for (int i 0; i names.length; i) { String name names[i]; // 名字不足 3 个字的后面补空格对齐 if (name.length() 3) { name name ; } table.append(name).append().append(scores[i]).append( 分\n); } System.out.print(table.toString()); // 4. 输出统计结论 System.out.println(最高分 max 最低分 min 平均分 avg); // 5. 找出第一个优秀者的名字 for (int i 0; i scores.length; i) { if (scores[i] 90) { System.out.println(首个优秀者 names[i].trim()); break; } } } }运行结果 巡检成绩表 张伟 85 分 李强 92 分 王磊 74 分 赵鹏 66 分 陈刚 90 分 最高分92最低分66平均分81.4 首个优秀者李强程序里涉及三样东西数组、String 方法、StringBuilder分三部分讲。第一部分数组——定长的同类型容器声明与初始化的两种姿势// 姿势一声明时直接给值最常用 int[] scores {85, 92, 74, 66, 90}; // 姿势二只给长度元素拿默认值 int[] arr new int[5]; // 5 个元素全是 0 String[] names new String[3]; // 3 个元素全是 null要点int[]是一个整体——int 的数组这种类型。数组可以装基本类型也可以装引用类型。new int[5]创建后元素自动填默认值int 是 0double 是 0.0boolean 是 false引用类型包括 String是 null。数组长度创建时定死之后不能变。这是数组最大的局限也是后来 ArrayList第九章登场的理由。三件套下标、length、遍历scores[0] // 取第一个元素下标从 0 开始 scores.length // 长度5注意数组的 length 是属性没有括号 scores[i] 100; // 按下标赋值遍历的两种写法第三章已讲这里对号入座for (int i 0; i scores.length; i) { ... } // 要下标用经典 for for (int s : scores) { ... } // 纯取值用增强 for必知坑数组越界ArrayIndexOutOfBoundsException下标的合法范围是0 到 length-1访问scores[5]长度就是 5 时运行期直接抛异常int[] scores {85, 92, 74}; System.out.println(scores[3]); // 编译能过运行崩溃ArrayIndexOutOfBoundsException这类异常是新手期最常见的运行时报错。越界十有八九来自i scores.length这种边界写错记住标准姿势是 length。顺带一提多维数组如int[][] matrix存在但业务代码里用得很少软考偶尔露脸知道int[3][4]是 3 行 4 列即可本系列不展开。第二部分String 的常用方法——就这一把天天用String 类的方法有几十个日常高频的如下表结合案例逐个看方法作用例子length()字符个数锚杆.length()→ 2charAt(i)取下标 i 的字符锚杆.charAt(0)→锚substring(a, b)截取 [a, b) 区间设备巡检.substring(0, 2)→设备indexOf(str)找子串首次出现的位置3号皮带.indexOf(皮带)→ 2contains(str)是否包含子串井下-580m.contains(580)→ trueequals(str)内容比较第二章铁律equalsIgnoreCase(str)忽略大小写比较abc.equalsIgnoreCase(ABC)→ truetrim()去掉首尾空白 维修 .trim()→维修split(分隔符)拆成字符串数组85,92,74.split(,)→[85,92,74]replace(旧, 新)替换全部匹配a-b-c.replace(-, /)→a/b/cstartsWith / endsWith前缀/后缀判断文件名、编号判断常用toUpperCase / toLowerCase大小写转换统一格式用结合案例看几个典型的① 名字对齐用的length()if (name.length() 3) { name name ; // 不足 3 字补空格表格才齐 }注意区分数组的 length 是属性scores.lengthString 的 length 是方法name.length()。带不带括号是经典笔误点也是考点。② 解析 CSV 风格的数据split()trim()是黄金搭档String line 张伟 , 92 , 综采一队 ; String[] parts line.split(,); String name parts[0].trim(); // 张伟 int score Integer.parseInt(parts[1].trim()); // 92字符串转 int第十章细讲③ 判断后再截取indexOf()配合substring()String location 井下-580m东翼大巷; int idx location.indexOf(m); if (idx 0) { // indexOf 找不到会返回 -1先判断 String depth location.substring(3, idx 1); // 580m }④ 前缀判断处理编号String code WX-2026-0341; if (code.startsWith(WX-)) { System.out.println(这是一条维修单); }别忘了第二章讲过的 String 不可变性这些方法全部返回新字符串原字符串纹丝不动。name.trim()之后要把结果接回来——name name.trim();光调用不接收等于白调用。第三部分StringBuilder——循环拼接的唯一正确姿势案例里拼成绩表用的是 StringBuilderStringBuilder table new StringBuilder(); table.append( 巡检成绩表 \n); for (int i 0; i names.length; i) { table.append(name).append().append(scores[i]).append( 分\n); } System.out.print(table.toString());为什么不用熟悉的回顾第二章String 不可变每次都新建一个对象。循环 1000 次就产生 1000 个临时字符串对象内存和速度都是浪费。StringBuilder 内部是一块可变的字符缓冲区append是原地追加不产生新对象最后toString()一次成型。用法就三个动作StringBuilder sb new StringBuilder(); // 1. 创建 sb.append(a).append(100).append(b); // 2. 追加可链式什么类型都能塞 String result sb.toString(); // 3. 转成 String规则一句话循环里拼字符串用 StringBuilder一次性拼两三个用就行编译器对简单的拼接有优化不用矫枉过正。案例里还有个细节\n是换行符转义字符。常用的转义就三个\n换行、\t制表符、\在字符串里表示一个双引号本身。一个隐患两个数组按下标对应有多脆弱回头看案例的数据结构int[] scores {85, 92, 74, 66, 90}; String[] names {张伟, 李强, 王磊, 赵鹏, 陈刚};张伟得 85 分这个关系靠的是两个数组下标对齐来维系的names[i] 的成绩是 scores[i]。程序跑对的前提是录入时两边顺序严格一致。问题在于这种对应关系编译器完全不管。假设录入时手一抖names 里漏了一个人或者顺序排错程序照样编译通过、照样运行只是从此以后李强的成绩全是别人的——结果张冠李戴还不会有任何报错提示。这是数组时代最隐蔽的逻辑 bug 温床。解法其实直觉上很简单把姓名、成绩、班组捆在一起装进一个工人里让它们物理上不可分。这个捆在一起的手段就是下一章的主角——类与对象。常踩的坑排雷清单数组越界下标合法范围 0 ~ length-1边界一律写i length。length 带不带括号数组scores.length属性Stringname.length()方法记死这个区别。String 方法不接收返回值s.trim()之后 s 没变字符串不可变必须s s.trim()。substring 的右边界不含substring(0, 2)取下标 0 和 1左闭右开和很多人的直觉相反。indexOf 找不到返回 -1直接用返回值当下标会越界先判 0。循环里用拼长字符串几百上千次循环后性能明显下降该上 StringBuilder。多数组按下标对应数据错位不报错是最隐蔽的逻辑 bug 温床。本章小结数组定长、同类型两种初始化姿势元素默认值int 为 0、引用为 null越界是运行时异常。String 高频方法就那一把length()、substring()、indexOf()、contains()、trim()、split()、replace()、startsWith等全部返回新串。StringBuildernew→append→toString()三步循环拼接的唯一正确姿势。数组按下标对应多份数据的痛点引出了下一章的主角。下一章是全系列的地基类与对象——字段、方法、构造器、this 与 static。我们会把姓名成绩班组封装成一个真正的工人对象亲手解决本章结尾的数据错位问题。

相关新闻

KMS_VL_ALL_AIO:Windows系统激活终极解决方案,3分钟解决激活难题

KMS_VL_ALL_AIO:Windows系统激活终极解决方案,3分钟解决激活难题

KMS_VL_ALL_AIO:Windows系统激活终极解决方案,3分钟解决激活难题 【免费下载链接】KMS_VL_ALL_AIO Smart Activation Script 项目地址: https://gitcode.com/gh_mirrors/km/KMS_VL_ALL_AIO 还在为Windows系统激活问题而烦恼吗?每天面对…

2026/10/11 23:34:25 阅读更多 →
3个简单步骤:快速安装RTL88x2BU无线网卡驱动,让Linux WiFi满速运行

3个简单步骤:快速安装RTL88x2BU无线网卡驱动,让Linux WiFi满速运行

3个简单步骤:快速安装RTL88x2BU无线网卡驱动,让Linux WiFi满速运行 【免费下载链接】RTL88x2BU-Linux-Driver Realtek RTL88x2BU WiFi USB Driver for Linux 项目地址: https://gitcode.com/gh_mirrors/rt/RTL88x2BU-Linux-Driver 还在为Linux系统…

2026/10/15 0:46:10 阅读更多 →
华硕笔记本性能控制终极指南:轻量级开源工具G-Helper完整教程

华硕笔记本性能控制终极指南:轻量级开源工具G-Helper完整教程

华硕笔记本性能控制终极指南:轻量级开源工具G-Helper完整教程 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops with nearly the same functionality. Works with ROG Zephyrus, Flow, TUF, Strix, Scar, ProArt, Vivobook, Zenb…

2026/10/13 2:18:05 阅读更多 →

最新新闻

从零基础到独立项目:Python完整学习路线与避坑指南

从零基础到独立项目:Python完整学习路线与避坑指南

Python学习这事儿,我这些年被问到的频率仅次于"现在学编程还有没有前途"。问的人多了,我发现大家真正想要的并不是一份课程清单,而是一条能走得通、走不偏的路线图:今天学什么、明天学什么、学到什么程度算会了、从哪个…

2026/10/15 9:17:11 阅读更多 →
Vue2集成富文本编辑器优化Word导入方案

Vue2集成富文本编辑器优化Word导入方案

1. 项目背景与核心痛点在Vue2项目中集成富文本编辑器时,Word文档导入功能一直是开发中的高频需求场景。以WangEditor为例,虽然其提供了基础的粘贴功能,但直接复制Word内容时经常出现格式错乱、样式丢失、图片无法显示等问题。根据实际项目统计…

2026/10/15 9:17:11 阅读更多 →
2026企业微信上门服务:适配零售、教育等多行业场景的落地指南

2026企业微信上门服务:适配零售、教育等多行业场景的落地指南

摘要:数字化工具在落地过程中,不少企业机构会遇到功能配置复杂、内部推行困难、行业场景难以复用等现实难题。企业微信上门服务依托产品内外协同的能力,由合作服务商提供线下或远程的落地指导,面向零售、教育、金融、政务等不同行业输出适配方案。本文结合产品能力与真实落地案…

2026/10/15 9:17:11 阅读更多 →
计算机顶会论文发表全流程指南:从创新点到实验设计

计算机顶会论文发表全流程指南:从创新点到实验设计

1. 论文发表的核心逻辑与时间规划2026年发表论文这件事,现在就该动手准备了。学术圈里真正的高手都清楚,顶级期刊的发表周期普遍在12-24个月,这还不包括前期研究、实验验证和反复修改的时间。我见过太多博士生临毕业前半年才着急投稿&#xf…

2026/10/15 9:17:11 阅读更多 →
国际版扫码点餐系统:多语言多币种支付集成架构实战

国际版扫码点餐系统:多语言多币种支付集成架构实战

扫码点餐这个赛道,国内早就卷成了红海,Java后端做一套本地版本并不难,难的是把它改造成一个真正意义上的国际版。我这次接手的系统,就是把一套原本只面向国内单一市场的扫码点餐系统,重构成支持多语言、多币种、多支付…

2026/10/15 9:17:11 阅读更多 →
PPT翻页背后:从ISA到中断的软硬件协作全链路解析

PPT翻页背后:从ISA到中断的软硬件协作全链路解析

你大概率被人问过这句话:请描述一下PPT完成翻页时,电脑软硬件是如何协作的。别小看它,它把一个通用计算机最关键的“输入—处理—输出”全链路都卷了进来。这一问之所以经典,一方面是因为它横跨操作系统、计算机体系结构、编译原理…

2026/10/15 9:16:11 阅读更多 →

日新闻

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

1. 为什么选择容器化方式部署 LoRa 网络服务LoRa 物联网项目落地时,网络服务器是整个链路的核心枢纽。它负责接收网关上报的数据包、完成去重与解密、再把有效载荷分发给上层应用。早期大家习惯把网络服务器直接装在物理机上,依赖一堆系统库和特定版本的…

2026/10/15 0:00:46 阅读更多 →
共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

1. 共享推理服务里,扩缩容到底难在哪做过大模型推理服务部署的人,大概都经历过这样的场景:一个团队共用一套推理集群,A 业务跑的是 7B 的小模型,B 业务跑的是 72B 的大模型,C 业务白天流量高、晚上几乎归零…

2026/10/15 0:00:46 阅读更多 →
Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

1. 引子:一次内核恐慌引发的追查先从一个真实场景说起。某次我给一台老旧的嵌入式设备折腾系统裁减,为了把启动时间压进两秒以内,我手贱地把一串自认为“没用”的 systemd 服务给 disable 了,其中就包括systemd-remount-fs.servic…

2026/10/15 0:00:46 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 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/15 0:14:36 阅读更多 →
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/14 22:45:47 阅读更多 →
黑夜航拍船只数据集训练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/14 7:53:34 阅读更多 →