想要了解一个类,最好的办法就是看这个类的实现源代码
final
- String类是final类,并且它的成员方法都默认为final方法
- 在Java中,
- 被final修饰的类是不允许被继承的,
- 并且该类中的成员方法都默认为final方法。
- 被final修饰的方法会被转为内嵌调用以提升执行效率
- 此在现在的Java SE版本中,不需要考虑用final去提升方法调用效率。
- 只有在确定不想让该方法被覆盖时,用final修饰。
无论是sub操、concat还是replace操作都不是在原有的字符串上进行的,而是重新生成了一个新的字符串对象
结论:对String对象的任何改变都不影响到原对象,相关的任何change操作都会生成新的对象
String str="hello world"和String str=new String("hello world")的区别
//来存储编译期间生成的 字面常量以及符号引用,这部分叫做class文件常量池
String str="hello world"; // 常量池里
String str=new String("hello world");// 引用在常量池里
String、StringBuffer以及StringBuilder的区别
- 作用:字符拼接
- 每次循环会new出一个StringBuilder对象,然后进行append操作,最后通过toString方法返回String对象。
String string = "";
string +="1"; // 代码简洁
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append("1"); // 批量 效率最高
StringBuffer sb = new StringBuffer();
sb.append("1");// synchronized 批量 线程安全
参考连接