String类概述
String 类代表字符串。Java 程序中的所有字符串字面值(如 “abc” )都作为此类的实例实现即Java程序中的所有字符串字面值都是String类的对象。
字符串是常量,它们的值在创建之后不能更改(若对字符串进行拼接("+")等操作时会创建新的对象)。因为 String 对象是不可变的,所以可以共享。
String 类包括的方法可用于检查序列的单个字符、比较字符串、搜索字符串、提取子字符串、创建字符串副本并将所有字符全部转换为大写或小写。
Java 语言提供对字符串串联符号("+")以及将其他对象转换为字符串的特殊支持。字符串串联是通过 StringBuilder(或 StringBuffer)类及其 append 方法实现的。字符串转换是通过 toString 方法实现的,该方法由 Object 类定义,并可被 Java 中的所有类继承。
构造方法
String类重载构造方法,且含空参构造。
目前学习常用的构造方法有:
public String(); 空参构造
举例:
public class Demo4 {
public static void main(String[] args) {
String s = new String();
}
}
public String(String Original); 把字符串常量值转换为字符串,换句话说新创建的字符串是参数字符串的副本
举例:
public class Demo4 {
public static void main(String[] args) {
String s = new String("hello,world");
}
}
结果:
hello,world
public String(byte[] bytes); 将字节数组转换成字符串
举例:
public class Demo4 {
public static void main(String[] args) {
byte[] bytes={'h','e','l','l','o'};
String s = new String(bytes);
System.out.println(s);
}
}
public String(byte[] bytes, int index, int length); 把字节数组的一部分转换成字符串。index表示的是从第几个索引开始,length表示的是长度
public class Demo4 {
public static void main(String[] args) {
byte[] bytes={'h','e','l','l','o'};
String s = new String(bytes,2,3);
System.out.println(s);
}
}
public String(char[] value); 把字符数组转换成字符串
public class Demo4 {
public static void main(String[] args) {
char[] value={'a','b','c','d','e'};
String s = new String(value);
System.out.println(s);
}
}
public String(char[] value, int index, int count); 把字符数组的一部分转换成字符串
public class Demo4 {
public static void main(String[] args) {
char[] value={'a','b','c','d','e'};
String s = new String(value,1,4);
System.out.println(s);
}
}
String类的判断功能
有关于String类的判断功能的方法有equals()、contains()、startsWith()、endsWith()等方法。
equals()方法:
String类重写了Object类的equals()方法。该方法比较的是两个字符串的内容是否相同,该方法区分大小写。返回值为boolean类型,即true或false。
将此字符串与指定的对象比较。当且仅当该参数不为 null,并且是与此对象表示相同字符序列的 String 对象时,结果才为 true。
equalsIgnoreCase()方法:
该方法比较的是两个字符串的内容是否相同,不区分大小写。如果两个字符串的长度相同,并且其中的相应字符都相等(忽略大小写),则认为这两个字符串是相等的。返回值为boolean类型,即true或者false。
在忽略大小写的情况下,如果下列至少一项为 true,则认为 c1 和 c2 这两个字符相同。
- 这两个字符相同(使用 == 运算符进行比较)。
- 对每个字符应用方法 Character.toUpperCase(char) 生成相同的结果。
- 对每个字符应用方法 Character.toLowerCase(char) 生成相同的结果。
contains()方法:
该方法用于判断字符串中是否包含传递进来的字符串。返回值为boolean类型。当且仅当此字符串包含指定的 char 值序列时,返回 true。
startsWith()方法:
该方法用于判断字符串是否是以传递进来的字符串开头。返回值为boolean类型。
如果参数表示的字符序列是此字符串表示的字符序列的前缀,则返回 true;否则返回 false。还要注意,如果参数是空字符串,或者等于此 String 对象(用 equals(Object) 方法确定),则返回 true。
endsWith()方法:
该方法用于判断字符串是否以传递进来的字符串结尾,返回值为boolean类型。
如果参数表示的字符序列是此对象表示的字符序列的后缀,则返回 true;否则返回 false。注意,如果参数是空字符串,或者等于此 String 对象(用 equals(Object) 方法确定),则结果为 true。
isEmpty()方法:
该方法用于判断字符串是不是空串(字符串长度为0),返回值为boolean类型。
如果 length() 为 0,则返回 true;否则返回 false。
String类的获取功能
常用的String类的获取功能有,获取字符串的长度、索引、指定索引处的字符串等。
length()方法:
该方法返回字符串的长度。
charAt()方法:
该方法用于获取指定索引位置的字符。
返回指定索引处的 char 值。索引范围为从 0 到 length() - 1。序列的第一个 char 值位于索引 0 处,第二个位于索引 1 处,依此类推,这类似于数组索引。
indexOf()方法:
该方法用于返回指定字符在此字符串中第一次出现处的索引。
在此对象表示的字符序列中第一次出现该字符的索引;如果未出现该字符,则返回 -1。
返回在此字符串中第一次出现指定字符处的索引,从指定的索引开始搜索。
返回在此对象表示的字符序列中第一次出现的大于或等于 fromIndex 的字符的索引;如果未出现该字符,则返回 -1。
该方法用于返回指定字符在此字符串中最后一次出现处的索引。
返回在此对象表示的字符序列中最后一次出现该字符的索引;如果未出现该字符,则返回 -1。
返回指定字符在此字符串中最后一次出现处的索引,从指定的索引处开始进行反向搜索。
返回在此对象表示的字符序列(小于等于 fromIndex)中最后一次出现该字符的索引;如果在该点之前未出现该字符,则返回 -1。
该方法用于返回指定字符串在此字符串中第一次出现处的索引。
如果字符串参数作为一个子字符串在此对象中出现,则返回第一个这种子字符串的第一个字符的索引;如果它不作为一个子字符串出现,则返回 -1。
返回指定子字符串在此字符串中第一次出现处的索引,从指定的索引开始。
返回指定子字符串在此字符串中最右边出现处的索引。将最右边的空字符串 “” 视为出现在索引值 this.length() 处。
返回指定子字符串在此字符串中最后一次出现处的索引,从指定的索引开始反向搜索。
substring()方法
该方法从指定位置开始截取字符串,默认到末尾。
返回一个新的字符串,它是此字符串的一个子字符串。该子字符串从指定索引处的字符开始,直到此字符串末尾。
该方法从指定位置开始到指定位置结束截取字符串。
返回一个新字符串,它是此字符串的一个子字符串。该子字符串从指定的 beginIndex 处开始,直到索引 endIndex - 1 处的字符。因此,该子字符串的长度为 endIndex-beginIndex。
String类的转换功能
getBytes()方法:
该方法把字符串转换成字节数组,将结果存储到一个新的 byte 数组中。
toCharArray()方法:
该方法把字符串转换为字符数组。
valueOf()方法:
该方法把字符数组转成字符串。
该方法把int类型的数据转成字符串。
String类的valueOf方法可以把任意类型的数据转成字符串。
toLowerCase()方法:
该方法把字符串转成小写。
toUpperCase()方法:
该方法把字符串转成大写。
concat()方法:
该方法进行字符串的拼接操作,将指定字符串连接到此字符串的结尾。
如果参数字符串的长度为 0,则返回此 String 对象。否则,创建一个新的 String 对象,用来表示由此 String 对象表示的字符序列和参数字符串表示的字符序列连接而成的字符序列。
String类的其他常用功能
替换功能:
replace()方法:
将指定字符进行替换。
返回一个新的字符串,它是通过用 newChar 替换此字符串中出现的所有 oldChar 得到的。
将指定字符串进行替换。
使用指定的字面值替换序列替换此字符串所有匹配字面值目标序列的子字符串。该替换从字符串的开头朝末尾执行,例如,用 “b” 替换字符串 “aaa” 中的 “aa” 将生成 “ba” 而不是 “ab”。
去除字符串两空格:
trim()方法:
返回字符串的副本,忽略前导空白和尾部空白。
如果此 String 对象表示一个空字符序列,或者此 String 对象表示的字符序列的第一个和最后一个字符的代码都大于 ‘\u0020’(空格字符),则返回对此 String 对象的引用。
否则,若字符串中没有代码大于 ‘\u0020’ 的字符,则创建并返回一个表示空字符串的新 String 对象。
返回的字符串移除了前导和尾部空白的副本;如果没有前导和尾部空白,则返回此字符串。、
字符串的比较:
compareTo()方法:
该方法会对照ASCII 码表,从第一个字母进行减法运算,返回的就是这个减法的结果。
如果前面几个字母一样会根据两个字符串的长度进行减法运算返回的就是这个减法的结果。
如果两个字符串一模一样,返回的就是0。
具体解释:
按字典顺序比较两个字符串。该比较基于字符串中各个字符的 Unicode 值。按字典顺序将此 String 对象表示的字符序列与参数字符串所表示的字符序列进行比较。如果按字典顺序此 String 对象位于参数字符串之前,则比较结果为一个负整数。如果按字典顺序此 String 对象位于参数字符串之后,则比较结果为一个正整数。如果这两个字符串相等,则结果为 0;compareTo 只在方法 equals(Object) 返回 true 时才返回 0。
如果没有字符不同的索引位置,则较短字符串的字典顺序在较长字符串之前。在这种情况下,compareTo 返回这两个字符串长度的差,即值: this.length()-anotherString.length()。
compareToIgnoreCase()方法:
该方法的用法同compareTo()方法的用法,只不过忽略了字符串中的大小写。