String s = new String(“xxx“);创建了几个对象?
当String s = new String(" xxx") 的时候,创建了几个对象?
答案应该是一个或者两个。
因为,当JVM遇到new String(“xxx”)的时候,会去方法区中的字符串常量池中寻找"xxx"字符串,如果没有找到该字符串,就会在常量池中创建"xxx"字符串,然后在堆内存中创建一个String对象,该对象指向常量池的"xxx",同时栈中也有该String对象的引用(即String s3),保存的是该String对象的地址,而该String对象保存的是字符串"xx"的地址,所以创建了两次对象,分别是String对象,字符串对象
若当JVM在常量池中找到了"xx"字符串,则只用创建一个String对象即可,本次只创建了一个对象
那么,String a = “xx”,创建了几个对象?
答案:只创建了一个对象,即字符串对象