1.字符串创建(长字符串连接,推荐StringBuilder)
采用字面值的方式赋值:
例如 String str = “hello”,JVM首先会去字符串池中查找是否存在”hello”这个对象,如果不存在,则在字符串池中创建”hello”这个对象,然后将池中”hello”这个对象的引用地址返回给字符串常量str;如果存在,则不创建任何对象,直接将池中”hello”这个对象的地址返回,赋给字符串常量str。String str2 = “hello”,str ==str2 结果为true;
采用new关键字:
String str =new(“hello”),JVM首先在字符串池中查找有没有”hello”这个字符串对象,如果有,则不在池中再去创建”hello”这个对象了,直接在堆中创建一个”hello”字符串对象,然后将堆中的这个”hello”对象的地址返回赋给引用str;如果没有,则首先在字符串池中创建一个”hello”字符串对象,然后再在堆中创建一个”hello”字符串对象,然后将堆中这个”hello”字符串对象的地址返回赋给str。String
str2 = new(“hello”),str == str2 结果为false;//
==为比较地址。如果使用String类的equals方法,比较的是值,str1.equals(str2) 结果为true。
2.空字符串与null
空字符串代表长度为0的字符串,null代表没有关联任何对象
3.常用api
- char charAt(int index):返回给定位置的代码单元
- int codePointAt(int index):返回从给定位置开始的码点
- int compareTo(String other):按照字典顺序,如果支付穿位于ohter之前,返回一个负数;如果字符串位于
- other之后返回一个正数;如果相等,返回0
- boolean equals(String other):如果与ohter相等返回true
- boolean equalsIgnoreCase(String other):忽略大小写的比较
- boolean startWih(Sting prefix):以prefix开头,则返回true
- boolean endWith(String suffix):以suffix结尾,则返回true
- int indexOf(……):从前往后匹配,存在返回开始位置,不存在返回-1
- int lastIndexOf(……):从后往前匹配
- int length() : 返回字符串长度
- String replace(CharSequence oldStr, CharSequence newStr):替换
- String sustring(……):截取
- String toLowerCase():转换成小写
- String toUpperCase():转换成大写
- String trim():返回新字符串,去掉头部和尾部空格
- String join(……):字符串连接