1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > String如何截取字符串长度

String如何截取字符串长度

时间:2018-10-28 23:08:12

相关推荐

String如何截取字符串长度

20应届生面试题:使用String引用类型的时候,用过哪些方法?比如如何截取一段给定字符串的长度?

答:没回答上来!(没用过截取字符串)

String引用类型中有一个叫做substring的方法,这个就是用来截取字符串的。

Ctrl+鼠标左键点进了substring方法内,查看到了以下源码。

//小白的理解://beginIndex是起始位置,endIndex是末端位置public String substring(int beginIndex, int endIndex) {//起始位置不能小于0 不然没有意义if (beginIndex < 0) {throw new StringIndexOutOfBoundsException(beginIndex);}//同理末端位置的值不能大于实际长度,超过实际长度截取没有意义if (endIndex > value.length) {throw new StringIndexOutOfBoundsException(endIndex);}//实际要截取的位置,就是末端位置-起始位置的值,比如7-1=6//6就是截取出来的长度int subLen = endIndex - beginIndex;//当然截取长度不能是小于零的数。if (subLen < 0) {throw new StringIndexOutOfBoundsException(subLen);}//这里就是返回所截取长度的新的字符串了,//他是按照你所输入的始末位置所自定义出来的//其实这里没咋看懂,就知道是返回实际长度的//如果起点位置的值是0开始,末端位置的值是最大长度。那么就返回原字符串//否则按照始末位置返回一个新的你自己所定义出来的字符串return ((beginIndex == 0) && (endIndex == value.length)) ? this: new String(value, beginIndex, subLen);}

源码里为什么一直在判断0,应该和String这个引用类型的实现原理有关,String它是一个char数组的储存结构。某种意义上也是一个数组。所以起始端按照数组里的定义,第0个元素实际上就是直观上的第一个元素。

(我是一个小白,对实现原理不懂所以只能说点自己所能理解的了)

以下是我用IDEA处于好奇,使用代码测试了一下。

System.out.println("=======================");String c = "abc".substring(0,3);String c1 = "abc".substring(1,3);String c2 = "abc".substring(2,3);String d = "abcdf".substring(0,0);System.out.println(c);System.out.println(c1);System.out.println(c2);System.out.println(d);System.out.println("=======================");

String d1 = "abcdf".substring(0,6);System.out.println(d1);

这个错误和源码里的末端值超过实际长度的异常名字一样

if (endIndex > value.length)

throw new StringIndexOutOfBoundsException(endIndex);

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。