【问题标题】:Overloaded StringBuilder insert() and Difference Between offset and index重载的StringBuilder insert()和偏移量和索引之间的区别
【发布时间】:2016-08-31 08:17:07
【问题描述】:

我只是想知道在指示我们可以插入指定参数的位置(字符串、对象、char[] 等类型)时,偏移量和索引的语义是否有任何区别。例如,所有两个参数的 insert() 重载方法都将该位置称为“偏移量”。但是,这个:

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

使用“索引”来指代插入发生在字符串中的位置。 从技术上讲,我认为正确的术语应该是“偏移”,但只是想知道为什么类设计者使用两个不同的术语来表示基本上相同的操作。

谢谢。

【问题讨论】:

  • 一般来说,我相信我看到'index' 用于一般的位置,而'offset' 最常与'length' (或'len',如这里)一起使用以表示位置范围.当然,您是对的,StringBuilderinsert 方法因此不遵循这种用法。
  • 方法签名已从StringBuffer 接管。当然,这不能回答你的问题。

标签: java indexing insert offset stringbuilder


【解决方案1】:

来自javadoc

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

所以:

  • offsetstr 相关,char[] 您要添加到 StringBuilder 的内容中
  • indexStringBuilder中的实际内容相关

具体来自 javadoc:

index - 插入子数组的位置。

str - 一个字符数组。

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

【讨论】:

  • 你好 Davide,看看剩下的两个参数重载的 insert() 方法。 “offset”用来指StringBuilder中的实际内容,而不是“index”。
  • @soti84 你看不到其他方法的描述。无论如何,这个类的开发者似乎为这两种方法之一使用了错误的名称选择。他们每个人的描述都是正确的。
猜你喜欢
  • 2015-04-11
  • 1970-01-01
  • 2011-03-13
  • 1970-01-01
  • 2018-08-02
  • 1970-01-01
  • 2018-12-21
  • 2014-04-07
  • 1970-01-01
相关资源
最近更新 更多