Java的字符串由String
类来构造,一个String
值是一串可以由索引访问的char
值。
字符串遍历
String str = "acdfjkl";
-
直接利用索引
for (int i = 0; i < str.length(); i++){ char ch = str.charAt(i); }
-
转化为字符数组(推荐此方法)
char[] ch = str.toCharArray(); for (char c : ch){ System.out.println(c); }
类型转换
-
将
String
类型转换为基本的数据类型:String str1 = "123"; String str2 = "45.6"; String str3 = "true"; int a = Integer.parseInt(str1); // 123 double d = Double.parseDouble(str2); // 45.6 boolean flag = Boolean.parseBoolean(str3); // true
-
将基本的数据类型转换为
String
类型:int a = 123; double d = 45.6; boolean flag = true; String str1 = a + ""; String str2 = d + ""; String str3 = flag + "";
取子字符串
由于java
中的String
类型是不可变类型,所以对原字符串取子串实际上是实例化了一个新的字符串。
String str = "abcdefgh";
subStr = str.subString(2, 5); // cde
分割字符串
在java
中分割字符串是通过正则表达式来进行分割,返回字符串数组:
String str = "aa bb cc dd";
String[] res = str.split(" "); // [aa, bb, cc, dd]
// split()函数接受的参数为正则表达式。
可变字符串
由于String
类是不可变类型,为了便于对字符串进行操作,提出了StringBuilder
类来直接对字符串进行操作。支持可变字符串的还有StringBuffer
类,区别在于StringBuffer
支持多线程安全,而StringBuilder
的效率更高。
StringBuilder
的常用操作如下:
-
构造函数(四种)
StringBuilder()
– 内容为空,并设置容量为16个字节;StringBuilder(CharSequece seq)
– 使用seq初始化,容量在此基础上增加16StringBuilder(int capacity)
– 设置特定容量StringBuilder(String str)
– 使用str
初始化,容量在此基础上增加16
-
append
方法StringBuilder
类对几乎所有的基本类型都重载了append
方法,并支持直接append
数组。append(int a)
– 支持所有基本类型append(char[] arr)
– 直接增加数组append(char[] arr, int offset, int len)
append(String str)
-
insert
方法insert
方法可以在指定位置插入字符、字符串和数组insert(int offset, char c)
– 支持所有的基本类型insert(int index, char[] arr, int offset, int len)
– 插入字符数组insert(int offset, String str)
– 插入字符串
-
其它常用方法(可改变内容)
delete(int start, int end)
– 删除[start, end)
区间的字符串deleteCharAt(int index)
– 删除index
位置的字符reverse()
– 字符串反转;setCharAt(int index, char ch)
– 使用ch
替代位置index
处的字符replace(int start, int end, String str)
– 使用str
替换子序列setLength(int newLength)
– 重新设置字符串长度