1、true true;因为没有新建String对象,s1=“abc”存储在常量池中,s2=“abc”;发现常量池中已有"abc"就不再新建对象,s1和s2指向的是同一个对象。
2、2个,new了个s1,以及“abc”;
3、s1在堆内存中new了个对象,而s2存储在常量池中,两者的地址值不一样而内容相同,所以s1==s2 false而s1.equals(s2); true
4、s1=“a"+"b"+"c"没有创建对象而是将运算结果”abc“存储在常量池中,所以s1和s2指向的是同一对象;s1==s2 结果为true;s1.equals(s2);结果为true;
5、true |