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

Java String带数字参数的构造方法转换char数组的逻辑疑问

关于Java String带数字参数构造方法的逻辑解析

你搞混了这个构造方法的参数定义!这个new String(char[] c, int offset, int count)的三个参数核心含义是:

  • c:待转换的字符数组
  • offset:从数组的第几个索引位置开始截取(数组索引从0开始)
  • count:一共要截取多少个字符,不是结束索引!

咱们逐个拆解你的示例:

第一个示例:

char c[]= {'H', 'E', 'L', 'L', 'O'};
String s= new String (c, 0,3);
System.out.println(s) ;

offset=0代表从索引0(也就是字符'H')开始,count=3代表连续取3个字符,对应数组索引0、1、2的'H'、'E'、'L',所以输出HEL。你之前觉得“最后字符是endIndex-1”只是巧合——0+3=3刚好是结束位置的索引,但本质逻辑是取3个字符,不是到索引3为止。

第二个示例:

char c[]= {'H', 'E', 'L', 'L', 'O'};
String s= new String (c, 1,3);
System.out.println(s) ;

offset=1代表从索引1(也就是字符'E')开始,count=3代表取3个字符,对应数组索引1、2、3的'E'、'L'、'L',所以输出ELL。你之前误以为第三个参数是结束索引,才会产生矛盾,实际上它是截取的字符数量,和结束索引没有直接关联。

总结:这个构造方法的逻辑是从offset索引的位置开始,往后连续取count个字符,只要记住第三个参数是“个数”而非“结束位置”,就不会再搞混了。

内容的提问来源于stack exchange,提问作者Anshul V. Kumar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 23:01:08