下载工作台
Java 编程实战

数组、String 与常用 API

试读上半部分 · 解锁后可读全文

第 4 章 · 数组、String 与常用 API

本章目标:掌握一维/二维数组声明、初始化与遍历;理解数组是定长引用类型;熟练使用 String 不可变特性与 StringBuilder;掌握 lengthcharAtsubstringindexOfsplittrimequals 等常用 API;能完成 toolkit-demo 的商品标签解析CSV 行处理;对照 python-dev ch04 列表与字符串。

学时建议:4 小时(含 1.5 小时跟练)

前置:完成 java-dev ch03;建议已学 python-dev ch04


4.1 场景说明:商品标签与 CSV 行

toolkit-demo 从虚构 CSV 行解析商品 ID、名称与标签列表,并生成展示用标题——类似 python-dev 中用 split 处理 a,b,c 字符串。

输入行:SKU001,Java入门书,hot|new|edu
输出:  [SKU001] Java入门书 (标签:hot, new, edu)
learn-java/toolkit-demo/src/main/java/demo/text/
  ├── ArrayBasics.java
  ├── StringApiDemo.java
  └── ProductLineParser.java

4.2 数组基础

4.2.1 声明与初始化

int[] scores = new int[5];           // 默认值 0
int[] primes = {2, 3, 5, 7, 11};
String[] names = new String[] {"Alice", "Bob"};

int len = scores.length;             // 5,注意是属性非方法
对比Python listJava 数组
长度动态 append固定 length
类型可混合(不推荐)元素类型一致
越界IndexErrorArrayIndexOutOfBoundsException

4.2.2 遍历

for (int i = 0; i < scores.length; i++) {
    scores[i] = i * 10;
}

for (int s : scores) {
    System.out.println(s);
}

4.2.3 二维数组

int[][] matrix = new int[3][4];
int[][] grid = {{1, 2}, {3, 4}, {5, 6}};

for (int r = 0; r < grid.length; r++) {
    for (int c = 0; c < grid[r].length; c++) {
        System.out.print(grid[r][c] + " ");
    }
    System.out.println();
}

4.3 数组与内存示意

names ──→ [引用0] ──→ "Alice"
          [引用1] ──→ "Bob"

数组变量存的是堆上数组对象的引用names[0] = null 可断开引用。

int[] a = {1, 2, 3};
int[] b = a;        // 同一数组
b[0] = 99;
System.out.println(a[0]);   // 99

复制需 Arrays.copyOf

import java.util.Arrays;

int[] copy = Arrays.copyOf(a, a.length);

4.4 String 不可变

String s = "hello";
s.toUpperCase();           // 返回新字符串,s 仍为 "hello"
String upper = s.toUpperCase();
操作是否修改原串
toUpperCase否,返回新对象
+ 拼接产生新对象
大量拼接StringBuilder

字符串常量池:字面量 "java" 可能复用同一对象,故 == 有时为 true,但业务比较一律 equals

String x = "java";
String y = "java";
String z = new String("java");
System.out.println(x == y);       // 可能 true
System.out.println(x.equals(z));  // true

4.5 StringBuilder

StringBuilder sb = new StringBuilder();
for (int i = 0; i < 5; i++) {
    sb.append("id").append(i).append(",");
}
String result = sb.toString();
// 删除末尾逗号
if (result.endsWith(",")) {
    result = result.substring(0, result.length() - 1);
}
PythonJava
"".join(parts)String.join(",", parts) 或 StringBuilder
列表累加StringBuilder append
String joined = String.join(", ", "hot", "new", "edu");

4.6 常用 String API 表

方法作用示例结果
length()字符个数"ab".length() → 2
charAt(i)取字符"ab".charAt(0)'a'
substring(start,end)子串"hello".substring(1,3)"el"
indexOf(s)查找位置"abc".indexOf("b") → 1
contains(s)是否包含"abc".contains("a") → true
startsWith/endsWith前缀后缀
toLowerCase/toUpperCase大小写
trim去首尾空白" a ".trim()"a"
strip(11+)Unicode 空白更彻底
split(regex)分割"a,b".split(",")
replace替换"a-b".replace("-","_")
equals内容相等不用 ==
equalsIgnoreCase忽略大小写
isEmpty/isBlank空串判断"".isBlank() → true
format格式化String.format("%.2f", 3.1)
String line = "  SKU001, 书 , hot|new  ";
line = line.strip();
String[] parts = line.split(",", 3);  // 最多分 3 段

注意split("|")| 是正则特殊字符,应 split("\\|")


4.7 ArrayBasics 完整代码

package demo.text;

import java.util.Arrays;

/**
 * 数组基础练习 — toolkit-demo

以下内容需解锁后阅读

试读已结束。解锁本章 ¥5.00,或开通年度会员畅读全部教程。
年度会员 ¥199.00/年; 小紫 AI 工作台有效会员 ¥99.00/年

正文仅在服务端鉴权后下发,未付费无法获取下半部分内容。