StringStringBufferStringBuilder

String/StringBuffer/StringBuilder

String类

构造方法

String() 空构造
String(byte[] bytes) 字节数组转字符串
String(byte[] bytes,int index,int length) 字节数组的一部分转字符串
String(char[] value) 字符数组转字符串
String(char[] value,int index,int count) 字符数组的一部分转字符串
String(String original) 字符串常量值转字符串

判断功能

equals(Object obj) 比较字符串的内容是否相同,区分大小写
equalsIgnoreCase(String str) 比较字符串的内容是否相同,忽略大小写
contains(String str) 判断大字符串中是否包含小字符串
startsWith(String str) 判断字符串是否以某个指定的字符串开头
endsWith(String str) 判断字符串是否以某个指定的字符串结尾
isEmpty() 判断字符串是否为空

获取功能

int length() 获取字符串的长度。
char charAt(int index) 获取指定索引位置的字符
int indexOf(int ch) 返回指定字符在此字符串中第一次出现处的索引。
int indexOf(String str) 返回指定字符串在此字符串中第一次出现处的索引。
int indexOf(int ch,int fromIndex) 返回指定字符在此字符串中从指定位置后第一次出现处的索引
int indexOf(String str,int fromIndex) 返回指定字符串在此字符串中从指定位置后第一次出现处的索引
int lastIndexOf(Object obj) 返回最后一次出现的指定元素的索引;如果此向量不包含该元素,则返回 -1
int lastIndexOf(Object obj, int fromIndex)
String substring(int start) 从指定位置开始截取字符串,默认到末尾。
String substring(int start,int end) 从指定位置开始到指定位置结束截取字符串

转换功能

byte[] getBytes() 字符串转字节数组
char[] toCharArray() 字符串转字符数组
static String valueOf(char[] chs) 字符数组转字符串
String toLowerCase() 字符串转小写
String toUpperCase() 把字符串转大写
String concat(String str) 字符串拼接
注意:String类的valueOf方法可以把任意类型的数据转成字符串

其他功能

String replace(char old,char new)
String replace(String old,String new)
String trim()
int compareTo(String str)
int compareToIgnoreCase(String str)

StringBuffer\StringBuilder类

与String的区别

String是一个不可变的字符序列
StringBuffer是一个可变的字符序列

StringBuffer是jdk1.0版本的,线程安全,效率低
StringBuilder是jdk1.5版本的,线程不安全,效率高

应用场景

String 适用于少量的字符串操作的情况
StringBuilder 适用于单线程下在字符缓冲区进行大量操作的情况
StringBuffer 适用多线程下在字符缓冲区进行大量操作的情况

构造方法

StringBuffer()
StringBuffer(int capacity)		指定容量的字符串缓冲区对象
StringBuffer(String str)		指定字符串内容的字符串缓冲区对象

其他方法

int capacity()						返回当前容量。理论值
int length()						返回长度(字符数)。实际值
StringBuffer append(String str)		  把任意类型数据添加到字符串缓冲区里面
StringBuffer insert(int offset,String str)	 把任意类型的数据插入到字符串缓冲区指定位置
StringBuffer deleteCharAt(int index)		删除指定位置的字符,并返回本身
StringBuffer delete(int start,int end)		删除从指定位置开始指定位置结束的内容
StringBuffer replace(int start,int end,String str)	从start开始到end用str替换
StringBuffer reverse()			    字符串反转
String substring(int start)			从指定位置截取到末尾
String substring(int start,int end)	 取从指定位置开始到结束位置

问题

字符串比较,使用 “==” 还是 equals()
比较字符串值,使用equals()。比较是否是同一对象,使用“==”

对于敏感信息,为何使用char[]要比String更好
String字符串不可变,值更改后,引用重新指向新的对象。旧对象容易暴露
只要在使用后,对char[]置0,不容易暴露

在switch语句中能使用String作为case条件
从 JDK7 开始,这是可以的,Java 6 及以前的版本都不支持这样做

substring() 方法内部是如何处理的
JDK6中,共用原来的char[]数组,通过偏移和长度构造了一个"新"的String
JDK7中,substring()创建了一个新的char[] 数组,而不是共用

猜你喜欢

转载自blog.csdn.net/mLuoya/article/details/87870280
今日推荐