Java字符串(String类)
定义方法:
1、String demo = "test";
2、String demo = new String();
3、String demo = new String("test");
字符串的不变性:
String s1 = "imooc";
String s2 = "imooc"; //imooc为常量字符串,多次出现时会被编译器优化,只创建一个对象
String s3 = "I love"+s1;
String s4 = "I love " + s1;
System.out.println("s1和s2内存地址相同吗?" + (s1 == s2)); //相同
System.out.println("s1和s3内存地址相同吗?" + (s1 == s3)); //不同
System.out.println("s3和s4内存地址相同吗?" + (s4 == s3)); //不同,s1是变量,s4在运行时才知道具体值,所以s3和s4是不同的对象
注意:
1. 字符串 str 中字符的索引从0开始,范围为 0 到 str.length()-1
2. 使用 indexOf 进行字符或字符串查找时,如果匹配返回位置索引;如果没有匹配结果,返回 -1
3. 使用 substring(beginIndex , endIndex) 进行字符串截取时,包括 beginIndex 位置的字符,不包括 endIndex 位置的字符
StringBulider
StringBuffer 是线程安全的,而 StringBuilder 则没有实现线程安全功能,所以性能略高。因此一般情况下,如果需要创建一个内容可变的字符串对象,应优先考虑使用 StringBuilder 类。
这些方法修改了 str 对象的值,而没有创建新的对象,这就是 StringBuilder 和 String 最大的区别。