我是靠谱客的博主 害怕时光,这篇文章主要介绍java String中startsWith解析(1.8),现在分享给大家,希望可以做个参考。

JAVA中有判断字符开头的方法。
解析日志的时候按照行读取日志,经常使用到String类中startsWith方法来过滤日志,下面来看源码分析一番:

//用法
String s = "asdfsadf";
boolean b = s.startsWith("asd");
//返回一个boolean 判断字段是不是开头。

方法很简单也很好用,下面来看源码

  public boolean startsWith(String var1) {
        return this.startsWith(var1, 0);
    }
    //调用的是这个,然后又调用了重载方法startsWith,传了个0
    //往下看endsWith一下就能明白,两个方法核心都是一样的
     public boolean endsWith(String var1) {
        return this.startsWith(var1, this.value.length - var1.value.length);
    }

然后就是重头戏了startsWith 判断的核心源码,首先要有个思想–String其实是一个char[],在String中字符的运算都是用char来计算、比较的。

public boolean startsWith(String var1, int var2) {
        char[] var3 = this.value;//拿到当前String的char数组
        int var4 = var2;//遍历开始index
        char[] var5 = var1.value;//拿到入参String的char数组
        int var6 = 0;//入参String从0下标开始算
        int var7 = var1.value.length;//入参String长度
        if (var2 >= 0 && var2 <= this.value.length - var7) {
            //是个do while 判断
            //while里面判断两个char数组中char字符是否相等,当判断完入参char数组最后一个字符也相等后返回true 其他条件都返回false
            do {
                --var7;
                if (var7 < 0) {
                    return true;
                }
            } while(var3[var4++] == var5[var6++]);

            return false;
        } else {
            return false;
        }
    }

最后

以上就是害怕时光最近收集整理的关于java String中startsWith解析(1.8)的全部内容,更多相关java内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(43)

评论列表共有 0 条评论

立即
投稿
返回
顶部