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

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

复制代码
1
2
3
4
5
//用法 String s = "asdfsadf"; boolean b = s.startsWith("asd"); //返回一个boolean 判断字段是不是开头。

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

复制代码
1
2
3
4
5
6
7
8
9
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来计算、比较的。

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
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内容请搜索靠谱客的其他文章。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部