两个new + 常量池中的 "hello"
堆里new了两个对象,常量池一个"hello"对象
s1,s2,s3,s4都是引用变量不是对象
S3和S1是同一个以象,并没有分配对象
编译时刻一个,运行期两个
String s1=new String("hello"); 就创建了2个对象,而String s2=new String("hello"); 创建一个对象,String s3=s1和String s4=s2是引用创建对象
Person p1 = new Person("tom");
Person p2 = new Person("tom");
Person p3 = p1;
Person p4 = p2;
String是个特殊的类,String s1 = new String("xyz")这样就创建了2个对象了。
应该是问java吧,编译过程中有一个常量池,遇到"Hello"这样的String类型常量,会在常量池当中直接生成一个相对应的对象,s2会直接使用常量池中的"Hello"来直接赋值,s1则会调用构造函数重新生成,具体百度一下“java 常量池”就行了