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
相关产品推荐
相关产品推荐

