题目:已知String str = “this is a text”,1.将str中的单词获取出来 2.将str中的text替换为practice 3.在text前面插入一个easy 4.将每一个单词的首字母改为大写
public class Demo06 {
public static void main(String[] args) {
//已知String str = “this is a text”,1.将str中的单词获取出来 2.将str中的text替换为practice 3.在text前面插入一个easy 4.将每一个单词的首字母改为大写
String str = "this is a text";
//1.将str中的单词获取出来
System.out.println("=====将str中的单词获取出来=====");
String[] array = str.split(" ");
for (String string:array) {
System.out.println(string);
}
//2.将str中的text替换为practice
System.out.println("=====将str中的text替换为practice=====");
String str1 = str.replace("text","practice");
System.out.println(str1);
//3.在text前面插入一个easy
System.out.println("=====在text前面插入一个easy=====");
String str2 = str.replace("text","easy text");
System.out.println(str2);
//4.将每一个单词的首字母改为大写
System.out.println("=====将每一个单词的首字母改为大写=====");
StringBuffer Array = new StringBuffer();
for (int i = 0; i < array.length; i++) {
char first = array[i].charAt(0);//提取每个单词中下标为0的字符串,即首字母
char First = Character.toUpperCase(first);//将首字母变为大写
String str3 = First + array[i].substring(1);//首字母与其余字母拼接
Array.append(str3).append(" ");//将所有单词拼接
}
System.out.println(Array.toString().trim());
}
}
1、关于String、StringBuffer、StringBulider的区别
String:所有的String都会默认由final修饰,以常量形式保存在常量池(字符串池)中,所以当每一个String被创建好之后,就不会再发生任何变化了;在以下代码中,系统并非是将name的值改变成"Joe",而是创建了一个新的也名为"name"的对象,并把"Joe"赋给了name,而原来的"name"会被JVM的垃圾回收制度给回收掉,其本质为不断新建和回收的过程,故而执行速度很慢;
String name = "Emmet";
name = "Joe";
StringBuffer:不同于String的地方在于,StringBuffer的对象是变量,其本质为对该对象直接进行修改,不存在String的新建和回收过程,故而执行速度远超String;如下,方法一会比方法二执行速度慢很多;
//拼接"abc"与"de"
//方法一
String str1 = "abc";
String str2 = "de";
String str = str1 + str2;
System.out.println(str);
//方法二
StringBuilder stringBuilder=new StringBuilder().append("abc").append("de");
System.out.println(stringBuilder.toString().trim());
StringBulider:和StringBuffer相同的地方在于,StringBulider的对象也是变量,同样是对该对象直接进行修改;但如果一个StringBuffer对象在字符串缓冲区被多个线程使用时,StringBuffer中很多方法可以带有synchronized关键字,所以可以保证线程是安全的,但StringBuilder的方法则没有该关键字,所以不能保证线程安全,有可能会出现一些错误的操作;
所以我们做出以下总结:
在字符串数量较少时可以使用String;
单线程下在字符缓冲区进行大量操作的情况使用StringBulider;
多线程下下在字符缓冲区进行大量操作的情况用StringBuffer;
2.subString()方法
作用:从此实例检索子字符串;截取子字符串在指定的字符位置开始并一直到该字符串的末尾;
使用方法:public string Substring(int startIndex);
public static void main(String[] args) {
String str = "我爱中国";
String str2 = str.substring(2);
System.out.println(str2);//中国
}
3.StringBuffer的相关方法
append(); 追加:在字符串后追加内容;
insert();添加,可以在指定位置添加;
replace();替换,可以指定位置进行替换;
delete();删除,可以删除指定角标的字符;
public class Demo08 {
public static void main(String[] args) {
StringBuffer sb = new StringBuffer();
//1.append(); 追加
sb.append("少林功夫好耶");
System.out.println(sb.toString());//少林功夫好耶
sb.append(",少林功夫棒耶");
System.out.println(sb.toString());//少林功夫好耶,少林功夫棒耶
//2.insert(); 添加,可以在指定位置添加
sb.insert(0,"当当当当当,");
System.out.println(sb.toString());//当当当当当,少林功夫好耶,少林功夫棒耶
//3.replace(); 替换,指定位置替换
sb.replace(2,5,"邦邦邦");
System.out.println(sb.toString());//当当邦邦邦,少林功夫好耶,少林功夫棒耶
//4.delete();
sb.delete(0,6);
System.out.println(sb.toString());//少林功夫好耶,少林功夫棒耶
}
}