Java String 那些事
程序员文章站
2022-05-06 08:02:57
...
public class StringDemo {
/**
* @param args
*/
public static void main(String[] args) {
String a = "test"; //字符串常量池中创建空字符串,a引用常量池中的字符串地址
String b = "test"; //字符串常量池中已经存在空字符串,直接返回常量池中的字符串地址给b
System.out.println("内存地址是否一致:"+(a==b)); //true
String c = new String("test"); // 字符串常量池中存在字符串“test”,不需要创建,堆中生成新的字符串对象“test”,并将它的堆内存地址返回给c
String d = new String("test"); // 字符串常量池中存在字符串“test”,不需要创建,堆中生成新的字符串对象“test”,并将它的堆内存地址返回给d
System.out.println("内存地址是否一致:"+(c==d)); //false
System.out.println("两个对象值是否相等:"+a.equals(c)); //true
String e = a.intern(); //返回与a对象在常量池中值相等的字符串
String f = c.intern(); //返回与c对象在常量池中值相等的字符串
System.out.println("两者在字符串常量池中的字符串对象是否一致:"+(e==f)); //true,说明字符串常量池中不存在值相同的字符串
String g = "HelloWorld";
String h = "Hello" + "World";
String i = "Hello";
String j = "World";
System.out.println("原串与编译期拼接字符串内存地址是否一致:"+(g==h)); //true,字符串常量在编译时,对字符串拼接进行了优化,拼接后的字符串会存放在字符串常量池中
System.out.println("原串与运行期拼接字符串内存地址是否一致:"+(g==(i+j))); //false,字符串引用变量,在运行时,在堆中进行拼接,是在堆中生成新的字符串
}
}
上一篇: Jquery 显示隐藏动画
下一篇: java:集合那些事