有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!


共 (4) 个答案

  1. # 1 楼答案

    维基百科的一个例子是,假设你有一个字符串“abcdef”,“d”字符将从字符“a”开始偏移三

    Offset (computer science)

  2. # 2 楼答案

    根据维基百科Offset (computer science)

    数组或其他数据结构对象内的偏移量是一个整数,表示对象起点与给定元素或点之间的距离(位移),可能位于同一对象内。只有当对象的所有元素大小相同(通常以字节或单词表示)时,距离的概念才有效

    获取文件位置

    可以使用Java RandomAccessFile的getFilePointer()方法获取其当前位置。当前位置是RandomAccessFile当前所在字节的索引(偏移量)。下面是使用其getFilePointer()方法获取RandomAccessFile的当前位置的示例:

    例如,让我们以java中RandomAccessFile中的Offest为例:

    RandomAccessFile randomAccessFile = new RandomAccessFile("data/data.txt", "r");
    
     byte[] dest      = new byte[1024];
     int    offset    = 0;
     int    length    = 1024;
     int    bytesRead = randomAccessFile.read(dest, offset, length);
    

    本例将字节序列读入dest byte数组,作为参数传递给read()方法。read()方法将从RandomAccessFile的当前文件位置开始读取文件。read()方法将从偏移量参数提供的数组位置开始,最多从长度参数提供的字节数开始,将数据写入字节数组。此read()方法返回实际读取的字节数

  3. # 3 楼答案

    What does "offset" mean in the context of programming? Does it mean in the beginning or by a distance?

    一般来说,“偏移”是指从某个给定位置测量的某种形式的距离。这个职位可能是……的开始。。。某物但这并不一定

    “偏移”的具体含义将取决于使用它的上下文。(理想情况下,从上下文来看,意义将是显而易见的。)


    What does the String.offsetByCodePoints(int index, int codePointOffset) method do?

    此方法计算特定charString中的位置。char将是Unicode码点的第一个字符,即codePointOffset码点位于index给出的位置之后

    (因此,在本文中,“偏移”指的是从给定代码单元的位置以Unicode代码点测量的距离。)

    index和结果都是正常的字符串索引值;i、 它们是char位置

    重点是。。。当您将String视为Unicode代码点序列时,您的代码需要考虑一个事实,即一个代码点可能由1或2 char个值组成

    要理解以上所有内容的含义,您可能需要对Unicode、代码点和代码单元、UTF-16以及Java如何建模Unicode字符串进行一些背景阅读


    What does "unpaired surrogates" in the method documentation mean?

    Java字符串表示Unicode代码点的字符>;65535作为UTF-16代理字符。在格式良好的UTF-16字符串中,代理项成对出现,分别表示Unicode代码点的高位和低位

    这句话的意思是,如果一个String包含未正确配对的代理项,它会将它们视为单独的代码点。。。用于计算代码点

    另见:What is a "surrogate pair" in Java?

  4. # 4 楼答案

    据JavaDoc报道

    String.offsetByCodePoints(int index, int codePointOffset)
    

    Returns the index within this object that is offset from {@code index} by {@code codePointOffset} code points.

    下面是一个用法示例

    int num = 0;
    num = "Test_String".offsetByCodePoints(0, 2); //num is 2
    num = "Test_String".offsetByCodePoints(3, 2); //num is 5
    num = "Test_String".offsetByCodePoints(9, 5); //Throws an exception since offset goes out-of-bounds