重载的StringBuilder插入()和偏移量与索引之间的差异

时间:2016-08-31 08:17:08

标签: java indexing insert offset stringbuilder

我只是想知道在指示我们可以插入指定参数的位置(类型为String,Object,char []等的位置)时,offset和index的语义之间是否存在任何差异。例如,所有双参数insert()重载方法都将该位置称为" offset"。但是,这一个:

public StringBuilder insert(int index, char[] str, int offset, int len)

使用" index"引用插入发生的字符串中的位置。 从技术上讲,我认为正确的术语应该是" offset"但只是想知道为什么类设计师使用了两个不同的术语,基本上是相同的动作。

谢谢。

1 个答案:

答案 0 :(得分:0)

来自javadoc

  

将str数组参数的子数组的字符串表示形式插入到此序列中。 子阵列从指定的偏移量开始并扩展len个字符。子阵列的字符在索引指示的位置插入此序列。这个序列的长度增加了len chars。

所以:

  • offsetstr相关联,char[]StringBuilder
  • 的内容相关联
  • indexStringBuilder
  • 中的实际内容相关

特别是来自javadoc:

  

index - 插入子阵列的位置。

     

str - 一个char数组。

     

offset - 要插入的子数组中第一个字符的索引

     

len - 要插入的子数组中的字符数。

以下是显示它的示例代码:

    String originalContent = "1234567890";
    char[] charArray = new char[]{'a', 'b', 'c', 'd'};

    StringBuilder a = new StringBuilder(originalContent);
    a.insert(2, charArray, 0, 1);
    System.out.println(a.toString()); // Prints 12a34567890

    StringBuilder b = new StringBuilder(originalContent);
    b.insert(0, charArray, 2, 1);
    System.out.println(b.toString());   // Prints c1234567890