Java的字符串
javadoc命令生成文档:
目标HTML文档存储到docDir下,执行以下步骤</br>
切换到包含想要生成文档的源文件目录,如果有嵌套的包,必须切换到包含子目录的目录</br>
如果是一个包,运行命令:</br>javadoc -d docDir nameOfPackage</br>
多个包生成文档,运行</br>
javadoc -d docDir nameOfPackage1,nameOfPackage2……</br>
如果文件在默认包中,运行</br>
javadoc -d docDir *.java
String是不可变对象
- java.lang.String被final修饰,不可修改;</br>
- 底层封装的是字符数组以及其操作算法
- 字符串是不可变对象,一旦改变内容,就会创建新对象
- Java字符串内存中采用Unicode编码任何一个字符对应两个字节定长编码
String常量池
Java为了提高性能,静态字符串(字面量、常量、常量连接的结果)在常量池中创建,并尽量使用同一个对象,重用静态字符串
对于重复出现的字符串直接量,JVM会首先在常量池中查找,如果存在,即返回该对象
引用类型的比较重:==用于判断是否为同一个对象,因为比较的是地址,而equals用于判断对象内容是否相同。
String在内存中采用Unicode编码,每个字符占用两个字节;任何一个字符(无论中英文)都算一个字符长度,占用两个字节
使用indexOf实现检索
int indexOf(String str)在字符串中检索str,返回其第一次出现的位置,如果找不到则返回-1
JavaAPI中大多数情况下,凡是使用两个数字表示范围的,通常都是含头不含尾的(左闭右开)
lastIndexOf获取最后一次出现的位置。
subString
subString方法用于返回一个字符串的子字符串
trim
去掉一个字符串左右两边的空字符(包括空格tab等)
charAt
用于返回指定位置的字符
startsWith和endsWith
检测字符串是否已制定字符串开头或结尾</br>
aaa.doc之类的,判断文件类型的时候可以使用endsWith
大小写转换
toUpperCase和toLowerCase</br>
验证码忽略大小写检查的时候经常用到
valueOf
基本类型数据与空字符串拼接可以转换为字符串</br>
另外就是用valueOf方法
字符串性能
StringBuilder封装可变的字符串,对象创建后可以通过调用方法改变其封装的字符序列</br>
当对字符串进行频繁修改的时候应该使用StringBuilder</br>
常用构造方法:</br>
public StringBuilder()</br>
public StringBuilder(String str)</br>
StringBuilder不是字符串</br>
只是用于在做频繁修改字符串的时候使用的类,可以节省不必要的内存开销,提高性能</br>
想将StringBuilder所表示的内容转化为字符串可以调用它的toString()方法
可以有增删改插
StringBuilder append(String str)
向字符串末尾追加新字符串 相当于字符串的 "+" 操作
StringBuilder insert(int index, String str)
向指定位置插入指定字符串,原位置的字符串顺序向后移动
StringBuilder delete(int from, int end)
删除字符串中指定范围内的字符
StringBuilder replace(int from, int end, String str)
将范围内字符串替换为给定的字符串
注意</br>
Java中的字符串连接的过程就是利用StringBuilder实现的String s = "AB"; String s1 = s + "CDE";</br>
//String s1 = new StringBuilder(s).append("DE").toString();
StringBuffer是线程安全的,同步处理,性能稍慢
StringBuilder是非线程安全的,并发处理,性能稍快