String 类
新建String的两种方法
public class Demo01 {
public static void main(String[] args) {
// 第一种方法
String s1 = "Hello"; // 只产生一个对象"Hello",存在方法区中的字符串池中
s1 = "Hi"; // 并没有把Hello改成Hi,而是在字符串池中重新生成"Hi",然后s1指向字符串池中的"Hi"。
String s2 = "Hi"; // s2指向字符串池中同一个"Hi" ==> 字符串的共享
// 第二种方法,使用new String
String s3 = new String("Hahaha"); // 产生两个对象,堆,池中各存储一个。s3指向的是堆里的对象。
String s4 = new String("Hahaha");
System.out.println(s3 == s4); // 比较地址
System.out.println(s3.equals(s4)); // 比较数据
}
}
StringBuffer 类 和 StringBuilder 类
StringBuffer: 可变长字符串,运行效率慢、线程安全
StringBuilder可: 变长字符串,运行效率快,线程不安全
// StringBuffer and StringBuilder
// 与String的区别
// 1. 效率比String高
// 2. 节省内存
public class Demo02 {
public static void main(String[] args) {
// StringBuilder sb = new StringBuilder();
StringBuffer sb = new StringBuffer();
// 1 append() 追加
sb.append("java世界第一");
System.out.println(sb.toString());
sb.append("java真香");
System.out.println(sb.toString());
// insert() 添加
sb.insert(0, "First");
System.out.println(sb.toString());
// replace() 替换
sb.replace(0, 5, "Hello"); // 含头不含尾
System.out.println(sb.toString());
// delete() 删除
sb.delete(0, 5); // 含头不含尾
System.out.println(sb.toString());
// 清空
sb.delete(0, sb.length());
System.out.println(sb.toString() + "Empty");
}
}
验证StringBuilder效率高于String
/**
* 验证StringBuilder效率高于String
*/
public class Demo03 {
public static void main(String[] args) {
// 开始时间
long start = System.currentTimeMillis();
String s1 = "";
for (int i = 0; i < 99999; i++) {
s1 += i;
}
long end = System.currentTimeMillis();
System.out.println("String Duration: " + (end - start));
long startBf = System.currentTimeMillis();
StringBuffer s2 = new StringBuffer();
for (int i = 0; i < 99999; i++) {
s2.append(i);
}
long endBf = System.currentTimeMillis();
System.out.println("StringBuffer Duration: " + (endBf - startBf));
long startBl = System.currentTimeMillis();
StringBuilder s3 = new StringBuilder();
for (int i = 0; i < 99999; i++) {
s3.append(i);
}
long endBl = System.currentTimeMillis();
System.out.println("StringBuilder Duration: " + (endBl - startBl));
}
}
// sample printout:
// String Duration: 18946
// StringBuffer Duration: 3
// StringBuilder Duration: 2
本文探讨了Java中String类的两种创建方式,以及StringBuffer和StringBuilder类的区别,强调了可变字符串在性能上的优势。通过实例展示了如何高效使用StringBuilder进行字符串操作并验证其效率高于String。
26万+

被折叠的 条评论
为什么被折叠?



