1. Java中两种创建字符串对象方式的分析
第一种:
String s1 = new String("abc");
String s2 = new String ("abc");
System.out.println(s1 == s2);//返回false
解析:
采用new关键字创建一个字符串对象时,JVM首先在字符串池中查找有没有这个"abc"字符串对象,如果有,则将这个字符串对象的引用传递给引用s1,然后在堆中创建一个"abc"字符串对象,最后将堆中的字符串地址返回给s1;
如果没有,则先在字符串中创建一个"abc"对象,然后在堆中创建一个"abc"字符串对象,最后将堆中"abc"字符串的地址返回给s1。
s2则指向堆中创建的另一个"abc"对象,这样s1和s2的内容是相同的,但是指向两个不同的"abc"对象。
第二种:
String s1 = "abc";
String s2 = "abc";
System.out.println