字符串概要
1.基本介绍
- 定义:多个字符组成的序列称为字符串
- 字符串常量:用双引号
""
引起来的字符序列
2.空串与空引用
-
空串:无任何字符的字符串,即双引号之间无任何字符
-
空引用:字符串队形指向
null
String str = ""; //空串 String str1 = null; //空引用 String str2 = " "; //含一个空格的串
3.字符串类
Java
中讯在多种字符串相关类
- 字符串常量类
java.lang.String
- 字符串变量类
java.lang.StringBufferjava.lang.StringBuilder
- 字符串分隔解析类
java.util.StringTokenizer
String
类
1.基本介绍
-
String类
是final修饰的,无法被继承 -
String是字符串常量类:可以指向新的对象但是对象本身的值不能改变
String str3 = "abc"; System.out.println(str3);//abc str3 = "def"; System.out.println(str3);//def
-
初始化:有直接赋值和应用构造方法两种
//两种初始化方式的区别String str4 = "abc"; String str5 = "abc"; System.out.println(str4.equals(str5));//比较内容是否相等 true System.out.println(str4 == str5); //是否指向一个对象 true //字符串存储在常量区已有指向已有不在开辟新空间String str6 = new String("abc"); String str7 = new String("abc"); System.out.println(str6.equals(str7));//true System.out.println(str6 == str7); //false //用new永远都是新开辟内存空间
2.常用的字符串处理
-
获取字符串长度:
字符串.length()
System.out.println(str.length()); //空串:0 // System.out.println(str1.length());//空引用异常 System.out.println(str2.length()); // 1
-
字符串拼接:
字符串1.concat(字符串2)
System.out.println(str5.concat("def")); //abcdef System.out.println(str5 + "def"); //abcdef
-
字符串查找
indexOf
:返回第一次出现的下标值lastIndexOf
:返回最后一次出现的下标值startWith
:是否以某个字符串开头charAt
:查找相应索引对应的值
String str8 = "abcbca"; System.out.println(str8.indexOf("bc")); // 1 System.out.println(str8.lastIndexOf("bc")); // 3 System.out.println(str8.startsWith("bc")); //false System.out.println(str8.charAt(1)); // b
-
字符串分割:
字符串.split("以什么分割")
String str9 = "吴小祖 彭小晏 周小伦"; String[] infos = str9.split(" ");//以什么分割 System.out.println("第一名:" + infos[0]); System.out.println("第二名:" + infos[1]); System.out.println("第三名:" + infos[2]); String str10 = "吴小祖:彭小晏 周小伦"; String[] infos1 = str10.split(" |:");//如果不只一种分隔符用 | String str11 = "吴小祖|彭小晏|周小伦"; String[] infos2 = str11.split("\\|");//如果分隔符是|需要转义
-
字符串比较
equalsIgnoreCase
:比较是否相等,不分大小写compareTo
:返回值为0是代表相等
System.out.println(str12.equalsIgnoreCase(str13)); //true System.out.println(str12.compareTo(str13));
-
字符串替换:
字符串.replace(旧串, 新串)
String str14 = "吴小祖 彭小晏 周小伦"; System.out.println(str14.replace(' ', '|'));//吴小祖|彭小晏|周小伦
-
求子串:
字符串.substring(起始下标, 起始下标+截取长度)
String str15 = "abcdefg"; System.out.println(str15.substring(1, 5));//bcde
StringBuffer
类
1.基本介绍
-
是一种字符串变量类型
-
只能用构造方法创建对象
StringBuffer strbuf = new StringBuffer("abc");
2.常用的方法
-
字符串连接:
append
//传参:拼接字符串 strbuf.append("def"); System.out.println(strbuf);//直接将原字符串修改 abcdef
-
字符串插入:
insert
//传参:插入位置,插入字符串 strbuf.insert(1, "123"); System.out.println(strbuf);//a123bcdef
-
字符串删除:
delete
//传参:起始下标,其实下标+截取长度 strbuf.delete(1, 4); System.out.println(strbuf);//abcdef
-
字符串逆序:
reserve
strbuf.reverse(); System.out.println(strbuf);//fedcba
StringBuilder
类与StringTokenizer
类
1.StringBuilder
类
StringBuilder
类与StringBuffer
类的方法调用是一致的- 但是其属于非线程安全的
2.StringTokenizer
类
- 主要用途是将字符串以定界符为界,分析为一个个独立的词组
- 定界符可以自己指定