1.切割字符串split()与StringTokenizer()的区别
StringTokenizer()对于java默认的分隔符“空格”、“制表符(‘\t’)”、“换行符(‘\n’)”、“回车符(‘\r’)”都不需要进行转义就可以直接对字符串进行切割,但对"+"、"*"、"$"、""这些符号同样需要转义后才能切割;而split()对上述所有的符号都要先转义后才能对字符串进行切割。
public class StringSplit {
public static void main(String[] args) {
String value = "192.168.128.33";
String[] names = value.split("\\.");//对.进行转义后才能切割,若分隔符为/号,则要“”进行转义。
for (int i = 0; i < names.length; i++) {
System.out.println(names[i]);
}
}
}
在处理效率上StringTokenizer()比split()快,但因为jdk版本兼容问题,不提倡使用StringTokenizer()。
2.判断字符串
2.1判断字符串中是否包含指定字符串:boolean contains(CharSequence s)
2.2判断字符串是否以某某开头:boolean startsWith(String prefix)
2.3判断字符串是否以某某结尾:boolean endsWith(String suffix)
2.4判断字符串的内容是否相同:boolean equals(Object anObject) (复写了Object 类中的equals方法)
2.5判断字符串的内容是否相同,(不考虑大小写):boolean equalsIgnoreCase(String anotherString)
3.转换
3.1、 将字符数组转换成字符串
构造函数: String(char[] value)
String(char[] value, int offset, int count): 将数组中从下标offset开始,一共count位字符转换成字符串。
静态方法: static String copyValueOf(char[] data)
static String copyValueOf(char[] data, int offset, int count)
static String valueOf(char[] data)
3.2、 将字符串转换成字符数组
char[] toCharArray()
3.3、 将字节数组转换成字符串
String(byte[] value)
String(byte[] value, int offset, int count): 将数组中从下标offset开始,一共count位字符转换成字符串。
3.4、 将字符串转换成字节数组
byte[] getBytes(String charsetName)
3.5、 将基本数据类型转换成字符串
static String valueOf(boolean b)
static String valueOf(char c)
static String valueOf(char[] data)
static String valueOf(double d)
4、替换
String replace(char oldChar, char newChar) : 返回一个数组,它是用newChar 替换就数组中的oldchar等到的。(一个一个的替换)
String replace(CharSequence target, CharSequence replacement) : 后替前,用新串替换原串中的子串。
5.理解String,StringBuffer,StringBuilder的区别:
String是final型的,是“字符创常量”,也就是不可改变的对象。当用String操作字符串时,实际上是在不断的创建新的对象,而原来的对象就会变为垃圾被GC回收掉。因此String是线程安全的,但效率是最低的。
StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象,是字符串变量。StringBuilder是线程非安全,StringBuffer是线程安全的,所以效率上StringBuilder>StringBuffer> String的。
应用场景如下:
1.如果要操作少量的数据用 String
2.单线程环境中操作字符串缓冲区下操作大量数据用StringBuilder
3.多线程环境中操作字符串缓冲区下操作大量数据用StringBuffer