一、特点
字符串一旦被赋值,就不能改变!!!
注意:这里指的是字符串的内容不能改变,而不是引用不能改变。
字符串为什么不可变:再啰嗦最后一次,Java字符串是不可变的
二、判断功能
1 | boolean equals(Object obj) |
三、获取功能
1 | int length() |
四、转换功能
1 | byte[] getBytes() |
五、其他功能
(一)替换功能
1 | String replace(char old,char new) |
(二)去空格功能
1 | String trim() |
(三)按字典比较功能
1 | int compareTo(String str) |
六、常见面试题
1、字面值作为字符串对象和通过构造方法创建对象的不同。
即:String s = new String(“hello”); 和 String s = “hello”的区别?
答:假设字符串常量池中没有 hello 字符串,那么前者会创建两个对象(堆中一个,方法区的字符串常量池中一个);而后者则只会在方法区的字符串常量池中创建一个。
前者有两个对象的具体原因是前者判断在字符串常量池中没有hello对象后会创建一个,然后会在堆中创建一个另外的 String 对象,该对象会获取 hello 对象返回的地址。
两者对应的内存图如下:
图1 通过构造方法创建对象
图2 字面值对象
2、看程序写结果
1 | public class StringDemo { |
1 | public class StringDemo2 { |
Java新手,若有错误,欢迎指正!