API概述
API(Application Programming Interface):应用程序编程接口
Java API:指的就是JDK中提供了各种功能的Java类。这些类将底层的实现封装了起来,我们不需要关心这些类是如何实现的,只需要学习这些类如何使用即可,我们可以通过帮助文档来学习这些API如何使用。
String概述
String类在java.lang包下,所以使用的时候不需要导包
String类代表字符串,Java程序中的所有字符串文字都被实现为此类的实例,也就是说,Java程序中所有的双引号字符串,都是String类的对象。
字符串特点:
-
字符串不变,为常量,他们的值在创建后不能被更改
-
字符串缓冲区支持可变字符串,因为String对象是不可变的,它们可以被共享。
-
字符串效果上相当于字符数组(char[])(JDK8及以前),但是底层原理是字节数组(byte[])
String构造方法
public class StringDemo { public static void main(String[] args) { //public String(),创建一个空白字符串对象,不含有任何内容 String s1 = new String(); System.out.println("s1:"+s1); //public String(char[] chs),根据字符数组的内容创建字符串对象 char[] c = {'a','b','c'}; String s2 = new String(c); System.out.println("s2:"+s2); //public String(byte[] bys),根据字节数组的内容创建字符串对象 byte[] b = {97,98,99}; String s3 = new String(b); System.out.println("s3:"+s3); //String s = "abc",直接赋值的方式创建字符串对象 String s4 = "abc"; System.out.println("s4:"+s4); }
String对象的特点
-
通过new创建的字符串对象,每一次new都会在堆申请一个内存空间,虽然内容相同,但是地址值不通
char[] chs = {'a','b','c'}; String s1 = new String(chs); String s2 = new String(chs);
上面的代码中,JVM首先创建一个字符数组,然后每一次new都会有一个新的地址,只不过s1和s2参考的字符串内容是相同的
-
以""方式给出的字符串,只要字符序列相同(顺序和大小写),无论在程序代码中出现几次,JVM都只会建立一个String对象,并在字符串池中维护
String s3 = "abc"; String s4 = "abc";
上面代码中,针对第一行代码,JVM建立一个String对象放在字符串池中,并给s3参考。第二行则让s4直接参考字符串池中的String对象,即它们本质上是同一个对象
String中的常用方法
StringBuilder
StringBuilder概述
如果对字符串进行拼接操作,每次拼接,都会构建一个新的String对象,既耗时又浪费内存空间,而这种操作还不可避免,那么有没有一种比较好的方式可以解决这个问题呢?
我们可以通过StringBuilder类来解决这个问题。
StringBuilder是一个可变的字符串类,我们可以把它看成一个容器,这里的可变指的是StringBuilder对象中的内容是可变的
String和StringBuilder的区别
-
String内容不可变,StringBuilder内容可变
StringBuilder构造方法
public class StringBuilderDemo { public static void main(String[] args) { //public StringBuilder();创建一个空白可变字符串对象,不含任何内容 StringBuilder sb = new StringBuilder(); System.out.println("sb:"+sb); System.out.println("sb.length:"+sb.length()); //public StringBuilder(String str);根据字符串的内容,来创建可变字符串对象 StringBuilder sb2 = new StringBuilder("hello"); System.out.println("sb:"+sb2); System.out.println("sb.length:"+sb2.length()); } }
StringBuilder的添加和反转方法
StringBuilder和String相互转换
-
StringBuilder转换为String
public String toString():通过toString方法实现
-
String转换为StringBuilder
public StringBuilder(Strng s):通过构造方法实现