java中String的两种初始化方法

字符串可能是任何程序语言中都会出现的对象,java中创建并初始化一个String对象,最常见的方式有两种:String str=new String("XXX"); String str="XXX"; 二者看似相同,其实有很大的差别。 前者是java中标准的对象创建方式,其创建的对象将直接放置到堆中,,每调用一次就会创建一个新的对象;后者则会在栈中创建一个对象引用变量str,然后 查看字符串池中是否存在"XXX",如果没有,则将"XXX"存放字符串池,并令引用变量str指向它;如果已经有"XXX",则直接令str指向它。这样充分利用 了栈的数据共享优点,当然也可能是一个陷阱,对象很有可能没有创建,只不过指向一个先前已经创建的对象;而new()方法则能保证每次都创建一个新的对 象。 下述代码展示了二者的不同: Java代码 1. public class Main { 2. 3. /** *//** 4. * @param args the command line arguments 5. */ 6. public static void main(String[] args) { 7. String strA = "abc"; 8. String strB = "abc"; 9. String strAA = new String("abc"); 10. String strBB = new String("abc"); 11. System.out.println(strA == strB); 12. System.out.println(strAA == strBB); 13. } 14. } 输出结果: true false 字符串限定是指String s = “abc”这种形式,也就是说String s1 = “abc”; s 和 s1 都是指向同一个内存地址 String s = "abc"; 这句是定义一个String变量s,jvm会先去字符串池中找有没有"abc",有的话就把s指向"abc",没有就会先在池中创建一个,再让s指向"abc"。 String s = new String("abc"); 这句是先定义一个String变量s,然后在内存中分配新的空间"abc"再让s指向这个内存地址。

一个人行走,若是寂寞了,寻一座霓虹灯迷离闪烁,

java中String的两种初始化方法

相关文章:

你感兴趣的文章:

标签云: