Java 以下字符串对象中的参数做什么?

Java 以下字符串对象中的参数做什么?,java,Java,在这段代码中,我认为输出应该是CD,当数组从0变为n,第二和第三个位置应该是67和68,它们是 ASCII等价于CD 但是输出实际上是CDE。为什么会这样?来自文档: public class PgHS { public static void main(String[] args) { byte ascii[] = {65,66,67,68,69,70}; String s1 = new String(ascii,2,3); Syste

在这段代码中,我认为输出应该是
CD
,当数组从
0
变为
n
,第二和第三个位置应该是
67
68
,它们是 ASCII等价于
CD

但是输出实际上是CDE。为什么会这样?

来自文档:

public class PgHS {

    public static void main(String[] args) {
        byte ascii[] = {65,66,67,68,69,70};
        String s1 = new String(ascii,2,3);
        System.out.println(s1);
    }

}

// output: CDE
通过使用平台的默认字符集对指定的字节子数组进行解码来构造新字符串

在您的例子中:它从
ascii
输入创建新字符串,从
ascii[2]
开始,字符串长度为
3
字节


您的打印应该是
CDE

RTFM Daniel@泰哈斯·甘蓝:好的,明白了!谢谢你
String(byte[] bytes, int offset, int length)