Java基础学习笔记10——字符串类(String & StringBuilder)
目录
2.3、StringBuilder 和 String 的相互转换
API(Application Programming Interface):应用程序编辑接口。
Java API:就是JDK中提供的各种功能的Java类。
1、String
String类在java.lang包下,java.lang包是提供利用java编程语言进行程序设计的基础类,使用的时候不需要导包。
String类代表字符串,Java程序中所有的字符串文字都被实现为此类的实例。也就是说,Java程序中所有的双引号字符串,都是String类的对象。
1.1、String的特点:
- 字符串不可变,它们的值在创建后不能被更改;
- 虽然String的值是不可变的,但是它们可以被共享;
- 字符串效果上相当于字符数组(char[]),但是底层原理是字节数组(byte[])。
1.2、String的构造方法
方法名 | 说明 |
---|---|
public String() | 创建一个空白字符串对象,不含有任何内容 |
public String(char[] chs) | 根据字符数组的内容,来创建字符串对象 |
public String(byte[] bys) | 根据字节数组的内容,来创建字符串对象 |
String str = "abcd"; | 直接赋值的方式创建字符串对象,内容就是abcd |
推荐使用直接赋值方式创建字符串对象。
代码演示:
package myPacket;
public class testString {
public static void main(String[] args) {
//public String():创建一个空白字符串,不含有任何内容
String s1 = new String();
System.out.println("s1="+s1);
//public String(char[] chs):根据字符数组的内容,来创建字符串对象
char[] chs = {'a','b','c','d'};
String s2 = new String(chs);
System.out.println("s2="+s2);
//public String(byte[] bys):根据字节数组的内容,来创建字符串对象
byte[] bys = {65,66,67,68};
String s3 = new String(bys);
System.out.println("s3="+s3);
//String str = "abcd";:直接赋值的方式创建字符串对象,内容就是abcd
String s4 = "abcd";
System.out.println("s4="+s4);
}
}
结果:
s1=
s2=abcd
s3=ABCD
s4=abcd
1.3、String对象的特点
- 通过new创建的字符串对象,每一次new都会申请一个内存空间,虽然内容可能相同,但是地址值一定不同;
- 以 “” 方式给出的字符串,只要字符序列相同(区分顺序和大小写),无论在程序代码中出现几次,JVM都只会建立一个String对象,并在字符串池中维护。
1.4、String的比较
字符串是对象,它比较内容是否相同,是通过一个方法来实现的,这个方法叫:equals() 。
public boolean equals(Object anObject); //将此字符串与指定对象进行比较。由于比较的是字符串对象,所以参数直接传递一个字符串。
package myPackage;
public class testString_1 {
public static void main(String[] args) {
String s1 = "abc";
String s2 = "def";
System.out.println(s1.equals(s2)); //比较s1是否与s2相同,输出结果为false
}
}
2、StringBuilder
如果对字符串进行拼接操作,每次拼接,都会构建一个新的String对象,既耗时,又浪费内存空间,而这种操作还不可避免,因此我们可以通过Java提供的StringBuilder类来解决这个问题。
StringBuilder类也在java.lang包下,因此在使用的时候也不需要导包。
StringBuilder是一个可变的字符串类(可变指StringBuilder对象中的内容是可变的),我们可以把它看成是一个容器。
2.1、StringBuilder的构造方法
方法名 | 说明 |
---|---|
public StringBuilder() | 创建一个空白可变字符串对象,不含有任何内容 |
public StringBuilder(String str) | 根据字符串的内容,来创建可变字符串对象 |
2.2、StringBuilder的添加和反转方法
方法名 | 说明 |
---|---|
public StringBuilder append(任意类型) | 添加数据,并返回对象本身 |
public StringBuilder reverse() | 返回相反的字符序列 |
代码演示:
package myPackage;
public class TestStringBuilder {
public static void main(String[] args) {
//创建对象
StringBuilder sb1 = new StringBuilder();
//添加数据。public StringBuilder append(任意类型):添加数据,并返回对象本身(可以实现链式编程)
StringBuilder sb2 = sb1.append("Hello").append("World!"); //链式编程
System.out.println("sb1:" + sb1);
System.out.println("sb2:" + sb2);
System.out.println(sb1 == sb2);
//public StringBuilder reverse():返回相反的字符序列
sb1.reverse();
System.out.println("sb1:"+sb1);
System.out.println("sb2:"+sb2);
}
}
结果为:
sb1:HelloWorld!
sb2:HelloWorld!
true
sb1:!dlroWolleH
sb2:!dlroWolleH
2.3、StringBuilder 和 String 的相互转换
- StringBuilder转换为String:
//通过toString()就可以实现把StringBuilder转换为String public String toString(); 范例:String s = sb.toString();
- String转换为StringBuilder:
//通过构造方法就可以实现把String转换为StringBuilder public StringBuilder(String s); 范例:StringBuilder sb = new StringBuilder(s);