简介:
为了避免String方法中每次拼接,都会构建一个新的对象,导致空间和时间上的浪费,因此提出了StringBulider
类解决这个问题。
形式一:
String str = “Oracle”;
形式二:
String str = new String(“Oracle”)
形式三:
String str = new String ();
str = “Oracle”;
注:如果直接赋值的方式创建对象,那么字符串会被保存在常量池中,如果使用new关键字利用String的构造方法来创建字符串对象时,每创建一次,就会在堆内存空间开辟新的空间,不同的对象有不同的指向
2,String 常用方法获取字符串长度
int length = str.length();
查找字母“J”在字符串str第一次出现的位置
int index = str.IndexOf(“J”);
查找字母A在字符串str中最后一次出现的位置
int lastindex = str.lastIndestOf(“A”);
获取索引为8的字符
char char = str.charAt(8);
trim去除字符串前后空格
String trim = str.trim();
去除字符串中所有空格,使用replaceAll
String replaceAll = str.replaceAll(" “,” ");
indexOf查找字符或字符串第一次出现的位置的索引
int indexOf = str.indexOf(“JAVA”)
查找索引为6之后JAVA字符串第一次出现的位置
int indexOf6 = str.indexOf(“JAVA”, 6);
查找JAVA最后一次出现的位置
int lastJava = str.lastIndexOf(“JAVA”);
substring方法获取“java”
String str1 = str.substring(beginIndex,endIndex);
在substring方法使用过程中,如果beginIndex为负数或者大于str.length()的时候会报错
而在使用charAt方法时,一旦参数大于等于str.length()就会报相同错误
concat拼接
String str = “Oracle”;
String str1= “IBM”;
String str2 = str.concat(str1);
在字符串后面拼接指定字符串
字符串截取成字符串数组
String[] split = str.split(" ");
getBytes将字符换转换为字节数组,可以联合编码一起使用,常用于web工程处理参数编码业务中
String str = “我爱 JAVA 老师”;
byte[] bytes = str.getBytes(“GBK”);
for (byte b : bytes) {
System.out.print(b + " “);
}
String string = new String(bytes, “GBK”);
System.out.println(”n" + string);
为Oracle后面添加Apple,再添加Google
sb.append(“Apple”).append(“Google”);
在Apple和Oracle之间增加IBM
sb.insert(6, “IBM”);
将IBM替换成Tencent
sb.replace(6, 9, “Tencent”);
删除Apple
sb.delete(13, 18);
reverse():将字符串反转输出
StringBuffer sb1 = new StringBuffer(“频视的师老某看”);
sb1.reverse();
String:内容是不可变的
StringBuilder:内容是可变的
StringBuilder是一个可变的字符串类,这里的可变指的是对象的内容可变。
StringBulider 转化为 String
public String toString():通过 toString()就可以把StringBulider 转换为 String
String 转化为 StringBulider
public StringBulider(String s):通过构造方法就可以把 String 转换为 StringBulider
StringBuffer 和 StringBulider 的区别在于线程安全问题。
StringBuffer的方法大多使用synchronized 关键字修饰,每次使用需要判断锁,因此线程安全,但是效率较低;
StringBulider的方法没有使用synchronized 关键字修饰,因此在多线程下不安全,但是效率较高。



