String类
String对象的创建方式
1、 String s1 = "alan"; 创建一个字符串对象alan,名为s1.或者说s1指向对象alan
2、String s2 = new String(); 创建一个空字符串对象,名为s2
3、String s3 = new String("alan"); 创建一个字符串对象alan,名为s3
- 字符串与byte数组之间的转换。
package com.alan.string;
import java.io.UnsupportedEncodingException;
public class StringDemo3 {
public static void main(String[] args) throws UnsupportedEncodingException {
// 字符串与byte数组之间的相互转换
String str = new String("JAVA 编程 基础");
//将字符串转换为byte数组,并打印输出
byte[] arrs = str.getBytes("GBK");
for(int i = 0;i<arrs.length;i++) {
System.out.print(arrs[i]+" ");
}
System.out.println();
//将byte数组转回字符串,展示
String str1 = new String(arrs,"GBK");
System.out.println(str1);
}
}
等于“==”运算符与equals方法的区别
package com.alan.string;
public class StringDemo4 {
public static void main(String[] args) {
// ==和equals的区别
//定义三个字符串,内容都是alan
String str1 = "alan";
String str2 = "alan";
String str3 = new String("alan");
System.out.println("str1和str2的内容相同?"+str1.equals(str2));
System.out.println("str1和str2的内容相同?"+str1.equals(str3));
System.out.println("str1和str2的地址相同?"+ (str1==str2));
System.out.println("str1和str2的地址相同?"+ (str1==str3));
}
}
字符串不可变性
StringBuilder
String具有不可变性,StringBuilder不具备
建议:当频繁操作字符串的时候,使用StringBuilderStringBuilder与StringBuffer
1、 二者基本相似
2、StringBuffer是线程安全的,StringBuilder则没有,所以性能略高。
3、字符串处理一般都是单线程的,无需考虑线程安全性,所以使用StringBuilder.
package com.alan.string;
public class StringDemo5 {
public static void main(String[] args) {
//定于一个字符串“你好”
StringBuilder str = new StringBuilder("你好");
str.append(",alan");
System.out.println(str);
//将字符串变成"你好,ALAN"
//方式1
System.out.println(str.delete(3, 7).insert(3, "ALAN"));
//方式2
System.out.println(str.replace(3, 7, "ALAN"));
//最后存在堆中的内容
System.out.println(str);
}
}