8.String str="i" 与 String str=new String("i")一样吗?
Posted 凄美地
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了8.String str="i" 与 String str=new String("i")一样吗?相关的知识,希望对你有一定的参考价值。
不一样
因为内存的分配方式不一样。String str="i"的方式,Java 虚拟机会将其分配到常量池中;而 String str=new String(“i”)方式,则会被分到堆内存中。
解释: Java 虚拟机会将其分配到常量池中:常量池不会重复创建对象。 在String str1="i"中,把i值存在常量池,地址赋给str1。假设再写一个String str2=“i”,则会把i的地址赋给str2,但是i对象不会重新创建,他们引用的是同一个地址值,共享同一个i内存。
分到堆内存中:堆内存会创建新的对象。 假设再写一个String str3=new String(“i”),则会创建一个新的i对象,然后将新对象的地址值赋给str3。虽然str3和str1的值相同但是地址值不同。
以上是关于8.String str="i" 与 String str=new String("i")一样吗?的主要内容,如果未能解决你的问题,请参考以下文章
在vs2010 MFC 项目中使用int i=5;CString str;str.Format("%d",i);编译时报错,提示str.Format参数不对