字符串类
Java里面的字符串类有三个
- String
- StringBuffer
- StringBuilder
1.String类
1.认识String类
在java里常用的字符串是一个类String,为引用类型
我们查看javaAPI,可以看到它处于java.lang包下面,实现了三个接口
2.如何使用String类
-
public String()
初始化新创建的
String
对象,使其表示空字符序列。 -
String(String original)
初始化新创建的
String
对象,使其表示与参数相同的字符序列; 换句话说,新创建的字符串是参数字符串的副本。 -
String(char[] value)
分配一个新的
String
,以便它表示当前包含在字符数组参数中的字符序列。 -
String s = "abc";
直接赋值的方法创建字符创,创建出来的量存在常量池中
前三个都是构造方法,在堆内存中开辟一个内存空间存储值
最后一个直接赋值是在常量池中开辟一个空间存"abc",然后将引用的值指向常量池内的内存空间
所以,前三种的值是可以改变的,最后一种方法是常量,值字符串的值不能改变
案例:
public class Test1 {
public static void main(String[] args) {
String str1 = new String("abc");
//传入字符数组,返回字符串
char [] chr = {'a','b','c'};
String str2 = new String(chr);
//直接赋值,引用指向常量池中的常量
String str3 = "abc";
System.out.println(str1);
System.out.println(str2);
System.out.println(str3);
//str1存的是堆中的地址值,str3存的是常量池的地址值
System.out.println(str1 == str3);
}
}
3.Sring的值比较方法
==在引用类型中只能比较引用中存的地址值是否相同
在String比较其存的字符串是否相同,String提供了一个equals(String string)方法
案例:
public class Test1 {
public static void main(String[] args) {
String str1 = new String("abc");
String str2 = new String("abc");
System.out.println(str1 == str2); //比较的是引用地址
System.out.println(str1.equals(str2)); //比较的是字符串的值
}
}
运行结果:
false
true
2.StringBuilder类
StringBuilder 是一个可变的字符串类,我们可以把它看成是一个容器。
l作用:提高字符串的操作效率
String一般使用直接赋值创建字符创,创建的是常量是不可变的
StringBuilder是一个可变的字符串