JDK源码之lang.String(五)String类中的常用方法

java.lang.String类的lastIndexOf()方法

1.String类中的lastIndexOf(int ch)方法:

  public int lastIndexOf(int ch) {
        return lastIndexOf(ch, value.length - 1);
    }

 

2.String类中的lastIndexOf(int ch, int fromIndex)方法:

   public int lastIndexOf(int ch, int fromIndex) {
        if (ch < Character.MIN_SUPPLEMENTARY_CODE_POINT) {
            // handle most cases here (ch is a BMP code point or a
            // negative value (invalid code point))
            final char[] value = this.value;
            int i = Math.min(fromIndex, value.length - 1);
            for (; i >= 0; i--) {
                if (value[i] == ch) {
                    return i;
                }
            }
            return -1;
        } else {
            return lastIndexOfSupplementary(ch, fromIndex);
        }
    }

 

 

3.String类中的lastIndexOfSupplementary(int ch, int fromIndex)方法:

 private int lastIndexOfSupplementary(int ch, int fromIndex) {
        if (Character.isValidCodePoint(ch)) {
            final char[] value = this.value;
            char hi = Character.highSurrogate(ch);
            char lo = Character.lowSurrogate(ch);
            int i = Math.min(fromIndex, value.length - 2);
            for (; i >= 0; i--) {
                if (value[i] == hi && value[i + 1] == lo) {
                    return i;
                }
            }
        }
        return -1;
    }

 

4.String类中的lastIndexOf(String str)方法:

    public int lastIndexOf(String str) {
        return lastIndexOf(str, value.length);
    }

 

5.String类中的lastIndexOf(String str, int fromIndex)方法:

    public int lastIndexOf(String str, int fromIndex) {
        return lastIndexOf(value, 0, value.length,
                str.value, 0, str.value.length, fromIndex);
    }

 

 

6.String类中的lastIndexOf(char[] source, int sourceOffset, int sourceCount, String target, int fromIndex)方法:

    static int lastIndexOf(char[] source, int sourceOffset, int sourceCount,
            String target, int fromIndex) {
        return lastIndexOf(source, sourceOffset, sourceCount,
                       target.value, 0, target.value.length,
                       fromIndex);
    }

 

7.String类中的lastIndexOf(char[] source, int sourceOffset, int sourceCount,char[] target, int targetOffset, int targetCount, int fromIndex)方法:

   static int lastIndexOf(char[] source, int sourceOffset, int sourceCount,
            char[] target, int targetOffset, int targetCount,
            int fromIndex) {
        /*
         * Check arguments; return immediately where possible. For
         * consistency, don't check for null str.
         */
        int rightIndex = sourceCount - targetCount;
        if (fromIndex < 0) {
            return -1;
        }
        if (fromIndex > rightIndex) {
            fromIndex = rightIndex;
        }
        /* Empty string always matches. */
        if (targetCount == 0) {
            return fromIndex;
        }

        int strLastIndex = targetOffset + targetCount - 1;
        char strLastChar = target[strLastIndex];
        int min = sourceOffset + targetCount - 1;
        int i = min + fromIndex;

    startSearchForLastChar:
        while (true) {
            while (i >= min && source[i] != strLastChar) {
                i--;
            }
            if (i < min) {
                return -1;
            }
            int j = i - 1;
            int start = j - (targetCount - 1);
            int k = strLastIndex - 1;

            while (j > start) {
                if (source[j--] != target[k--]) {
                    i--;
                    continue startSearchForLastChar;
                }
            }
            return start - sourceOffset + 1;
        }
    }

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当你在Java中进行型转换时,如果尝试将一个型转换为不兼容的型,就会抛出ClassCastException异常。在你提供的问题中,java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Long,这个错误是因为你尝试将一个String型的对象转换为Long型。 这个错误可能是由于你在进行型转换时使用了错误的型或者数据格式不匹配导致的。在你的代码示例中,你尝试将一个参数meterCodes转换为List<String>型。其中,params.get("meterCodes")返回的是一个String型的对象。所以,当你尝试将String型的对象强制转换为List<String>型时,就会抛出ClassCastException。 为了解决这个问题,你需要确保在进行型转换之前,你获取到的参数meterCodes是一个List<String>型的对象。你可以使用JsonUtil.toList方法将字符串转换为List<String>。在你的代码示例中,正确的处理方式是使用JsonUtil.toList((String) params.get("meterCodes"), String.class)将字符串转换为List<String>型的对象。然后,你可以对这个List对象进行操作。 总结起来,要解决java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Long的问题,你需要确保在进行型转换时使用正确的型,并且数据的格式与预期的型匹配。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [JDK 1.5的泛型實現(Generics in JDK 1.5)](https://download.csdn.net/download/hexiang221/1996377)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [java.lang.ClassCastException: java.lang.String cannot be cast to java.util.List](https://blog.csdn.net/Jackey1314007/article/details/127596853)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值