Java学习之印之String类

来源:互联网 发布:VB整型什么意思 编辑:程序博客网 时间:2024/04/30 04:49
走进这个Java世界,的确让我感受到了不错的程序体验。下面我谈谈对String与  StringBuffer对象的理解。在各类考试中这两个对象的出现比较频。

  String对象创建后,其中的内容是不会再改变的。

  String s=new String();

  这句就创建了一个null的字符串s,我们可以改变它的引用而不能改变其内容,如:

  s="First";

  这时,s就指向了“First”这个对象。

  s=s+" second.";

  这时的s的值是“First second.”,s又重新指向了这个字符串。这样就把前两个对象交给了垃圾回收器去处理了。

  还有关于相同字符串的引用地址相等的问题。如:

  String s1="Java,I like";

  String s2="Java,I like";

    这时s1==s2是的值为true,这表明这两个对象的引用是相同的,即s1,s2都指向了同一个String对象。

这是由于Java采用了String池,将直接声明的字符串做为常量放在String池里,如果在该池里有你要声明的字符串,JVM就直接引用它了,就不会再去创建新的对象,这就是s1、s2的同一个引用的原因。如果用new创建String对象,JVM就会将该对象放入普通内存中。

  如果构造方法是这样的:

  String s3=new String("Java,I like");

  String s4=new String("Java,I like");

    这时s3==s4的值就为false了,这表明这是两个不同的对象,各自有自己的地址。

 

  在使用String对象做为参数的方法对String对象作修改是不会影响原来的数据,如:

    String s="UnChange";

  static void change(String s){

    s="Change";

  }

  change(s);

  System.out.println(s);

  这时控制台输出的是:UnChange

  这说明这样是无法对原有的String对象进行修改。若要修改就只能使用StringBuffer对象。 

原创粉丝点击