startsWith(String prefix,int toffset)源码分析

startsWith(String prefix)是String类的一个方法

String类代表字符串。Java程序中的所有字符串字面值(如"abc")都作为此类的实例实现。

/**
 * str.startsWith(prefix,toffset)
 * 测试此字符串str从指定序列开始,是否是以指定字符串(前缀)开始
 * @param prefix  指定前缀
 * @param toffset 指定序列
 * @return
 */
public boolean startsWith(String prefix, int toffset) 

 基于jdk1.7,String类的startsWith(String prefix,int toffset)方法源码分析:

 public boolean startsWith(String prefix, int toffset) {
        // 被比较的字符串(str),转化为char数组
        char ta[] = value;
        // 指定索引位置
        int to = toffset;
        // 比较的字符串(指定前缀)转化为char 数组,
        char pa[] = prefix.value;
        int po = 0;
        // 指定前缀字符数组的长度
        int pc = prefix.value.length;
        // Note: toffset might be near -1>>>1.
        // 如果指定索引小于0或者指定索引位置大于目标字符数组的长度与指定前缀字符数组的长度,返回false;
        if ((toffset < 0) || (toffset > value.length - pc)) {
            return false;
        }
        // 循环比较pc次,即指定前缀字符数组的长度
        //循环比较字符数组(ta[](从索引位置比较)和pa[](全部比较))的字符是否一一相等
        while (--pc >= 0) {
            // 若相对应的字符有一个不相等,则返回false
            if (ta[to++] != pa[po++]) {
                return false;
            }
        }
        //全部相等,返回true
        return true;
    }

toffset > value.length - pc 

toffest:表示指定索引

value.length :表示被比较字符串数组(str)的长度

pc:比较字符串数组(prefix)的长度

toffset > value.length - pc 即 toffset + pc > value.length

当指定索引大于两数组的差值时,指定前缀遍历不完,则说明一定不满足条件。返回false;

如果参数表示的字符序列是此对象(str)从索引(toffset)处开始的子字符串,则返回true,否则为false。

测试代码:

    public static void main(String[] args) {
        String str = "hello,world";
        boolean b1 = str.startsWith("hello", 0);
        System.out.println(b1);
        System.out.println("-------------------");
        
        boolean b2 = str.startsWith("el");
        System.out.println(b2);
        System.out.println("-------------------");
        
        boolean b3 = str.startsWith("el", 1);
        System.out.println(b3);
        System.out.println("-------------------");
    }

运行结果:

 结果分析:
 boolean b1 = str.startsWith("hello", 0);
  从0号位置比较,prefix.value.length长度的字符一一相等,返回为true;

 boolean b2 = str.startsWith("el");
  默认从0号位置比较,prefix.value.length长度的字符不相等,返回为false;

 boolean b3 = str.startsWith("el", 1);
  相比上一条语句,从1号位置比较,prefix.value.length长度的字符一一相等,返回为true;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java String 类型 API 测试代码 1.String和char[]之间的转换 toCharArray(); 2.String和byte[]之间的转换 getBytes() Arrays工具类 : Arrays.toString(names) StringString replace(char oldChar, char newChar) String replace(CharSequence target, CharSequence replacement) String[] split(String regex) boolean contains(CharSequence s):当且仅当此字符串包含指定的 char 值序列时,返回 true int indexOf(String str):返回指定子字符串在此字符串中第一次出现处的索引 int indexOf(String str, int fromIndex):返回指定子字符串在此字符串中第一次出现处的索引,从指定的索引开始 int lastIndexOf(String str):返回指定子字符串在此字符串中最右边出现处的索引 int lastIndexOf(String str, int fromIndex):返回指定子字符串在此字符串中最后一次出现处的索引,从指定的索引开始反向搜索 boolean endsWith(String suffix):测试此字符串是否以指定的后缀结束 boolean startsWith(String prefix):测试此字符串是否以指定的前缀开始 boolean startsWith(String prefix, int toffset):测试此字符串从指定索引开始的子字符串是否以指定前缀开始 int length():返回字符串的长度: return value.length char charAt(int index): 返回某索引处的字符return value[index] boolean isEmpty():判断是否是空字符串:return value.length == 0 String toLowerCase():使用默认语言环境,将 String 中的所有字符转换为小写 String toUpperCase():使用默认语言环境,将 String 中的所有字符转换为大写 String trim():返回字符串的副本,忽略前导空白和尾部空白 boolean equals(Object obj):比较字符串的内容是否相同 boolean equalsIgnoreCase(String anotherString):与equals方法类似,忽略大小写 String concat(String str):将指定字符串连接到此字符串的结尾。 等价于用“+” String substring(int beginIndex):返回一个新的字符串,它是此字符串的从beginIndex开始截取到最后的一个子字符串。 String substring(int beginIndex, int endIndex) :返回一个新字符串,它是此字符串从beginIndex开始截取到endIndex(不包含)的一个子字符串。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值