标签:进入 问题 继承 tps 存在 编译 cmd 实例 直接
String | StringBuffer | StringBuilder | |
---|---|---|---|
对象类型 | 字符串常量(由final 修饰) |
字符串变量 | 字符串变量 |
是否线程安全 | 否 | 是(关键方法由synchronized 修饰) |
否 |
执行效率(一般情况) | 低 | 中 | 高 |
应用场景 | 对字符串操作少 | 多线程、对字符串操作多 | 单线程、对字符串操作多 |
String str = new String("hello world");
在常量池中创建"hello world",并在堆中创建实例对象,返回堆中对象的引用。
String str = "hello world";
在常量池中创建"hello world"。
String str = "hello" + " " + "world";
由于编译器原因,会直接在常量池创建"hello world"。
String str1 = "hello"; String str2 = str1 + "world";
在常量池中创建"hello",创建 StringBuilder
对象,通过 append()
方法加载"hello"。在常量池中创建"world",再通过StringBuilder
的append()
方法加载"world"。
PS:在常量池中创建对象时,首先会对常量池进行搜索。如果常量存在,直接返回对常量的引用;反之,在常量池中创建新的常量,再返回对常量的引用。
win + r
打开 cmd
,进入相应目录,执行:
javac [java]
javap -c [class]
例,
javac Test.java
javap -c Test
标签:进入 问题 继承 tps 存在 编译 cmd 实例 直接
原文地址:https://www.cnblogs.com/wscy/p/9194199.html