Java把用户程序中的String常量放入常量池,常量池中的数据在程序运行期间不允许更改
常量池:
把常量的引用赋值给一个String对象,该对象放入常量池
new运算符的String对象放入堆空间
并置运算有变量相当与new对象,没有变量就依然是常量
public class Main {
public static void main(String[] args) {
String hello = "你好";
String testone = "你"+"好";//放入常量池
System.out.println(hello==testone);//true
System.out.println("你好"==testone);//true
System.out.println(hello=="你好");//true
String you ="你";
String hi ="好";
String testtwo=you+hi;//有变量 放入堆空间
System.out.println(hello==testtwo);//false
String testthree=you+hi;
System.out.println(testthree==testtwo);//false
}
}
String常用方法
length求字符串长度
equals比较字符序列是否相等(String重写了object的equals方法)
startsWith,endsWith判断字符串前缀和后缀
compareTo按字典序与对象的字符串序列比较大小
contains判断是否包含
indexOf求索引值
substring截取字符串
trim去除空格
正则表达式
\d--表示0-9之间的任何一个数字
\D--表示任何一个非数字字符
\s--代表空格类字符
[]--表示方括号中任何一个字符
StringBuffer对象:
StringBuffer对象是字符串可变序列,通过append可以给对象增加字符序列,StringBuffer中的方法大部分都使用synchronized关键字修饰,所以StringBuffer是线程安全的,StringBuilder中的方法则没有,线程不安全,但是StringBuilder因为没有使用使用synchronized关键字修饰,所以性能更高