创建
- 直接创建不加任何参数,这样获得的是一个空的字符串。
- 用一个字符数组做参数,将字符数组拼接后作为内容。
- 因为在底层是用byte数组储存,所以可以用一个byte数组做参数,将byte数组对应字符拼接后作为内容。
- 直接双引号内容,会在常量池中生成对应字符串常量。
"=="比较
基本类型的数据比较是比较内容是否相等,而引用类型则是比较地址值是否相等,即指向内容是否相等。
如果是双引号包裹,Java会先帮助我们在字符串常量池中创建对象,并将地址值赋值给栈中对象,而常量池中的字符串对象则是指向一个byte数组。
如果是创建的新对象,则会在堆中创建字符串对象,并指向byte数组。
常见方法
- equals()可以比较字符串内容比较,括号中可以是常量。当出现常量与变量比较时,建议将常量写在前面,防止变量是 “NULL” 值。
- equalsIgnoreCase()与equals()唯一的区别是前者忽略大小写。
- concat()拼接两个字符串并生成新的字符串返回,生成新字符串的原因是Java中字符串不可改变。
- charAt(index)返回第index个字符,下标从零开始,因为底层是byte数组。
- indexOf(char)返回字符串中第一个char字符的下标,没找到则返回-1。
- subString(index)截取下标从index开始至字符串结束的子字符串并返回。
- subString(begin,end)截取从begin开始到end结束的左闭右开区间子串并返回。
- toCharArray()将字符串转换为字符数组。
- getBytes()将字符串转换为字节数组。
- replace(A,B)将字符串中的子串A全部替换成串B。
- split(str)以str作为分割线分割字符串,但是这个本质上是正则表达式,如果以 "."分割是无法做到的,若要以 "."分割需要写成 “\\.”。
2020年5月30日22:13:23