说明
String 类在所有开发中用到的次数特别多,String类中也提供了大量的对字符串操作的方法。下面就一个个的看下常用的那部分方法。先给出官网地址:传送门
个人整理相关连接:
- Java基础知识回顾之Stirng类
- Java基础知识回顾之Stirng类常用方法(一)
主要介绍:字符串与字符、字节与字符串、字符串的比较、字符串的查找方法 - Java基础知识回顾之Stirng类常用方法(二)
主要介绍:字符串替换、字符串截取、字符串拆分、字符串常用方法
字符串与字符
在很多语言中都是利用了字符数组的概念描述字符串的信息,这点在 Java String 类的方法也有所体现。
No. | 方法名称 | 类型 | 描述 |
---|---|---|---|
1 | public String(char[] value) | 构造方法 | 将字符数组变为 String 类对象 |
2 | String(char[] value, int offset, int count) | 构造方法 | 将部分数组变为 String 类对象 |
3 | public char charAt(int index) | 普通方法 | 返回指定索引对应的字符信息 |
4 | public char[] toCharArray() | 普通方法 | 将字符串以字符数组的方式返回 |
代码实例
public class StringTest {
public static void main(String[] args) {
String str = "hello";
// 取出指定索引的字符
char c = str.charAt(0);
System.out.println(c); // h
// 将字符串变为字符数组
char[] data = str.toCharArray();
for( char temp: data ){
System.out.println(temp); // h e l l o
}
// 将字符数组变为String类对象
String str1 = new String( data );
System.out.println(str1); // hello
// 将部分字符数组变为 String 类对象
String str2 = new String(data, 1, 2);
System.out.println(str2); // el
}
}
字节与字符串
字节使用 byte 描述,使用字节一般主要用于数据的传输或者进行编码转换。在 String 类中就提供了将字符串变为字节数组的操作。
No. | 方法名称 | 类型 | 描述 |
---|---|---|---|
1 | public String(byte[] bytes) | 构造方法 | 将字节数组变为 String 类对象 |
2 | String(byte[] bytes, int offset, int count) | 构造方法 | 将部分数组变为 String 类对象 |
3 | public byte[] getBytes() | 普通方法 | 将字符串变为字节数组 |
4 | public byte[] getBytes(String charsetName) throws UnsupportedEncodingException | 普通方法 | 进行编码转换 |
代码实例
将字符串转换为字节数组
public class TestDemo {
public static void main(String[] args) {
String str = "helloworld";
// 将字符串转换为字节数组
byte[] data = str.getBytes();
for (int i = 0; i < data.length; i++) {
data[i] -= 32; // 将小写字母变为大写字母
}
System.out.println(new String(data)); // 输出:HELLOWORLD
}
}
字符串的字符集转换
public class TestDemo {
public static void main(String[] args) throws UnsupportedEncodingException {
String str = "王麻子";
// 将字符串以 GB2312 的字符集取出,然后以 ISO-8859-1 字符集编码
String newStr = new String(str.getBytes("GB2312"),"ISO-8859-1");
// 相当于
String str1 = "麻子";
byte[] tbyte = str.getBytes("GB2312");//str 用GB2312编码方式取出
String newStr1 = new String(tbyte,"ISO-8859-1");//将tbyte转换为ISO-8859-1编码形式
}
}
字符串的比较
No. | 方法名称 | 类型 | 描述 |
---|---|---|---|
1 | public boolean equals(String anObject) | 普通方法 | 比较字符串内容是否相等(区分大小写) |
2 | public boolean equalsIgnoreCase(String anotherString) | 普通方法 | 比较字符串内容是否相等(不区分大小写) |
3 | public int compareTo(String anotherString) | 普通方法 | 判断两个字符串的大小(按照字符编码比较,区分大小写)。返回值为0:表示比较的字符串内容相等;返回值大于0:表示大于的结果; 返回值小于0:表示小于的结果 |
4 | public int compareToIgnoreCase(String anotherString) | 普通方法 | 判断两个字符串的大小(按照字符编码比较,不区分大小写)。返回值为0:表示比较的字符串内容相等;返回值大于0:表示大于的结果; 返回值小于0:表示小于的结果 |
代码实例
public class TestDemo {
public static void main(String[] args) throws UnsupportedEncodingException {
String str = "helloworld";
String srb = "hElloWorld";
System.out.println(str.equals(srb)); // false
System.out.println(str.equalsIgnoreCase(srb)); // true
String str1 = "hello";
String srb1 = "hEllo";
System.out.println(str1.compareTo(srb1) ); // 32 表示 str 大于 srb
System.out.println(str1.compareToIgnoreCase(srb1) ); // 0 表示相等
}
}
字符串的查找方法
从一个完整的字符串中判断一个字字符串是否存在。
No. | 方法名称 | 类型 | 描述 |
---|---|---|---|
1 | public boolean contains(CharSequence s) | 普通方法 | 判断指定的内容是否存在(JDK1.5 以上版本使用) |
2 | public int indexOf(String str) | 普通方法 | 由前向后查找指定字符串位置,如果查到了就返回(第一个字母)位置的索引,如果没有找到就返回 -1 |
3 | public int indexOf(String str, int fromIndex) | 普通方法 | 由指定位置从前向后查找指定字符串位置,找不到返回 -1. |
4 | public int lastIndexOf(String str) | 普通方法 | 由后向前查找指定字符串的位置,找不到返回 -1 |
5 | public int lastIndexOf(int ch, int fromIndex) | 普通方法 | 从指定位置由后向前查找指定字符串的位置,找不到返回 -1 |
6 | public boolean startsWith(String prefix) | 普通方法 | 判断是否以指定的字符串开头 |
7 | public boolean startsWith(String prefix, int toffset) | 普通方法 | 从指定位置判断是否以指定的字符串开头,是就返回true,否就返回 false |
8 | public boolean endWith(String suffix) | 普通方法 | 判断是否以指定的字符串结尾,是就返回true,否就返回 false |
代码实例
public class TestDemo {
public static void main(String[] args) throws UnsupportedEncodingException {
String str = "helloworld";
/* indexOf */
// 返回满足条件单词的第一个字母索引
System.out.println(str.indexOf("world")); // 5
// 返回的是第一个查找到的索引位置
System.out.println(str.indexOf("l")); // 2
// 查找第二个 l 的位置,从下标为3开始查找
System.out.println(str.indexOf("l", 3));
/* contains */
// 是否包含指定的字符串
System.out.println(str.contains("or")); // true
/* startsWith 与 endsWith*/
System.out.println(str.startsWith("he")); // true
System.out.println(str.endsWith("ld")); // true
}
}