`
tankmarshal
  • 浏览: 36302 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

String类substring方法的源码问题

    博客分类:
  • JAVA
阅读更多

看String的源码

看到

    public String substring(int beginIndex, int endIndex) {
	if (beginIndex < 0) {
	    throw new StringIndexOutOfBoundsException(beginIndex);
	}
	if (endIndex > count) {
	    throw new StringIndexOutOfBoundsException(endIndex);
	}
	if (beginIndex > endIndex) {
	    throw new StringIndexOutOfBoundsException(endIndex - beginIndex);
	}
	return ((beginIndex == 0) && (endIndex == count)) ? this :
	    new String(offset + beginIndex, endIndex - beginIndex, value);
    }

 

当时就想到2个问题,第一个是endIndex可以等于count,因为他的判定条件是Index > count,第二个就是他return的是

new String(offset + beginIndex, endIndex - beginIndex, value)

 再看看这个构造方法

    String(int offset, int count, char value[]) {
	this.value = value;
	this.offset = offset;
	this.count = count;
    }

 也就是char value[]是共享的,只是调整offset和count的值来完成截取的。

 

 不明白这样做的目的是什么,有什么好处,新截出来的字符串不是有浪费空间的嫌疑?

 

然后查阅网上其他人的关于substring的文章

参考博客:http://blog.csdn.net/bzwm/article/details/5844045

 发现这个substring方法还是要小心点用

 

分享到:
评论

相关推荐

    java中的String类常用方法解析(一)

    本文将深入解析`String`类的一些常用方法,帮助开发者更好地理解和使用这个核心类。 1. **构造方法** - `String()`:创建一个空字符串。 - `String(char[] value)`:根据字符数组创建字符串。 - `String(String ...

    String_raw-源码.rar

    在Java编程语言中,`String`类是使用最频繁的类之一,它...通过分析`String_raw-源码.zip`文件中的源代码,开发者可以更深入地了解这些方法的实现细节,有助于优化代码性能,解决特定问题,或者进行自定义字符串操作。

    C# String类型判断数据源码

    4. **字符串操作**:String类提供了丰富的成员方法,如`Substring()`截取子串,`Trim()`去除两端空白,`ToLower()`和`ToUpper()`转换为小写和大写,`Replace()`替换子串,`Split()`拆分字符串等。 5. **字符串格式...

    Java常用类源码

    例如,`substring()`方法用于提取子字符串,`indexOf()`方法查找字符或子串的位置,`equals()`方法进行字符串内容比较。 2. `ArrayList` 和 `LinkedList` 类:这两个类都是`List`接口的实现,用于存储有序的元素...

    Java substring原理及使用方法实例

    Substring方法的基本语法是`String substring(int beginIndex, int endIndex)`,其中`beginIndex`是截取的开始索引,`endIndex`是截取的结束索引。注意,截取的索引是从0开始的,且截取的范围是左闭右开,即包括`...

    Java源码解析——看优秀源码最能使人进步

    Java.lang.String类是Java语言中的一种基本数据类型,该类的定义、字段属性、构造方法、equals方法、hashCode方法、charAt方法、compareTo方法、concat方法、indexOf方法、replace方法、split方法、substring方法、...

    数据库中的substring

    在IT领域,数据库是存储和管理数据的核心工具,而`substring`函数是数据库查询中一个非常...在实际工作中,结合源码理解和使用工具,如SQL查询优化器,可以帮助我们更好地掌握`substring`的使用方法,提升工作效率。

    C#常用方法程序源码仅供学习

    这个压缩包"\"C#常用方法程序源码仅供学习\""提供了丰富的示例代码,帮助开发者深入理解并运用这些方法。下面,我们将详细探讨一些重要的C#常用方法及其应用场景。 1. **字符串操作** - `Substring()`: 用于从字符...

    Java类库复习——java.lang.String

    `String`类提供了多种构造方法,如`String()`用于创建空字符串,`String(char[] value)`通过字符数组初始化,`String(String original)`用于复制已有字符串,以及`String(char[] value, int offset, int count)`用于...

    java源码整理包

    String类提供了大量方法,如`concat()`, `substring()`, `indexOf()`, `replace()`等,用于字符串的连接、截取、查找和替换。深入理解这些方法的内部实现有助于优化字符串操作的性能。 2. **日期(Date)**:Java的`...

    String和string区别以及string详解

    首先,`String`和`string`在C#中实际上是指同一个东西,都是System.String类的别名。C#设计者为了提高代码的可读性,推荐在编写代码时使用`string`关键字,因为它更符合英语习惯,易于理解。但是,由于历史原因或者...

    System System命名空间源码

    String类实现了许多操作字符串的方法,如Concat、IndexOf、Substring等,其源码展示了如何高效地处理字符串。 3. **System.IO**: 提供了文件和流操作,如FileStream、StreamReader和StreamWriter。这些类在处理输入...

    初步支持String和StringBuffer类

    源码方面,`String`的实现是基于字符数组,而`StringBuffer`则扩展了`AbstractStringBuilder`类,同样使用字符数组。`StringBuffer`的关键方法如`append`、`insert`、`delete`等,都是直接操作这个内部数组。这些...

    软件版权源码整理工具(著作权整理工具)仅适合(*.cpp;*.h;*.java)项目源码_Deom可以改造

    软件版权源码整理工具(著作权整理工具)仅适合(*.cpp;*.h;*.java)项目源码_Deom可以改造成志气其他开发语言开发的源码项目; 软件著作权申请时,需要准备前30页后30... lexts.Add(tmpstr.Substring(2).ToLower());

    JAVA基本类源代码

    `String`类提供了许多实用的方法,如`substring()`、`concat()`、`indexOf()`等,学习其源代码有助于掌握字符串操作的内部机制。 3. `Integer`类:作为`int`的包装类,提供了将整数与字符串之间转换的便利方法,...

    string源代码.pdf

    substring函数用于从字符串中提取子串,源码中通过循环和条件判断实现子字符串的提取和返回。 需要注意的是,由于原始内容中存在OCR技术导致的识别错误,所以在理解上述函数的源码时,应当特别注意那些可能导致理解...

    C#对各种字符串的操作,及函数使用方法的实例

    string rightString = myString.Substring(myString.Length - 5); // 相当于Right函数 Console.WriteLine(midString); // 输出:"World" Console.WriteLine(leftString); // 输出:"Hello" Console.WriteLine(right...

    java jdk 实例宝典源码

    - **String类**:Java中不可变的字符序列,广泛用于字符串操作,如`substring()`、`indexOf()`、`concat()`等。 - **Arrays类**:提供了对数组进行排序、复制、填充的操作,如`sort()`、`equals()`。 - **...

    java常用类库源码

    9. **字符串处理**:String类是Java中最常用的类之一,源码解析可以帮助我们理解字符串的不可变性、substring、replace等方法的实现。 10. **枚举和注解**:Java枚举提供了一种安全的常量表示,而注解则提供了一种...

    每天学点C++(C++实例教程:教程+源码)01string容器.zip

    这个压缩包“每天学点C++(C++实例教程:教程+源码)01string容器.zip”显然是为了帮助初学者通过实例来学习`std::string`的用法。 首先,`std::string` 是一个动态数组,可以自动调整大小以容纳更多的字符。你可以...

Global site tag (gtag.js) - Google Analytics