黑马程序员技术交流社区
标题:
我一直搞不懂关于-1的问题
[打印本页]
作者:
liujie445012100
时间:
2014-6-11 21:20
标题:
我一直搞不懂关于-1的问题
package string;
public class StringTest5 {
/*
* 字符串去掉空格事例
*/
public static void main(String[] args) {
String str = "";
System.out.println(getStringTrim(str));
}
private static String getStringTrim(String str) {
int start = 0;
int end = str.length() - 1;
while (start <= end && str.charAt(start) == ' ') {
start++;
}
while (start <= end && str.charAt(end) == ' ') {
end--;
}
return str.substring(start, end + 1);
}
}
就像这个程序,为什么 str.length() - 1 还有结尾end + 1,一些排序方法里也有好多长度-1,谁能告诉我
作者:
彭飞
时间:
2014-6-12 08:57
基础视频里应该有讲到为什么。
1、
int end = str.length() - 1; 这句话,定义一个变量,表示结尾,该结尾是 str的长度, -1刚好表示最后一位,
因为下标是从0 开始的, 自然要-1 能否明白。
2、
return str.substring(start, end + 1); 看了上面的话,是否觉得这里的+1 ,就很矛盾了,这不就数组越界了。
这里涉及到 数组下标的 问题,通常 对下标的取舍,是包含头,不包含尾的,所以,substring 要获取一 个完整的字符串,这里的end就必须+1 。
其实这些问题都很简单, 为什么-1、+1 自己代码上改一改,看结果, 很快茅塞顿开。
祝加油。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2