1.
public class dog(){
String s="woof"; /*开辟了一个专门存放String数据的区域存放woof,且woof不能被修改*/
s="java"; /*仅仅改变了s的引用,但woof仍然在数据区域内*/
}
jvm工作过程中,s="java"会先查看专用于存放String的区域内是否存在java这一字符串,如果没有就创建一个String对象储存它并引用给s,如果有则直接引用给s。
2.
pubilc class (){
String s="Meowyee";
String s1="Meowyee";/*jvm首先在String储存区域内找不到Meowyee,如果找得到,则返回它的引用给s1,如找不到,则创建一个新的string对象放到该区域中,这里由于前面有String s="Meowyee",对象已经被引用,因此s s1引用同一个对象,所以s==s1*/
String s2=new String("Meowyee");/*jvm首先在string池内里面看找不找到字符串 "Meowyee",找到,不做任何事情,否则,创建新的string对象,放到string池里面。由于遇到了new,还会在内存上(不是string区域里面)创建string对象存储 "Meowyee",并将内存上的(不是string区域内的)string对象返回给s2。所以s==s2将返回false,不是引用同一个对象。*/
}