`
dolonfly
  • 浏览: 968 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

探究java中的substring()方法

阅读更多

前几天在做一个小程序,突然想到了先到了双等号和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,也就是字符串所处地址的引用 ,所以得出不管是字符串本身还是所对应的地址都是同一个。

 

分享到:
评论
2 楼 WoKo_Jb 2012-06-07  

搜噶!

理解的好深那!!


1 楼 阿拉丁没有神灯 2012-05-15  
学习了  顶你

相关推荐

    java 如何使用substring()方法截取子串

    在Java编程语言中,`substring()`方法是字符串类(String)的一个重要成员,它用于从原始字符串中提取子串。这个方法非常实用,特别是在处理文本数据时,我们需要根据特定的需求截取字符串的一部分。下面我们将详细...

    java中substring与substr的用法.pdf

    "java中substring与substr的用法" java 中的字符串处理是编程中最基本也是最重要的一部分,substring 和 substr 两个方法是 java 中最常用的字符串处理方法。在本文中,我们将详细介绍 substring 和 substr 两个...

    java中substring与substr的用法实用.pdf

    Java 中的 substring 与 substr 方法 Java 语言中提供了两种截取字符串的方法:substring 和 substr,这两种方法都是用于从字符串中提取指定范围的子字符串。下面对这两种方法的用法进行详细介绍: substring 方法...

    Java中由substring方法引发的内存泄漏详解

    Java 中由 substring 方法引发的内存泄漏详解 Java 中的 substring 方法是一个非常常用的字符串操作方法,但是在 JDK 1.6 中,如果不当使用该方法,可能会导致严重的内存泄漏问题。下面我们将详细介绍 Java 中由 ...

    浅谈Java的String中的subString()方法

    总之,`Java` 中的 `String` 类的 `substring()` 方法是提取字符串子串的重要工具,通过指定开始和结束索引,可以灵活地获取所需的部分字符串。正确理解和使用这个方法,能够有效地提升代码的可读性和效率。在编写...

    Java substring方法实现原理解析

    在 Java 中,substring 方法的实现原理是不同的版本的 JDK 中实现方式各不相同。了解这些差异可以帮助我们更好地使用 substring 方法。 JDK 6 中的 substring 实现 在 JDK 6 中,String 类包含三个成员变量:char ...

    java中substring与substr的用法参考.pdf

    java中substring与substr的用法参考.pdf

    Java中substring的使用方法

    截取str中从beginIndex?始至endIndex结束时的字符串,并将其赋值给str;  下面是一段演示程序: public class StringDemo{ public static void main(String agrs[]){ String str=this is my original string; ...

    Java substring原理及使用方法实例

    Substring是Java中一个重要的字符串操作方法,用于截取字符串中的子串。下面是对Java substring原理及使用方法实例的详细解释: 一、Substring原理 Substring方法的基本原理是截取字符串中的子串,返回一个新的...

    substring截取字符串-Java中的方法-参考价值不大,需要的下.docx

    这是Java中字符串不可变性的体现。 3. 实际应用: `substring()`方法广泛应用于各种场景,如数据处理、文本分析、日志记录等。例如,如果你有一个很长的URL,可能需要截取其中的一部分;或者在处理用户输入时,可能...

    java中截取带汉字的字符串

    ### Java中截取带汉字的字符串 在Java编程语言中,处理包含中文字符的字符串时,经常遇到的一个问题是如何正确地截取...通过以上方法,我们可以在Java中有效地处理包含中文字符的字符串截取问题,避免出现乱码等情况。

    String 截取字符串方法subString()

    在Java编程语言中,`String`类提供了多种方法来操作字符串,其中`substring()`方法用于截取字符串中的某一部分。它有两种重载形式,分别是单参数和双参数。 1. **单参数substring方法**: `public String ...

    JAVA日期判断方法小结

    在JAVA语言中,日期判断是非常重要的一部分,以下是常见的日期判断方法的总结: 1. 判断某年是否为润年 判断某年是否为润年是日期判断的基本方法之一。该方法可以使用以下代码实现: ```java public static ...

    js substr,substring与java substring和C# substring的区别解析

    js substr(start[,length])表示从start位置开始取length个字符串 js substring(start,end)表示从start,到end之间的字符串,包括start位置的字符但是不包括end... 您可能感兴趣的文章:Js中的substring,substr与C#中的

    Java中substring的参数及字符串的相等判断

    字符串操作无疑在各种编程语言及平台上都是必不可少的,功能相通,但用法却存在微妙的区别,比如java中取子串及相等的判断,切入正题。  1. substring  常用的用法包括:  (1)取索引为startidx之后(包括...

    java string类常用方法

    Java中的String类是Java语言中最基本的类之一,它提供了许多实用的方法来操作字符串。在日常开发中,我们经常会使用这些方法来完成字符串的处理和操作。下面我们将详细介绍Java String类中的常用方法。 charAt方法 ...

    java字符串的截取方法substring()代码解析

    Java 中的字符串截取方法是通过 substring() 方法来实现的,该方法可以从指定的字符串中截取出一部分字符,返回一个新的 String 对象。substring() 方法有两种重载形式:substring(int beginIndex) 和 substring...

    数据库中的substring

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

    Java截取(提取)子字符串(substring()).pdf

    在Java编程语言中,`substring()`方法是`String`类的一个非常重要的成员,它用于从一个给定的字符串中截取或提取出一部分新的子字符串。`substring()`提供了两种主要的使用形式,这两种形式都在处理字符串时发挥着...

Global site tag (gtag.js) - Google Analytics