日期:2014-05-20  浏览次数:20623 次

这2个String赋值有什么区别??
String a = null;
String b = "小张";

第一个赋值还在栈内存中分配一个地址吗

------解决方案--------------------
String a = null; //可以理解成指向内存地址的一个指针,但是这块内存中还没有任何东西.
String b = "小张"; //确实的分配了内存,并且有8个字节了
------解决方案--------------------
String a = null; 
String b = "小张"; 
第一个也会为a分配一个地址的,只是它是一个空的引用。
对于String b = "小张";当你写下String b = "小张"; 以后, 系统会检查,string池里面有没有"小张"这个字符串,如果有,就不另外在分配"小张"的空间,只分配b的空间,它的内容是"小张"的拷贝,如果没有,string池就会分配"小张"这个字符串空间,然后在分配b的空间。
------解决方案--------------------
a是一个变量,肯定有地址呀
------解决方案--------------------
kao,楼上的广告到处飞

第一个没有分配
------解决方案--------------------
null的话不分配内存的