今天被公司骗去面试,好糟心......
这个问题不管去哪里面试,基础问题基本上都会问到这个问题。网上好多大神都总结,这里自己也总结一下。
首先我们最开始学的就是String字符串常量,这里有行代码 String str = "hello"+"world"+"!";其实这行代码与下面几行表示的是相同的含义;
String s = "hello world !"; str与s是等效的。
String s1 = "hello";
String s2 = "world";
String s3 = "!";
String s4 = s1 + s2 + s3;//
对,也就是说这里JVM创建了四个对象,String是不可变对象。
StringBuffer 是字符串变量,线程安全,
StringBuffer sb = new StringBuffer();
sb.append("hello").append("world").append("!");//这行代码的执行效率要快于 s4的执行效率。
System.out.prientln(sb);// hello world !
StringBuilder 是字符串变量,是线程非安全的
三者使用区别:
要操作的字符串数量少的话可以使用String;如果数量很大,建议使用StringBuffer,多线程操作字符串缓冲区 下操作大量数据 要使用 StringBuffer
单线程操作字符串缓冲区 下操作大量数据 使用 StringBuilder
或许有些地方说的不对,后续继续学习完善。