Java字符串面试题汇总(用这一篇文章堵住面试官的嘴)
1.String 字符串介绍
String属于引用数据类型,由于被final修饰,所以String是不可变的,JVM使用字符串池来存储所有的字符串对象。
2 创建String的不同方式有哪些
2.1 通过new关键字
使用这种方式时, 每次new都会生成一个新的对象 (JVM创建字符串对象但不存储于字符串池。new相同内容的字符串对象会重新生成一个对象, 我们可以调用intern()方法将该字符串对象存储在字符串池,如果字符串池已经有了同样值的字符串,则返回引用。
2.2 双引号创建
使用这种方式时,JVM去字符串池找有没有值(内容)相等的字符串,如果有,则返回找到的字符串引用。否则创建一个新的字符串对象并存储在字符串池。
3 equals和==区别
==比较基本数据类型时,比较的是内容;比较引用数据类型String时,比较的是指向堆内存地址是否一样
eauals比较String的内容
4 String和StringBuffer和StringBuilder的区别
String str="a";
for(int i=1:i<10000;i++){
str+="a";
}
StringBuffer str1=new StringBuffer("a");
for(int i=1:i<10000;i++){
str.append("a");
}
StringBuilder str1=new StringBuilder("a");
for(int i=1:i<10000;i++){
str.append("a");