String,StringBuffer和StringBuilder三者的讲解

 对于java的学习者而言,无论是初学者,还是java大师,String对于大家而言,也绝对不会陌生。下面本人就从

自己学习的角度大致分析一下String,StringBuffer和StringBuilder这三者的区别和联系。如有不足,欢迎补充说

明~谢谢

    1 String类

String类在java的java.lang.String包下面,需要特别说明的是String类是final关键字修饰的,也就是说String类是不能够被继承和修改

的。有人可能会问随说String修饰的类是不能修改的例如下面的情况:

package com.yonyou.test;

class Test{
  public static void main(String[] args) {
	String str=new String("龙不吟");
	str=new String("虎不啸");//原始String对象中str的内容到底变了没有?
	System.out.println(str);

	//下面也是一个String的例子
	String str2="天下太平";
	str2=str2+"国泰民安";//原始String对象中的str2到底变了没有?
	System.out.println(str2);

}
}

  在判断String对象str和str2的是否改变了,这里需要明白一个问题,在java中相关对象的引用变量一般都存在栈中,而相关的对象都是存在堆中的,栈中的

值指向了它所引用的对象(堆中相应的对象的地址)。

例如:

创建一个对象String str=new String("Hello World");

对于变量str而言,它代表的是引用变量,它的值是存储在栈中的,而new String("Hello World")会创建一个新的对象,而对象的值是存储在堆中的。而引用

变量str指向对中的对象new String("Hello World"); 这样看来视乎上面的问题就很好解释了。

由于是String修饰的str和str2而言,它们的引用变量的本身是不能够改变,但是它们指向的对象,比如说指向的堆中地址却是可以改变的。

所以说上面String对象str和str2所对应的原始对象都没有改变,仅仅是str和str2所对应的引用变量的指向发生的改变。这段话有一些绕

理解起来不是那么容易,请多读几遍,反复思考一下。

接下来说String的一些常用的方法

时间: 2024-10-28 23:29:16

String,StringBuffer和StringBuilder三者的讲解的相关文章

String,StringBuffer和StringBuilder的异同

                                                                String,StringBuffer和StringBuilder的异同 String,StringBuffer和StringBuilder的的源码已经在本博客的JDK源码学习系列中有了详细的介绍: String 源码: http://blog.csdn.net/sheepmu/article/details/23303837 StringBuffer 和StringB

【Java】String,StringBuffer与StringBuilder的区别??

String 字符串常量StringBuffer 字符串变量(线程安全)StringBuilder 字符串变量(非线程安全) 简要的说, String 类型和 StringBuffer 类型的主要性能区别其实在于 String 是不可变的对象, 因此在每次对 String 类型进行改变的时候其实都等同于生成了一个新的 String 对象,然后将指针指向新的 String 对象,所以经常改变内容的字符串最好不要用 String ,因为每次生成对象都会对系统性能产生影响,特别当内存中无引用对象多了以

【String,StringBuffer和StringBuilder区别】

在实际java开发中,我们会经常使用到字符串连接的操作,以前我习惯喜欢用String的'+'来操作,觉得非常方便好用,最近认真学习了String,StringBuffer和StringBuilder这三个类,才发现使用String来连接字符串,代码性能会很低.下面我们就字符串连接来分析这三种方式. 1.String 打开String的源码,如图所示 会发现存储字符串的字符数值是final常量.再看String的构造方法,发现String的value值在构造方法就确定了值.这里有必要说明下关键字f

String,StringBuffer与StringBuilder的区别,线程安全,非线程安全

String,StringBuffer与StringBuilder的区别?? 转载地址:http://blog.csdn.net/rmn190/article/details/1492013 另外:StringBuilder的实现与技巧 : http://lixianhuei.cnblogs.com/archive/2005/12/27/305708.html 对线程安全 ,非线程安全的讨论: 怎么理解Stringbuffer 是线程安全的 stringbuilder是线程不安全的? http:

Java String, StringBuffer和StringBuilder实例

1- 分层继承2- 可变和不可变的概念3- String3.1- 字符串是一个非常特殊的类3.2- String 字面值 vs. String对象3.3- String的方法3.3.1- length()3.3.2- concat(String)3.3.3- indexOf(..)3.3.4- substring(..)3.3.5- replace3.3.6- 其它实例4- StringBuffer vs StringBuilder 1- 分层继承 当使用文本数据时,Java提供了三种类别,包括

String,StringBuffer与StringBuilder的区别?-转

String 字符串常量StringBuffer 字符串变量(线程安全)StringBuilder 字符串变量(非线程安全) 简 要的说, String 类型和 StringBuffer 类型的主要性能区别其实在于 String 是不可变的对象, 因此在每次对 String 类型进行改变的时候其实都等同于生成了一个新的 String 对象,然后将指针指向新的 String 对象,所以经常改变内容的字符串最好不要用 String ,因为每次生成对象都会对系统性能产生影响,特别当内存中无引用对象多了

【JAVA】辨析:String,StringBuffer与StringBuilder

参考链接: CSDN:图析:String,StringBuffer与StringBuilder的区别 1. Java String 类:字符串常量 字符串广泛应用 在Java 编程中,在 Java 中字符串属于对象,Java 提供了 String 类来创建和操作字符串. 需要注意的是,String的值是不可变的,这就导致每次对String的操作都会生成新的String对象,这样不仅效率低下,而且大量浪费有限的内存空间. String操作时内存变化的图: 2. StringBuffer 和 Str

String,StringBuffer,StringBuilder三者的区别

相同点: String,StringBuffer,StringBuilder,都是final类,不允许被继承,在本质上都是字符数组, 不同点: 1.String的长度是不可变的而后两者长度可变,在进行连接操作时,String每次返回一个新的String实例,而StringBuffer和StringBuilder的append方法直接返回this,所以当进行大量的字符串连接操作时,不推荐使用String,因为它会产生大量的中间String对象. 2.StringBuffer和StringBuild

String、StringBuffer、StringBuilder三者的区别

String.StringBuffer.StringBuilder这三个都可以用在字符串处理上面,但它们三究竟有什么区别呢? 先来看看String,String是final类,是不可变的对象,在进行字符串连接的时候是新建一个字符串,进行连接后,最后赋值,如果对String赋值N次,就会在内存中为新的对象分配N个新的空间,在内存中保存N个这个对象的副本,浪费系统资源. 比如:String s1 = new String("行者");s1 = s1 + "摩罗";实际上