====================String的创建===================
字符串类的创建:
public class CreateTest {
public static void main(String[] args) {
String a = "hello"; //直接赋值创建对象
String aa = "hello";
System.out.println(a==aa); //true
String b = new String("hello");
String bb = new String("hello");
System.out.println(b==bb); //false
//一般比较字符串相同,使用equals--比较内容
System.out.println(b.equals(bb)); //true
}
}

====================String的常用方法===================
String类: 不可变字符串
不可变字符串:调用任何方法,不会改变原对象的值
public class MethodTest {
public static void main(String[] args) {
String a = "hello";
System.out.println(a.charAt(0)); //获取该下标的字符,下标从0开始
String b = a.concat("world"); //字符串拼接--helloworld
System.out.println(b); //hello
System.out.println(a.contains("hel")); //是否包含子串
char[] c = a.toCharArray(); //将字符串转字符数组返回
System.out.println(Arrays.toString(c));
System.out.println(a.length()); //求长度
System.out.println(a.indexOf("ll")); //根据传入的子串,得到下标
System.out.println(a.toUpperCase()); //小写转大写
System.out.println(a.startsWith("h")); //true
System.out.println(a.startsWith("hello")); //true
System.out.println(" h e ".trim()); //去除左右空格
String d = "暴力的黄色小说,很暴力";
//replace:完全匹配的替换
System.out.println(d.replace("暴力", "xx")); //
//replaceAll:正则表达式替换,可以完全匹配也可以按规则;
//例如: 手机号替换;规则:1开头,长度11,必须都数字 dd13833388833ff
System.out.println(d.replaceAll("暴力", "xx")); //
String[] dd = d.split(","); //按某个字符串进行分割,返回字符串数组
System.out.println(Arrays.toString(dd));
System.out.println(a.substring(1)); //从下标1开始提取子串到最后
System.out.println(a.subSequence(1, 3)); //包括起始下标,不包括终止下标
}
}
3. 可变字符串(重点)
可变字符串(StringBuffer、StringBuilder)
调用任何方法,可以改变原对象的值
有了不可变字符串,为什么需要可变字符串? 提升性能
StringBuffer、StringBuilder区别(扩展先了解)
在使用上都是一样的,只是StringBuffer加了锁,更安全,性能低;
StringBuilder没加锁,不安全,性能高
应用场景:
在单线程(一条执行通道)中倾向用StringBuilder,性能更好,因为不存在不安全的情况
在多线程中倾向用StringBuffer,考虑安全为主
public class Test1 {
public static void main(String[] args) {
//可变字符串的创建
StringBuilder sb = new StringBuilder("hello");
//StringBuilder sb2 = "dd"; //注意:不能直接赋值字符串
sb.append("world"); //字符串追加
System.out.println(sb);
//StringBuilder与String性能PK---通过反编译工具查看
long start = System.currentTimeMillis();
//String a = "";
for(int i=0;i<10000;i++) {
//a += i;
sb.append(i);
}
System.out.println(System.currentTimeMillis()-start);
System.out.println(sb.toString()); //转字符串返回
//System.out.println(sb.reverse()); //字符串反转
System.out.println(sb.delete(3, 6)); //删除指定起始下标和终止下标字符串,不包括终止下标
}
}
浙公网安备 33010602011771号