java中String,StringBuilder与StringBuffer区别及常用方法
String,StringBuilder与StringBuffer区别及常用方法
String,StringBuilder与StringBuffer区别
-
String类是不可变类,String对象被创建后,包含在这个对象中的字符序列是不可改变的,直至这个对象销毁。
-
StringBuffer类则代表一个字符序列可变的字符串,可以通过append、insert、reverse、setChartAt、setLength等方法改变其内容。一旦生成了最终的字符串,调用toString方法将其转变为String
-
JDK1.5新增了一个StringBuilder类,与StringBuffer相似,构造方法和方法基本相同。不同是StringBuffer是线程安全的,而StringBuilder是线程不安全的,所以性能略高。通常情况下,创建一个内容可变的字符串,应该优先考虑使用StringBuilder
名称 初始JDK版本 效率 线程 StringBuilder JDK1.5 效率高 线程不安全 StringBuffer JDK1.0 效率低 线程安全
常用方法
StringBuilder与StringBuffer
- append添加
- delete(x,y)删除下标x到y位置上的字符
- deleteCharAt删除指定下标的字符
- insert(x,s)在小标x位置插入s
- replace(x,y,str)将下标x到y替换为str
- setCharAt替换指定位置下的字符
- charAt查看指定下标下的字符
- substring(x,y)截取下标x到y下的字符串
- subSequence(x,y)截取下标x到y下的字符串
- subSequence与subSequence区别
// 创建StringBuilder对象
StringBuilder sb = new StringBuilder("hello");
// append添加
System.out.println(sb.append(" java"));//hello java
// delete(x,y)删除下标x到y位置上的字符
System.out.println(sb.delete(0,1));//ello java
// deleteCharAt删除指定下标的字符
System.out.println(sb.deleteCharAt(0));//llo java
// insert(x,s)在小标x位置插入s
System.out.println(sb.insert(sb.length()," !"));//llo java !
// replace(x,y,str)将下标x到y替换为str
System.out.println(sb.replace(4,8,"c++"));//llo c++ !
// setCharAt替换指定位置下的字符
sb.setCharAt(0, 'b');//blo c++ !
System.out.println(sb);
// charAt查看指定下标下的字符
System.out.println(sb.charAt(0));//b
// substring(x,y)截取下标x到y下的字符串
System.out.println(sb.substring(0,3));//blo
// subSequence(x,y)截取下标x到y下的字符串
System.out.println(sb.subSequence(1,3));//lo
/**
* substring和subSequence的返回类型不一样,substring返回的是String,subSequence返回的是实现了CharSequence接口的类,
* 使用subSequence得到的结果,只能使用CharSequence接口中的方法。
* 在String类中已经重写了subSequence,调用subSequence方法,可以直接下转为String对象。
*/
String常用方法
- 字符串的创建
- isEmpty和isBlank的却别
- chartAt获取指定下标字符
- equals比较字符串
- compareTo字符串比较
- substring字符串截取
- concat字符串拼接
- replace指定字符替换
- split字符串指定字符分割
- toUpperCase字符串大写转换
- toLowerCase字符串小写转换
- trim去除字符串首尾空格
- valueOf字符串类型转换
public class CommonMethod {
public static void main(String[] args) {
//定义一个字符串
String s="hello java";
// 通过构造器创建String对象
String s1 =new String("hello word") ;
String s2 = new String(new char[]{'h', 'e', 'l', 'l'});
System.out.println("字符串长度"+s.length());//字符串长度1
// isEmpty只有字符串是空值或是null时为true
System.out.println("isEmpty判断字符串是否为空"+s1.isEmpty());//isEmpty判断字符串是否为空false
// isBlank对于字符串中的空格换行符等统统作为空值处理
System.out.println("isBlank判断字符串是否为空"+s1.isBlank());//isEmpty判断字符串是否为空false
System.out.println("isBlank判断字符串是否为空"+" ".isBlank());//isEmpty判断字符串是否为空true
// charAt获取字符串指定下标字符
System.out.println("charAt获取字符串指定下标字符:"+s1.charAt(0));//charAt获取字符串指定下标字符:h
// equals比较字符串
System.out.println("equals比较字符串:"+s.equals(s1));//equals比较字符串:false
System.out.println("equals比较字符串:"+s.equals("hello java"));//equals比较字符串:true
// compareTo比较字符串时会返回第一个不一样字符的ASCII码的差值,如果短的字符串与长的字符串的前部分重合,则会返回他们的长度差为一个负数,两个字符串相等的时候返回0
System.out.println("compareTo比较字符串:"+s.compareTo(s1));//compareTo比较字符串:-13
System.out.println("compareTo比较字符串:"+"b".compareTo("a"));//compareTo比较字符串:1
System.out.println("compareTo比较字符串:"+"sss".compareTo("sssssssss"));//compareTo比较字符串:-6
//字符串的截取:
System.out.println("substring(x)截取字符串下标x之后的所有字符"+s1.substring(3));//substring(x)截取字符串下标x之后的所有字符lo word
System.out.println("substring(x, y)截取字符串下标x到y之间的字符"+s1.substring(3, 6));//substring(x, y)截取字符串下标x到y之间的字符lo
//字符串的拼接操作:
System.out.println("字符串的拼接操作:"+s1.concat("pppp"));//字符串的拼接操作:hello wordpppp
//字符串中的字符的替换:
System.out.println("replace('o', 'w')将字符串中的o全部替换为w:"+s1.replace('o', 'w'));//replace('o', 'w')将字符串中的o全部替换为w:hellw wwrd
//split按照指定的字符串进行分裂为数组的形式:
String s3 = "a-b-c-d-e-f";
System.out.println(Arrays.toString(s3.split("-")));//[a, b, c, d, e, f]
//转大小写的方法:
String s4= "abc";
System.out.println(s4.toUpperCase());//ABC
System.out.println(s4.toUpperCase().toLowerCase());//abc
//去除收尾空格:
String s5 = " a b c ";
System.out.println(s5.trim());//a b c
//toString()
String s6 = "abc";
System.out.println(s6.toString());//abc
//String.valueOf可以将对象类型,布尔类型,字符串数组等转换为String类型:
System.out.println(String.valueOf(new char[]{'2','3'}));//23
}
}