Java StringBuilder的indexOf()不';我什么也不退

Java StringBuilder的indexOf()不';我什么也不退,java,string,stringbuilder,indexof,Java,String,Stringbuilder,Indexof,输出: StringBuilder builder = new StringBuilder(); builder.setLength(10); builder.append("d"); System.out.println(builder.length() + "\t" + builder.toString() + "\t" + builder.indexOf("d")); 问题: 11 我的理解是: Why indexOf() doesn'

输出:

    StringBuilder builder = new StringBuilder();
    builder.setLength(10);
    builder.append("d");        
    System.out.println(builder.length() + "\t" + builder.toString() + "\t" + builder.indexOf("d"));
问题:

11 
我的理解是:

Why indexOf() doesn't return anything.

如果你看一下

如果newLength参数大于或等于当前长度,则会附加足够的空字符('\u0000'),以便length成为newLength参数

这就是为什么在设置长度后附加“d”时,它会放在10个空字符之后


为什么indexOf()不返回任何内容

它确实返回一个值,即
10
,因为索引是基于0的。这是代码的输出

 As per my understanding, it should return 10, since StringBuilder is counting the "d" as part of its length in length().
 But in case if "d" is not part of string hold by StringBuilder then, it should return -1 and length should be 10.
无法获得输出的原因可能是您的控制台不支持
null
字符。这就是为什么当它遇到空字符
\u0000
时,它会停止在控制台中打印值。尝试使用支持Unicode字符打印的eclipse

快照示例:


如果您查看

如果newLength参数大于或等于当前长度,则会附加足够的空字符('\u0000'),以便length成为newLength参数

这就是为什么在设置长度后附加“d”时,它会放在10个空字符之后


为什么indexOf()不返回任何内容

它确实返回一个值,即
10
,因为索引是基于0的。这是代码的输出

 As per my understanding, it should return 10, since StringBuilder is counting the "d" as part of its length in length().
 But in case if "d" is not part of string hold by StringBuilder then, it should return -1 and length should be 10.
无法获得输出的原因可能是您的控制台不支持
null
字符。这就是为什么当它遇到空字符
\u0000
时,它会停止在控制台中打印值。尝试使用支持Unicode字符打印的eclipse

快照示例:


但是在print语句中,我有
indexOf()
,我没有得到返回值。我重新运行了代码,现在只有11是输出。虽然我没有发现eclipse控制台有问题,但为了重新验证输出,我将在命令行上尝试,如果输出与您解释的相同,那么我将接受您的回答。但是在print语句中,我有
indexOf()
,并且我没有得到返回值。我重新运行了代码,现在只有11是输出。虽然我没有发现eclipse控制台有问题,但为了重新验证输出,我将在命令行上尝试,如果输出与您解释的相同,那么我将接受您的答案