String特点
- 字符串是常量,底层被final修饰的数组。一旦被创建就不可被修改。
- JVM 9 从char数组改为byte数组
- JVM8中String的常量池的容量最小为1009.
String常用创建方式
- 字面量创建
String A="A";
当使用字面量来创建字符串对象的时候,JVM会先去字符串常量池中查找该对象是否存在,若存在则直接返回该对象的引用,否则将在字符串常量池中创建新的字符串。这样避免相同的字符串常量被重复创建,节约内存 。
- new关键字创建(构造方法)
String a=new string("a");
当使用构造方法创建的时候,直接在栈开辟一个空间存储对象的引用,若创建的字符串内容在常量池中存在,则栈中的引用会直接指向常量池对应的字符串;若创建的字符串内容在常量池中不存在则,会直接在堆中创建对应字符串,并且常量池中也不会额外维护。
String使用注意事项:
- 在使用String对象的时尽量用字面量定义也可以使用intern
- 除非必须尽量避免使用split,由于split支持正则,所以效率低,若大量频繁的使用将会消耗大量的资源。若确实需要,可以考虑使用apache的StringUtils.split.频繁的split可以缓存结果。
常用方法:
- charAt
- 通过下标找到对应的单个字符
- indexOf
- 指定字符返回对应下标
- subString
- 截取字符串
- Split
- 根据指定字符拆分字符串
- equels
- 比较字符串,string重写了equels方法比较的是值
- concat
- 追加字符串
- replace
- 将指定字符串A替换成指定字符串B
- intern
- 当调用intern方法时,如果池中包含一个与该string确定的字符串相同时,则会返回该字符串。如果没有将该字符串添加到池中,并返回池中的引用。