码迷,mamicode.com
首页 > 其他好文 > 详细

String,StringBuffer和StringBuilder三者的讲解

时间:2015-02-03 22:52:41      阅读:231      评论:0      收藏:0      [点我收藏+]

标签:

       对于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的一些常用的方法

      

      

String,StringBuffer和StringBuilder三者的讲解

标签:

原文地址:http://www.cnblogs.com/xiohao/p/4271140.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!