本帖最后由 杨锦 于 2012-8-6 19:23 编辑
String(char[],offset,count):这个方法是将字符数组中的一部分转成字符串。//楼主这里就理解错了,里面两个参数的意思是,起始索引,和个数,不是起始和结束
然后自己动手试了一下
public class Test1 {
public static void main(String[] sge){
method_t();
}
public static void stp(Object ob){
System.out.println(ob);
}
public static void method_t(){
char[] arr = {'a','b','c','d','e','f'};
String s = new String(arr,1,5) //这里是从1号角标开始,取出5个,所以是 bcdef
// 你改成 String s = new String(arr,2,5),那就是从角标2开始取五个,那就要取到角标6了,你的数组长度只有6,怎么可能有角标6呢
stp("s="+s); //所以就溢出了嘛
}
}
打印结果s=bcdef
但是把 String s = new String(arr,1,5);换成String s = new String(arr,2,5);
为什么就数组越界呢?Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 7
char[] arr = {'a','b','c','d','e','f'}; 中最后一个下标明明是5啊??
这是文档上的解释
Stringpublic String(char[] value, int offset, int count)分配一个新的 String,它包含取自字符数组参数一个子数组的字符。offset 参数是子数组第一个字符的索引,count 参数指定子数组的长度。该子数组的内容已被复制;后续对字符数组的修改不会影响新创建的字符串。 参数: value - 作为字符源的数组。 offset - 初始偏移量。 count - 长度。 抛出: IndexOutOfBoundsException - 如果 offset 和 count 参数索引字符超出 value 数组的范围。 |