概述
- 字符串一旦创建不可变。
- 在java中用双引号引起来的都是String对象
- java中规定,双引号引起来的字符串是不可变的
- 在JDK中,双引号引起来的字符串都是直接储存在方法区字符串常量池
- String s = “abc”;
- 栈中有局部变量,变量保存了内存地址指向方法区中的常量池”abc”(直接指向)
- String s1= new String (“abcdef”)
- 先创建了对象在堆中,堆中有引用指向常量池”abcdef”
- String类已经重新写好了equals()方法,可直接调用
- String 类已经重写好了toString()方法
String的构造方法
- String s = “abc”;
- String s = new String(“abc”);
- String s = new String(byte数组);
- String s = new String(byte数组,起始下标, 长度);
- String s = new String(char数组);
String s = new String(char数组,起始下标, 长度);
String常用方法
compareTo() 判断字符串大小
- contains() //判断是否包含
- endsWith() 判断是否以它结尾
- equalsIgnoreCase() 判断相等不相等 忽略大小写
- getByte() 将字符串转换成Byte数组 (ascll码)
- indexOf() 返回该字符出现在字符串中的第一次索引
- replace() 替换
- split() 拆分字符串,返回String数组
- startsWith() 判断字符串是否以该字符开始
- toLowerCase() 转换小写
- toUpperCase() 转换大写
- trim() 去前后空格
StringBuffer/StringBuilder
String Buffer 是线程安全的
synchronized 同步String builder 非线程安全的
使用局部变量是用非线程安全的(因为不存在线程安全问题)
连接字符串,初始化16个字符, append()添加
频繁进行字符串拼接不建议使用“+”
