面试题:Java的String类型为什么是不可变的(百度面试题)
面试题:获取www.baidu.com最后一个点的内容”com”(蘑菇街面试题)
面试题:String a=”abc” String b=”a” + “bc” a == b(网易面试题)
一、String基础部分
建议先看下基础篇:Java基础系列(十二)Object、String、StringBuffer
代码:
String a="abc"; String b="a"+"bc";
if(a == b) {
System.out.print("true");
}
else {
System.out.print("false");
}
//输出为:true
//只生成一个字符串,保存在字符串常量池中
二、Java的String类型为什么是不可变的
String类中的成员变量:
private final char value[];
private final int offset;
private final int count;
执行了String s = “ABCabc”; 这句代码之后,真正的内存布局应该是这样的:
value,offset和count这三个变量都是private的,并且没有提供setValue, setOffset和setCount等公共方法来修改这些值,所以在String类的外部无法修改String。
三、不可变的好处