在一些老套的笔试题中,会要你判断s1==s2为false还是true,s1.equals(s2)为false还是true。
String s1 = new String("xyz"); String s2 = "xyz"; System.out.println(s1 == s2); System.out.println(s1.equals(s2));对于这种题,你总能很快的给出标准答案:==比较的是对象地址,equals方法比较的是真正的字符数组。所以输出的是false和true。
上面的属于最低阶的题目,没有什么难度。
现在这种老套的题目已经慢慢消失了,取而代之的是有一些变形的新题目:
String s1 = "aa"; String s2 = "bb"; String str1 = s1 + s2; String str2 = "aabb"; //输出什么呢??? System.out.println(str1 == str2); final String s3 = "cc"; final String s4 = "dd"; String str3 = s3 + s4; String str4 = "ccdd"; //又输出什么呢??? System.out.println(str3 == str4);难度提升了一些,但思考一下也不难得出答案是false和true。
今天的文章就是以这几个题目展开的。
String对象的创建先简单看一下String类的结构: