package j;
public class DemoString {
public static void main(String[] args) {
String s1;//字符串对象的声明
s1 = "Hello! Java!";//创建字符串常量对象
//字符串常量以匿名String类型自动创建
//创建空字符串对象
String s2;
s2 = new String();
System.out.println(s2);//将输出空值
System.out.println("************************");
//使用初始值创建字符串对象
String s3 = new String("Hello,Java!");//这行代码将字符串对象的声明与创建写在了一起
//以字符数组为参数构建字符串
char chars[] = { 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h' };// 一维字符数组chars的枚举初始化
String s4 = new String(chars);//构造方法中的参数chars可以将字符数组中的元素写入字符串
System.out.println(s4);
System.out.println("************************");
String s5 = new String(chars, 3, 4);
//构造方法中的参数3和4代表将数组chars中从下标3开始,向后输出4个元素
System.out.println(s5);
System.out.println("************************");
//在Java中,字符串不存在终结符
//字符串的操作
String s6 = "Hello!";
//获取字符串的长度
System.out.println(s6.length());//调用字符串对象的length方法可以获取字符串的长度
System.out.println("************************");
//在字符串中获取单个字符
System.out.println(s6.charAt(3));
//调用字符串对象的charAt()方法可以获取字符串中的单个字符,字符串下标从0开始
System.out.println("************************");
//字符串的连接
String s7 = "Jackson!";
String s8 = s6.concat(s7);//调用字符串对象的concat()方法可以将两个字符串连接起来
String s9 = s6 + s7;
System.out.println(s8);
System.out.println(s9);
String s10 = "Welcome";
String s11 = " To";
String s12 = " Java!";
System.out.println(((s10.concat(s11)).concat(s12)).concat(s7));
//这行代码是方法concat()的嵌套使用
System.out.println("************************");
//找出字符串中的某个字符串或某个子串
System.out.println(s10.indexOf('e'));
//调用字符串对象的indexOf()方法可以返回字符e在字符串s10中第一次出现的位置
System.out.println(s10.indexOf('e', 2));
//这行代码可以返回字符e在字符串下标2(包括2)以后第一次出现的位置(从左到右)
System.out.println(s10.lastIndexOf('e'));
//调用字符串对象的lastIndexOf()方法可以返回字符e在字符串s10中最后一次出现的位置
System.out.println(s10.lastIndexOf('e', 6));
//这行代码可以返回字符e在字符串下标6(包括6)以前第一次出现的位置(从右到左)
System.out.println("************************");
//字符串的比较
String s13 = "Jinlei";
String s14 = "Jinlei";
String s15 = "jinlei";
String s16 = new String("Jinlei");
System.out.println(s13 == s14);
System.out.println(s13 == s15);// 由于字符串常量s13与s15的大小写不同,将返回false
System.out.println(s13 == s16);
System.out.println(s13.equals(s14));
System.out.println(s13.equals(s15));
System.out.println(s13.equals(s16));// equals方法只判断两个字符串的内容是否相同
System.out.println(s13.equalsIgnoreCase(s15));
//调用字符串对象的equalsIgnoreCase()方法可以忽略大小写并判断字符串s13与字符串s15的内容是否相同
System.out.println(s13.compareTo(s16));
//调用字符串对象的compareTo()方法按照字典顺序判断字符串s13与字符串s16的内容是否相同,相同返回0
System.out.println(s13.compareTo(s15));
System.out.println(s13.compareToIgnoreCase(s15));
System.out.println("************************");
//获取子串
String s17 = "abcdefghijk";
System.out.println(s17.substring(4));
//调用字符串对象的substring()方法可以返回从字符串下标4开始的子串
System.out.println(s17.substring(4, 9));
//substring()方法可以输入两个参数,用来指定返回子串的范围
System.out.println("************************");
//字符串的转换、替换和分割
String s18 = " AbCdE ";
System.out.println(s18.toLowerCase());
//调用字符串对象的toLowerCase()方法可以将字符串中的大写字母替换成小写字母
System.out.println(s18.toUpperCase());
//调用字符串对象的toUpperCase()方法可以将字符串中的小写字母替换成大写字母
System.out.println(s18.trim());
//调用字符串对象的trim()方法可以将字符串两端的空白字符删除后的新字符串返回
System.out.println(s18.replace('E', 'f'));
//调用字符串对象的replace()方法可以将第一个参数的字符替换为第二个参数的字符
System.out.println("************************");
//字符串的转换
String s19 = "1200";
String s20 = "12.15";
System.out.println(Integer.valueOf(s19) + Float.valueOf(s20));
//使用包装类Integer对象和Float对象的valueOf()方法将字符串转换为整型和浮点型
System.out.println(Integer.parseInt(s19) + Float.parseFloat(s20));
//也可以使用parseTPYE()方法
String s21 = "China";
char array[] = s21.toCharArray();// 调用字符串对象的toCharArray()方法可以将字符串转换成字符数组
for (int i = 0; i < array.length; i++) {
System.out.print(array[i] + " ");
}
System.out.println();
System.out.println("************************");
//String与StringBuffer/StringBuilder的转换
String s22 = "a";
StringBuffer buffer1 = new StringBuffer("b");
StringBuilder builder1 = new StringBuilder("c");
StringBuffer buffer2 = new StringBuffer(s22);
StringBuilder builder2 = new StringBuilder(s22);
//可以使用StringBuffer类和StringBuilder类的构造方法将String转换成StringBuffer或StringBuilder
String str1 = new String(buffer1);
String str2 = new String(builder1);
//可以使用String类的构造方法将StringBuffer或StringBuilder转换成String
s22.toString();
//StringBuilder的常用操作
StringBuilder builder3 = new StringBuilder("abc");
//使用字符串“abc”将StringBuilder对象初始化
builder3.append("defg");
//使用StringBuilder对象的append()方法可以在字符串后面追加内容
System.out.println(builder3);
StringBuilder builder4 = new StringBuilder("abcdefg");
builder4.delete(3, 5);
//调用StringBuilder对象的delete()方法中的两个参数可以移除字符串下标3到5之间的字符
System.out.println(builder3);
StringBuilder builder5 = new StringBuilder("abcdefg");
builder5.deleteCharAt(3);
//调用StringBuilder对象的deleteCharAt()方法可以移除指定的字符串下标上的字符
System.out.println(builder5);
StringBuilder builder6 = new StringBuilder("abcfg");
builder6.insert(3, "de");
//调用StringBuilder对象的insert()方法可以将第二个参数上的值插入到字符串序列位置的偏移量处(从左到右)
System.out.println(builder6);
StringBuilder builder7 = new StringBuilder("gfedcba");
builder7.reverse();
//调用StringBuilder对象的reverse()方法可以将字符串反向输出
System.out.println(builder7);
}
}