本篇文章只是本人为方便查找相关方法而记录,下面具体代码并没有全部真正运行。
//(一) String 不可变对象,默认为null
// 对string对象的增删改等操作都会生成新的String对象,然后更改指针,效率低
// 经常发生改变的字符串最好不要用String
// (1) 字符串对象的创建
String str1="hello"; // 字符串常量
char[] ch=new char[]{'h','e','l','l','o'};
StringBuilder sb=new StringBuilder("hello");
// char[]数组创建,第二条是数组中部分元素创建
String str2=new String(ch);
String str3=new String(ch,1,3);
// StringBuilder对象创建
String str4=sb.toString();
String str5=new String(sb);
// 将int,double等基本数据类型转换为字符串
String str6=String.valueOf(12.3);
// (2) 字符串长度
System.out.println(str1.length());
// (3) 字符串内容比较
System.out.println(str1==str2); // 是否为同一个字符串(地址、引用)
System.out.println(str1.equals(str2)); //内容是否相同
System.out.println(str1.equalsIgnoreCase(str2)); // 忽略大小写,内容是否相同
System.out.println(str1.compareTo(str2)); // 对内容按字典序比较
System.out.println(str1.compareToIgnoreCase(str2)); // 对内容忽略大小写按字典序比较
// (4) 获取指定位置元素
System.out.println(str1.charAt(2));
// (5) 获取指定子串
System.out.println(str1.substring(1)); //一直到最后
System.out.println(str1.substring(1,3)); //区间 左闭右开
// (6) 判断前后缀
System.out.println(str1.startsWith("he")); //是否以某字符串开头
System.out.println(str1.endsWith("llo")); //是否以某字符串结尾
// (7) 判断是否包含某字符串
System.out.println(str1.contains(str2));
// (8) 字符串连接
System.out.println(str1.concat(str2)); //效果等价于str1+str2
// (9) 查找某字符串或字符出现的位置
System.out.println(str1.indexOf("ll"));
System.out.println(str1.indexOf("ll",3));
System.out.println(str1.lastIndexOf("ll"));
System.out.println(str1.lastIndexOf("ll",4));
// (10) 一些实用函数
System.out.println(str1.trim()); // 去除两边的空格
System.out.println(str1.replace("l","--")); // 替换所有匹配子串
System.out.println(str1.replaceFirst("l","--")); //替换第一个匹配的子串
System.out.println(str1.toLowerCase()); // 转换成小写
System.out.println(str1.toUpperCase()); // 转换成大写
// (11) 字符串转换为字符数组
char[] carr= str1.toCharArray();
System.out.println(Arrays.toString(carr));
str1.getChars(0,2,carr,2); // 将部分元素复制到数组中
System.out.println(Arrays.toString(carr)); // 将str1的[0,2)元素复制到carr数组(下标2开始)
// (12) 字符串分割得到数组
String s="ni hao ma ?";
String[] sarr=s.split(" ");
for (String s1 : sarr)
System.out.printf("---"+ s1);
// (13) 遍历字符串
for (int i = 0; i < str1.length(); i++) // 普通for循环,按照下标遍历
System.out.printf(" "+ str1.charAt(i));
for(char x:str1.toCharArray()) //增强for循环,直接遍历元素
System.out.printf(" "+ x);
//(二) StringBuffer与StringBuilder 长度可变的字符串,区别是前者是线程安全的,而后者非线程安全,因此效率会高一些
// StringBuilder 单线程,不保证线程安全,比StringBuffer要快
// (1) StringBuilder的创建 不带参即为""
StringBuilder sb2=new StringBuilder("hello");
// (2) 查看指定位置元素
System.out.println(sb2.charAt(3));
// (2) 在末尾追加字符/字符串
System.out.println(sb2.append(' '));
System.out.println(sb2.append("world"));
// (3) 在指定位置添加字符或字符串
System.out.println(sb2.insert(3,"aaa"));
// (5) 更改指定位置处的元素
sb2.setCharAt(3,'!');
System.out.println(sb2.toString());
// (6) 删除元素
System.out.println(sb2.deleteCharAt(3));//删除指定位置处元素
System.out.println(sb2.delete(1,2)); //删除某区间元素 左闭右开
// (7) 替换指定区间元素
System.out.println(sb2.replace(1,4,"aaa"));
// (8) 字符串反转
System.out.println(sb2.reverse());
// (9) 元素出现位置
System.out.println(sb2.indexOf("aaa")); // 字符串第一次出现位置
System.out.println(sb2.indexOf("aaa",3)); // 指定元素开始,字符串第一次出现位置
System.out.println(sb2.lastIndexOf("aaa")); // 字符串最后一次出现位置
// (10) 转化为String对象
String ss=sb2.toString();
System.out.println(ss);
ss=new String(sb2);
System.out.println(ss)
//(三) 字符串分割 StringTokenizer类
String str="ni hao ma , ni shi shei ?";
StringTokenizer st=new StringTokenizer(str); // 默认分隔符为 空格、制表符、换行符
while(st.hasMoreTokens())
System.out.println(st.nextToken());
StringTokenizer st2=new StringTokenizer(str,", ?"); // 设置分隔符
System.out.println(st2.countTokens()); // 分割为几部分
while(st2.hasMoreTokens())
System.out.println(st2.nextToken());