String
/*
* int indexOf(String str)
* 该方法是用来查找给定字符串在当前字符串中的位置。该方法有几个重载方法。
*
*/
public class StringDemo2 {
public static void main(String[] args) {
// 0123456789012345
String str = "thinking in java";
/*
* 查找in在str字符串中的位置,若没有会返回-1。
*/
int index = str.indexOf("in");
System.out.println("index:"+index);
/*
* 重载方法允许从指定位置处开始查找
*/
index = str.indexOf("in", 3);
System.out.println("index:"+index);
/*
* 查找最后一次出现指定字符串的位置
*/
index = str.lastIndexOf("in");
System.out.println("index:"+index);
}
}
/*
* String subString(int start, int end)
* 截取字符串,从指定位置(start)开始截取到指定的位置(end)
* java api有一个特点,通常用两个数字表示范围时,都是含头不含尾
*/
public class StringDemo3 {
public static void main(String[] args) {
// 0123456789012345
String str = "thinking in java";
//截取"ing"
String sub = str.substring(5, 8);
System.out.println("sub: "+sub);
String host = "www.abcde.cn";
sub = host.substring(4, 9);
System.out.println("sub: "+sub);
/*
* 若只传入一个参数,则是从指定位置开始截取到字符串末尾。
*/
sub = host.substring(4);
System.out.println("sub: "+sub);
}
}
/*
* String trim()
* 去除当前字符串两边的空白字符
*/
public class StringDemo4 {
public static void main(String[] args) {
String str = " hello ";
String trim = str.trim();
System.out.println(str);
System.out.println(trim);
}
}
/*
* char charAt(int index)
* 获取当前字符串指定下标对应的字符
*/
public class StringDemo5 {
public static void main(String[] args) {
// 0123456789012345
String str = "thinking in java";
//查看第5个字符是什么?
char c = str.charAt(4);
System.out.println(c);
/*
* 检查一个字符串是否为回文
*/
String info = "北京市海淀区淀海市京北";
for(int i=0; i<info.length()/2; i++){
if(info.charAt(i)!=info.charAt(info.length()-i-1)){
System.out.println("不是回文");
break;
}
}
}
}
/*
* boolean startWith(String str)
* boolean endsWith(String str)
* 判断当前字符串是否是以指定的字符串开始或结尾的。
*/
public class StringDemo6 {
public static void main(String[] args) {
// 0123456789012345
String str = "thinking in java";
boolean starts = str.startsWith("thi");
System.out.println("starts: "+starts);
boolean ends = str.endsWith("ava");
System.out.println("ends: "+ends);
}
}
/*
* String toUpperCase()
* String toLowerCase()
* 将当前字符串的英文转换为全大写或全小写
*/
public class StringDemo7 {
public static void main(String[] args) {
String str = "我爱Java";
String upper = str.toUpperCase();
System.out.println(upper);
String lower = str.toLowerCase();
System.out.println(lower);
}
}
/*
* String提供了若干重载的静态方法
* static String valueOf(XXX xxx)
* 该方法的作用是将java中其他类型转换为字符串
*/
public class StringDemo8 {
public static void main(String[] args) {
int a = 1;
String strA = String.valueOf(a);
double d = 1.1;
String strB = String.valueOf(d);
System.out.println(strA);
System.out.println(strB);
}
}
StringBuilder
/*
* StringBuilder提供了用于修改字符串内容的相关方法
* 其内部维护的是一个变长的字符数组,所以修改都是在当前对象内部完成的。
* 当频繁修改字符串内容时,应当使用当前类来完成
*/
public class StringBuilderDemo1 {
public static void main(String[] args) {
String str = "北京海淀区Java";
/*
* 将String转换为StringBuilder
* 可以使用有参的构造方法。
* StringBuilder也有无参构造方法,默认表示空字符串
*/
StringBuilder builder = new StringBuilder(str);
/*
* 从StringBuilder转换为String
* 使用StringBuilder的toSting方法即可
*/
str = builder.toString();
System.out.println(str);
/*
* StringBuilder append(String str)
* 向当前字符串末尾追加指定内容。
* 有若干重载方法,参数类型不同,这些重载方法
* 允许追加其他内容(先转换为字符串再追加)
*/
builder.append(",这是追加的部分。");
System.out.println(builder.toString());
/*
* StringBuilder replace(int start, int end, String str)
* 将指定范围内的字符串替换为指定的内容。
*/
builder.replace(9, 19, ",改变之后的部分。");
System.out.println(builder.toString());
/*
* StringBuilder delete(int start, int end)
* 将当前字符串中指定范围内的内容删除。
*/
builder.delete(0, 9);
System.out.println(builder.toString());
/*
* StringBuilder insert(int index, String str)
* 将给定字符串插入到指定位置,原位置及后续字符串顺序向后移动。
*/
builder.insert(0, "插入的部分");
System.out.println(builder.toString());
/*
* 字符串反转
*/
builder.reverse();
System.out.println(builder.toString());
}
}
StringBuffer
StringBuffer 的功能和 StringBuilder 类似,区别在于 StringBuffer 是线程安全的,而 StringBuilder 不是线程安全的。