楼上的不对啊,按你的意思,那就是只创建一个对象了
当String a =“xyz”时,"xyz"会被换入常量池,这时再String b =“xyz”,虚拟机会去常量池查找,查到了,就不会再创建对象,而是把"xyz”的引用赋给b,此时只创建一个对象;
如果是用new方式(凡是new出来的对象都放到堆内存中),虚拟机不会去常量池查找,而是在堆内存中重新创建一个对象,代码String s = new String("xyz");其中括号中的"xyz”创建了匿名对象,new又重新创建对象,所以创建了两个对象