split()切分字符串
String a="测试1测试1测试";
String b=1;
String c[]=a.split(b);//用b对a进行切分并将结果放入数组c[];
//此时数组c[]的内容如下:{测试,测试,测试}
String a="测试1测试1";
String b=1;
String c[]=a.split(b);//用b对a进行切分并将结果放入数组c[];
//此时数组c[]的内容如下:{测试,测试}
contains()计算字符串个数
string a="测试1测试1测试1"
string b="1"
int count =0;
while(a.contains(b)){ //判断a是否包括b
int index=a.indexOf(b); //搜索字符b,如果返回值不是-1,则代表找到了,返回字符所在位置。用来查找字符串出现的位置。第一次循环中,index=3
int len=b.length(); //获得字符串的长度,此处为2
a=a.substring(index+len); //将a字符串重新赋值为,截取掉(index+len)部分之后剩余的字符串。第一次循环后,a="测试1测试1"
count++;
}
system.out.printIn("a中b的个数为:"+count+“个”);
equals()和==比较
//==是引用的比较,equals是值的比较
String a = new String("hello");//标准的String定义方式
String b = new String("hello");
system.out.printIn(a==b);
//输出结果为false,因为==是引用的比较,此处比较的是a和b,而不是a和b的值,他们创建了两个对象,引用的是不同的对象。
system.out.printIn(a.equals(b));
//输出结果为true,用a.equals(b)比较的就是a和b的值。
String a="hello"; //String的享元模式,享元模式的用法并不等于new的定义
String b="hello";
system.out.printIn(a==b);
输出结果为true,享元模式的应用,在定义a和b时,会把a和b同时指向“hello”,也就是说a和b都是引用同一个对象,所以结果为true
+、StringBuilder和StringBuffer拼接字符串
String s="abcd";
s=s+"test";
//输出:abcdtest
//string等于创建了两次对象,等于new了两次,一次是adbc,一次是test
//将a和b的值合并,此时a和b必须是同类型,效果等于a+b,但使用a+b不要求a和b必须要是同类型的。
a.concat(b);
//StringBuilder是非线程安全的,效率更高
StringBuilder s=new StringBuilder("abcd");
s.append("test");
输出:abcdtest
//stringbuilder只会创建一个对象,只new了一次,在一个对象中创建不同的值,效率更高
//StringBuffer是线程安全的,效率低于StringBuilder,同一时刻只有一个线程可以访问该方法
StringBuffer s=new StringBuffer("abcd");
b.append("test");