前几天在做一个小程序,突然想到了先到了双等号和equals的区别,这个大家都知道:除了基本类型外,双等号判断地址是否相等,equals是判断对象的值是否相等。这个就是写本文章的前提。
那么String类中的subString(int i)函数中传递参数0时,是新建一个对象呢还是用原来的对象呢?我们拿例子来说明。
java code:
String hello = "hello world";
String world = hello.substring(0);
System.out.println(hello);
System.out.println(world);
System.out.println(hello == world);
System.out.println(hello.equals(world));
输出结果:
hello world
hello world
true
true
输出结果是两个true,后面那个true很容易想到(字符串相等),但前一个true就表名了字符串对象所在的地址也是相同的,也就是说是同一个。
这是为什么呢?看下面jdk中的源代码:
public String substring(int beginIndex) {
return substring(beginIndex, count);
}
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);
}
可以看到这样的一句:
return ((beginIndex == 0) && (endIndex == count)) ? this :
new String(offset + beginIndex, endIndex - beginIndex, value);
如果前面的条件成立则返回this,也就是字符串所处地址的引用 ,所以得出不管是字符串本身还是所对应的地址都是同一个。
分享到:
相关推荐
在Java编程语言中,`substring()`方法是字符串类(String)的一个重要成员,它用于从原始字符串中提取子串。这个方法非常实用,特别是在处理文本数据时,我们需要根据特定的需求截取字符串的一部分。下面我们将详细...
"java中substring与substr的用法" java 中的字符串处理是编程中最基本也是最重要的一部分,substring 和 substr 两个方法是 java 中最常用的字符串处理方法。在本文中,我们将详细介绍 substring 和 substr 两个...
Java 中的 substring 与 substr 方法 Java 语言中提供了两种截取字符串的方法:substring 和 substr,这两种方法都是用于从字符串中提取指定范围的子字符串。下面对这两种方法的用法进行详细介绍: substring 方法...
Java 中由 substring 方法引发的内存泄漏详解 Java 中的 substring 方法是一个非常常用的字符串操作方法,但是在 JDK 1.6 中,如果不当使用该方法,可能会导致严重的内存泄漏问题。下面我们将详细介绍 Java 中由 ...
总之,`Java` 中的 `String` 类的 `substring()` 方法是提取字符串子串的重要工具,通过指定开始和结束索引,可以灵活地获取所需的部分字符串。正确理解和使用这个方法,能够有效地提升代码的可读性和效率。在编写...
在 Java 中,substring 方法的实现原理是不同的版本的 JDK 中实现方式各不相同。了解这些差异可以帮助我们更好地使用 substring 方法。 JDK 6 中的 substring 实现 在 JDK 6 中,String 类包含三个成员变量:char ...
java中substring与substr的用法参考.pdf
截取str中从beginIndex?始至endIndex结束时的字符串,并将其赋值给str; 下面是一段演示程序: public class StringDemo{ public static void main(String agrs[]){ String str=this is my original string; ...
Substring是Java中一个重要的字符串操作方法,用于截取字符串中的子串。下面是对Java substring原理及使用方法实例的详细解释: 一、Substring原理 Substring方法的基本原理是截取字符串中的子串,返回一个新的...
这是Java中字符串不可变性的体现。 3. 实际应用: `substring()`方法广泛应用于各种场景,如数据处理、文本分析、日志记录等。例如,如果你有一个很长的URL,可能需要截取其中的一部分;或者在处理用户输入时,可能...
### Java中截取带汉字的字符串 在Java编程语言中,处理包含中文字符的字符串时,经常遇到的一个问题是如何正确地截取...通过以上方法,我们可以在Java中有效地处理包含中文字符的字符串截取问题,避免出现乱码等情况。
在Java编程语言中,`String`类提供了多种方法来操作字符串,其中`substring()`方法用于截取字符串中的某一部分。它有两种重载形式,分别是单参数和双参数。 1. **单参数substring方法**: `public String ...
在JAVA语言中,日期判断是非常重要的一部分,以下是常见的日期判断方法的总结: 1. 判断某年是否为润年 判断某年是否为润年是日期判断的基本方法之一。该方法可以使用以下代码实现: ```java public static ...
js substr(start[,length])表示从start位置开始取length个字符串 js substring(start,end)表示从start,到end之间的字符串,包括start位置的字符但是不包括end... 您可能感兴趣的文章:Js中的substring,substr与C#中的
字符串操作无疑在各种编程语言及平台上都是必不可少的,功能相通,但用法却存在微妙的区别,比如java中取子串及相等的判断,切入正题。 1. substring 常用的用法包括: (1)取索引为startidx之后(包括...
在编程领域,特别是涉及到文本处理的时候,`substring`方法是一个非常常见且重要的工具,它用于从一个字符串中截取部分子字符串。这个方法在Java、JavaScript等许多编程语言中都有提供,我们主要以Java为例来详细...
Java中的String类是Java语言中最基本的类之一,它提供了许多实用的方法来操作字符串。在日常开发中,我们经常会使用这些方法来完成字符串的处理和操作。下面我们将详细介绍Java String类中的常用方法。 charAt方法 ...
Java 中的字符串截取方法是通过 substring() 方法来实现的,该方法可以从指定的字符串中截取出一部分字符,返回一个新的 String 对象。substring() 方法有两种重载形式:substring(int beginIndex) 和 substring...
在IT领域,数据库是存储和管理数据的核心工具,而`substring`函数是数据库查询中一个非常...在实际工作中,结合源码理解和使用工具,如SQL查询优化器,可以帮助我们更好地掌握`substring`的使用方法,提升工作效率。