2 liuqihaolema liuqihaolema 于 2014.11.19 21:55 提问

关于JAVA str.substring(int beginIndex,endIndex)的问题

我看书上说 str.substring(int beginIndex,endIndex)这个代码是从字符串某一索引位置开始截取至某一索引位置结束的子串。我的代码如下:

public class Substring {
public static void main(String[] args) {
String str="hello word";
String size=str.substring(0,3);
System.out.println(size);
}
}
这个最后输出是hel,可是我怎么觉得应该是hell?
0是h,3是l(第二个l),这样截取下来的话不是应该是hell吗

14个回答

dollyn
dollyn   Rxr 2014.11.20 10:54

这些基础函数,看 API文档说明即可:

Returns a new string that is a substring of this string. The substring begins at the specified beginIndex and extends to the character at index endIndex - 1. Thus the length of the substring is endIndex-beginIndex.

Examples:

"hamburger".substring(4, 8) returns "urge"
"smiles".substring(1, 5) returns "mile"

longyc2010
longyc2010 正解,学习了
3 年多之前 回复
showbo
showbo   Ds   Rxr 2014.11.20 09:45

你那本书有问题吧。第二个参数是长度,不是结束字符串下标
see this :http://blog.csdn.net/tony8829/article/details/6448582

snsn1984
snsn1984 第二个参数可以是结束字符串下标,也可以是长度。
3 年多之前 回复
snsn1984
snsn1984   Rxr 2014.11.20 09:53

输出hel是正确的。
这个API的介绍如下:
return a new string consisting of all code units from beginIndex until the end of the string or until endIndex - 1.
所以,这个API本来就是要返回从beginIndex到endIndex-1范围内的字符串,或者是返回从beginIndex到字符串结尾的字符串。

caozhy
caozhy   Ds   Rxr 2014.11.20 10:34

第二个参数是长度而不是结束索引。

save4me
save4me   Ds   Rxr 2014.11.20 10:03

参考 你了解Java中String的substring函数吗?
最终是返回new String(offset + beginIndex, endIndex - beginIndex, value);而offset是存储的第一位,也就是1,也就是说从第1位,取3个字符

ds_LOVE
ds_LOVE   2014.11.20 10:27

简单来说这个方法包括前面字符的下标,不包括后面字符的下标

ds_LOVE
ds_LOVE   2014.11.20 10:27

简单来说这个方法包括前面字符的下标,不包括后面字符的下标

ds_LOVE
ds_LOVE   2014.11.20 11:40

说是第二个参数是长度的,多看看api吧~~再不信去自己去试试str.(5,6)这种,看看是截取一个字符出来,还是6个字符~

q229827701
q229827701   2014.11.20 13:28

看来你没理解函数意义。
0表示,从第一位开始截取。3表示截取三个字符,当然就是hel了。(0,4)才是hell

liangmeiwei
liangmeiwei   2014.11.20 15:45

java里面的范围 一般都是包头不包尾

共14条数据 1 尾页
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
public String substring(int beginIndex, int endIndex)(Java)
基础不牢,地动山摇。今天开始写一些基础Java卷子,写这篇博文原因是看到了这个题。然后抱着认真学习的态度,默默地去敲了一下代码。确实使这个结果: 函数的源代码是这样的:/** * Returns a new string that is a substring of this string. The * substring begins at the specified <co
java String substring(int beginIndex,int endIndex)
public class AC { public static void main(String[] args) { //substring(int beginIndex,int endIndex)                //该子字符串从指定的 beginIndex 处开始,直到索引 endIndex - 1 处的字符。 /* * 参数: beginIndex - 起始索引(包括
java 中substring(int beginIndex, int endIndex) 的用法
public String substring(int beginIndex, int endIndex) 第一个int为开始的索引,对应String数字中的开始位置, 第二个是截止的索引位置,对应String中的结束位置 1、取得的字符串长度为:endIndex - beginIndex; 2、从beginIndex开始取,到endIndex结束,从0开始数,其中不包括e
Java substring的使用
/*  * substring(): String str; str=str.substring(int beginIndex);截取掉str从首字母开始长度为beginIndex的字符串,将剩余字符串赋值给str; str=str.substring(int beginIndex,int endIndex);截取str中从beginIndex开始至endIndex结束
Java基础知识整理(三)- String 类的substring
以前不知道在哪里看到过,介绍substring方法,这里简单总结一下。 public String substring(int beginIndex) { return substring(beginIndex, count); } public String substring(int beginIndex, int endIndex) { if (beg
String中substring方法内存泄漏问题
众所周知,JDK中以前String类中的substring方法存在内存泄漏问题,之所以说是以前,是因为JDK1.7及以后的版本已经修复了,我看都说JDK1.6的版本也存在这个问题,但是我本机上安装的1.6看了看源码不存在内存泄漏问题啊,又看了1.7的源码,和我本机的1.6的一样,是不是我的1.6版版其实是1.7的?!唉,不管了,反正1.7版本肯定没有这个问题(1.5及更老版本肯定有)了,大家就放心
java学习--Java 中 subString(),indexof(),lastindexof()的用法
java中substring和indexof() 和lastindexof() str=str.substring(int beginIndex);截取掉str从首字母起长度为beginIndex的字符串,将剩余字符串赋值给str; str=str.substring(int beginIndex,int endIndex);截取str中从beginIndex开始至endIndex结束时的字符
java中substring的用法和charAt()的用法
java中substring的用法 str=str.substring(int beginIndex);截取掉str从首字母起长度为beginIndex的字符串,将剩余字符串赋值给str; str=str.substring(int beginIndex,int endIndex);截取str中从beginIndex开始至endIndex结束时的字符串,并将其赋值给str; 以下
DTCMS_GetListByPage
public DataSet GetListByPage(string strWhere, string orderby, int startIndex, int endIndex) { StringBuilder strSql=new StringBuilder(); strSql.Append("select * from oa_org T "); if
Java StringBuffer.substring(int start, int end)方法
Java StringBuffer.substring(int start, int end)方法 Java StringBuffer.substring(int start, int end)方法用法实例教程,返回一个新的String,它包含了目前这个序列中包含的字符序列。 描述 java.lang.StringBuilder.substring(int s