最近在学习Java,可是对一个简单的String类有点搞不定了。
 
普通的类,要创建对象必须使用 Object o = new Object() 形式,String类却有两种。
1. String s = new String("1234");
2. String s = "1234".
 
对第一种格式,比较明确,1)创建了一个String对象,并包含值"1234"; 2)创建一个String类的引用s; 3)将s 指向第一步创建的 String对象。
 
可是对第二种格式,一直以为是只创建了一个String引用,而这个引用指向"1234"这个串。没有明确到底是不是创建了String对象。
 
后经过反复阅读sun的java api文档,才算搞明白:第二种格式相当于
     char data[] = {'1', '2', '3','4'};
     String s = new String(data);
 
也就是说,其实也创建了一个String对象.
 
因此对一些返回值为String的方法,如果所返回的String对象不存在,则会自动创建String对象,然后返回String对象的引用;如果所返回的String对象存在,则只返回String对象的引用。
 
以上是最近学习Java的一点体会,先记在这里。