4、String

java.lang.String

概述

常用方法

String类两种赋值方法的区别

一、通过字面量定义的方式=赋值

String s1 = "abc";
String s2 = "abc";
System.out.println(s1 == s2);
输出
true

=赋值,会将"abc"存入字符串常量池中,由于字符串常量池内不会存放重复的字符串,在常量池中指向同一个"abc"对象,所以s1s2的地址信息一样。

二、通过new + 构造器的方式

String s1 = new String("abc");
String s2 = new String("abc");
System.out.println(s1 == s2);
输出
false

此类赋值方法,s1和s2指向堆空间中的不同的String类型的对象,而这两个不同的String类型对象的char[],指向常量池中的同一个“abc”对象,所以,s1和s2的地址信息不一样。

image-20230524175656477

两个字符串类型对象连接,如果在编译期,可以就确定值的情况下,那么连接的结果会放入字符串常量池;只要有一个是变量,连接的结果不会进入字符串常量池。

StringBuffer、StringBuilder类

三者的对比

三者的执行效率对比

从高到低排列:StringBuilder > StringBuffer > String

常用方法(StringBuffer、StringBuilder)