对于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