以下评论意味着什么,涉及“>>>”运营商?

时间:2017-06-20 04:33:59

标签: java string

我目前正在研究如何通过查看源代码来实现字符串类方法。我注意到在几个字符串类方法中,作者编写了与此类似的命令

// Note: toffset, ooffset, or len might be near -1>>>1.

作者的意图是什么?

更具体地说,我并没有真正得到-1>>>1在这种情况下的含义

以下是包含命令的实际方法:

public boolean regionMatches(boolean ignoreCase, int toffset,
            String other, int ooffset, int len) {
        char ta[] = value;
        int to = toffset;
        char pa[] = other.value;
        int po = ooffset;

        // Note: toffset, ooffset, or len might be near -1>>>1. 
        if ((ooffset < 0) || (toffset < 0)
                || (toffset > (long)value.length - len)
                || (ooffset > (long)other.value.length - len)) {
            return false;
        }
        while (len-- > 0) {
            char c1 = ta[to++];
            char c2 = pa[po++];
            if (c1 == c2) {
                continue;
            }
            if (ignoreCase) {
                // If characters don't match but case may be ignored,
                // try converting both characters to uppercase.
                // If the results match, then the comparison scan should
                // continue.
                char u1 = Character.toUpperCase(c1);
                char u2 = Character.toUpperCase(c2);
                if (u1 == u2) {
                    continue;
                }
                // Unfortunately, conversion to uppercase does not work properly
                // for the Georgian alphabet, which has strange rules about case
                // conversion.  So we need to make one last check before
                // exiting.
                if (Character.toLowerCase(u1) == Character.toLowerCase(u2)) {
                    continue;
                }
            }
            return false;
        }
        return true;
    }

0 个答案:

没有答案