本帖最后由 天道酬勤 于 2012-5-11 21:46 编辑
对于String String是一个特殊的包装类数据。可以用: String str = new String("abc"); String str = "abc"; 两种的形式来创建,第一种是用new()来新建对象的,它会在存放于堆 中。每调用一次就会创建一个新的对象。而第二种是先在栈中创建一个对 String类的对象引用变量str,然后通过符号引用去字符串常量池 里找有没 有"abc",如果没有,则将"abc"存放进字符串常量池,并令str指向"abc", 如果已经有"abc" 则直接令str指向"abc"。
String 特性
1. new String()和new String("")都是申明一个新的空字符串,是空串不
是null;
String s0="kvill"; String s1="kvill"; String s2="kv" + "ill";
System.out.println( s0==s1 ); //true
System.out.println( s0==s2 ); //true
例子中的 s0和s1中的"kvill"都是字符串常量,它们在编译期就被确
定了,放在常量池中,所以s0==s1为true;而"kv"和"ill"也都是字符串常
量,当一个字符串由多个字符串常量连接而成时,它自己肯定也是字符串
常量,所以s2也同样在编译期就被解析为一个字符串常量,所以s2也是
常量池中"kvill"的一个引用。此时我们应该知道,常量池中只有一个字符串
"kvill"所以我们得出s0==s1==s2;用new String() 创建的字符串不是常量,
不能在编译期就确定,所以new String() 创建的字符串不放入常量池中,它
们有自己的地址空间。
|