很高兴能帮助到你,String是个很特殊的类。你真的理解了String str1 = new String(“java”)吗,这句话其实生成了两个对象,一个是存放在堆内存里面的“java”,还有一个对象str1存放在栈内存里面,栈里面的str1指向对内存的具体对象。当执行String str2 = new String(“java”)这句话的时候,首先判断堆内存中是否存在“java”这个对象,查到存在了这个对象就不会在堆内存中生成了,只在栈内存中生成一个str2指向“java”这个对象,所以str1和str2的堆内存其实是一个东西,理解了吗?
你这水平就别来胡说八道。
对象str1?一个?
String a= new String(“java”);
String b= new String(“java”);
很高兴能帮助到你,String是个很特殊的类。你真的理解了String str1 = new String(“java”)吗,这句话其实生成了两个对象,一个是存放在堆内存里面的“java”,还有一个对象str1存放在栈内存里面,栈里面的str1指向对内存的具体对象。当执行String str2 = new String(“java”)这句话的时候,首先判断堆内存中是否存在“java”这个对象,查到存在了这个对象就不会在堆内存中生成了,只在栈内存中生成一个str2指向“java”这个对象,所以str1和str2的堆内存其实是一个东西,理解了吗?
正解
--------------------编程问答--------------------
很高兴能帮助到你,String是个很特殊的类。你真的理解了String str1 = new String(“java”)吗,这句话其实生成了两个对象,一个是存放在堆内存里面的“java”,还有一个对象str1存放在栈内存里面,栈里面的str1指向对内存的具体对象。当执行String str2 = new String(“java”)这句话的时候,首先判断堆内存中是否存在“java”这个对象,查到存在了这个对象就不会在堆内存中生成了,只在栈内存中生成一个str2指向“java”这个对象,所以str1和str2的堆内存其实是一个东西,理解了吗?
正解
上面的是我看错了,如果是new 出来的地址肯定不一样!String str1 = new String(“java”)对于这句话我的理解是,现在栈中存放了str1这个引用变量,指向堆中的java ,而对中的java是复制的常量池中的java,所以说这句代码其实是产生了两个java,一个在常量池中,而在堆中的则是复制的常量池里的
--------------------编程问答--------------------
很高兴能帮助到你,String是个很特殊的类。你真的理解了String str1 = new String(“java”)吗,这句话其实生成了两个对象,一个是存放在堆内存里面的“java”,还有一个对象str1存放在栈内存里面,栈里面的str1指向对内存的具体对象。当执行String str2 = new String(“java”)这句话的时候,首先判断堆内存中是否存在“java”这个对象,查到存在了这个对象就不会在堆内存中生成了,只在栈内存中生成一个str2指向“java”这个对象,所以str1和str2的堆内存其实是一个东西,理解了吗?
正解
上面的是我看错了,如果是new 出来的地址肯定不一样!String str1 = new String(“java”)对于这句话我的理解是,现在栈中存放了str1这个引用变量,指向堆中的java ,而对中的java是复制的常量池中的java,所以说这句代码其实是产生了两个java,一个在常量池中,而在堆中的则是复制的常量池里的