You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何程序仅输出前两个词?解析split()后s1[]的存储结构

关于Java split()函数数组存储与循环输出问题的解析

嘿,我来给你把这个问题掰扯明白!先看你这段代码:

String s="hello java world";
String s1[]=s.split("\\s");
for(int i=0;i<s1.length-1;i++) {
    System.out.print(s1[i]);
}

输出结果是hello java,咱们一步步拆解原因。

split()后s1数组的存储结构

你用的split("\\s")是按单个空白字符分割字符串(\\s是正则表达式里匹配空白的写法)。原字符串"hello java world"里有两个空格,把字符串分成了三段,s1数组的存储结构是:

  • s1[0] = "hello"
  • s1[1] = "java"
  • s1[2] = "world"
    简单说就是,它会把分割后的每一段按原顺序依次存在数组里,这个数组的长度是3。

代码输出"hello java"的原因

再看你的for循环条件:i < s1.length - 1。因为s1的长度是3,s1.length - 1就是2,所以循环只会在i=0和i=1的时候执行:

  • 当i=0时,输出s1[0]也就是hello
  • 当i=1时,输出s1[1]也就是java
    这两个内容用print()直接连在一起输出,就变成了hello java。而s1[2]的world因为i到2时不满足i<2的条件,根本没被执行输出,所以你看不到它。

内容的提问来源于stack exchange,提问作者Ishu Sharma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 04:24:12