java开篇之作,来聊一聊java中的字符串相关…
字符串比较
创建过程
字符串的常用创建方式有两种。一种是字面量的方式创建,另一种是使用new关键字创建。
第一种创建方式,jvm会首先在字符串常量池中检查是否存在该字符串。如果不存在,则在字符串常量池中创建字符串对象,返回其内存地址;如果存在,则直接返回该对象的内存地址。
第二种创建方式,jvm也会首先在字符串常量池中检查是否已经存在,如果已存在,则将其拷贝到堆内存中,并返回堆内存中的内存地址。如果不存在,就会在堆内存中创建字符串对象,返回其内存地址。  
比较符
使用==比较时,比较的是内存地址。
使用equals()比较时,比的是字符串的内容(字符串类重写了继承自Object的equals())。  
总结
- 使用字面量方式创建的字符串对象在字符串常量池中
 - 使用new关键字创建的对象在堆内存中
 - 字符串之间的比较使用
equals()就好 - 比较一个变量是否为某个字符串时,使用
字符串.equals(变量)来判断,避免报错 
String类的方法
构造方法
1  | /* 使用字节数组构建字符串(使用平台默认编码规则) */  | 
获取方法
1  | // 获取字符串长度  | 
判断方法
1  | // 判断是否以指定字符结束  | 
转换方法
1  | // 将字符数组转换为字符(可以指定开始位置与长度)  | 
其他方法
1  | String replace(char oldChar, char newChar); // 替换  | 
StringBuffer与StringBuilder
由于String是不可变的,所以在需要频繁改变字符串对象的应用中,需要使用可变的字符串缓冲区类。
默认缓冲区的容量是16。
StringBuffer与StringBuilder的用法类似,区别在于StringBuilder是线程不安全的,但是效率要高。  
常用方法
1  | /* 添加方法 */  |