java String new 的问题怎么解决

String strn=new String("rfeigheh");
为什么说开辟的两个内存空间 一个内存空间成为了垃圾

因为String 是引用数据类型,所有String strn自然在栈中就有了一块内存空间了,而你又new了一个String类型的对象,所以还要开辟一个内存空间

因为"tggjjfs"这个字符串在创建前,jvm首先观察常量池中有没有这个字符串,没有就在常量池中新创建一个。
而这个String str是使用关键字new在堆区显式创建的一个对象,该对象的内容是"tggjjfs"。
这样,常量池中的那个"tggjjfs"就是浪费了。