今天看了java的api,String类中有一个 private 的 offset。
请教一下高手,offset 的作用是什么? offset 默认为0,什么情况下,offset 是不为0的?

解决方案 »

  1.   

    public String(char[] value,
                  int offset,
                  int count)分配一个新的 String,它包含取自字符数组参数一个子数组的字符。offset 参数是子数组第一个字符的索引,count 参数指定子数组的长度。该子数组的内容已被复制;后续对字符数组的修改不会影响新创建的字符串。 参数:
    value - 作为字符源的数组。
    offset - 初始偏移量。
    count - 长度。 
    抛出: 
    IndexOutOfBoundsException - 如果 offset 和 count 参数索引字符超出 value 数组的范围。
      

  2.   

    原代码中的注释如下:
    The offset is the first index of the storage that is used.
      

  3.   

    既然它是private的,就是说它跟应用者没太大关系
    个人建议不要花太多时间去钻研这个
    除非你准备参加下一个Jdk版本的开发
      

  4.   

      兄弟,你可能没明白我的意思。我问的是在 String 中有个 private final int offset;
    我想问这个 offset 是什么意思。
      

  5.   

    public String(byte[] bytes,
                  int offset,
                  int length)通过使用平台的默认字符集解码指定的 byte 子数组,构造一个新的 String。新 String 的长度是字符集的函数,因此可能不等于该子数组的长度。 
    当给定 byte 在给定字符集中无效的情况下,此构造方法的行为没有指定。如果需要对解码过程进行更多控制,则应该使用 CharsetDecoder 类。 
    参数:
    bytes - 要解码为字符的 byte
    offset - 要解码的第一个 byte 的索引
    length - 要解码的 byte 数 
    抛出: 
    IndexOutOfBoundsException - 如果 offset 和 length 参数索引字符超出 bytes 数组的范围
    从以下版本开始: 
    JDK1.1