一、写在前面:
Java 中的 String 类是一个代表字符串的类。它属于
java.lang
包,因此不需要导入就可以直接使用。String 类被设计为不可变的,也就是说,一旦创建了 String 对象,它的值就不能被修改。String 类被声明为
final
,这意味着它不能被继承。这是因为如果允许继承 String 类并修改其行为,可能会破坏字符串不可变性的特性,从而引入潜在的安全风险和性能问题。因此,Java 设计者选择将 String 类设计为不可变且不可继承的,以确保字符串操作的一致性和可靠性。
二、String类的常用构造器
- String():可以初始化一个string对象,指向一个空字符串序列。
- String(byte[] bytes): 可以初始化一个string对象,将指定字节数组中的的数据转换为字符串
- String(char() value): 可以初始化一个string对象,将指定字符数组中的数据转换为字符串。
- String( char [] value, int offset, int count): 可以初始化一个string对象,将指定字符数组中的指定数据转换为字符串。
- String(String original): 表示创建一个新的 String 对象,其内容与传入的
original
字符串相同。换句话说,它会复制参数字符串的内容并创建一个新的 String 对象。
@Test
void stringDemo(){
//演示 : String类的常用构造器
//1 —— String()
String str0 = new String();
System.out.println(str0);
System.out.println("--------------------");
//2 —— String(byte[] bytes)
byte[] bytes = {68, 69, 70, 71}; //对应ASCII码表
String str1 = new String(bytes);
System.out.println(str1);
System.out.println("--------------------");
//3 —— String(char[] value)
char[] value = {'z', 'c', 'v', '_', 'j', 'a', 'v'};
String str2 = new String(value);
System.out.println(str2);
System.out.println("--------------------");
//4 —— String(char[] value, int offset, int count)
String str3 = new String(value, 0, 4);
System.out.println(str3);
System.out.println("--------------------");
//5 —— String(String original)
String str_4 = new String("CSDN yyds!");
System.out.println(str_4);
// --------------------
// DEFG
// --------------------
// zcv_jav
// --------------------
// zcv_
// --------------------
// CSDN yyds!
}
三、String类常用成员方法
1.判断功能的方法 :
①boolean equals(Object anObject) :可以判断当前字符串与指定对象的内容是否相同,底层比较的是字符串的内容,区分大小写。
②boolean equalsIgnoreCase(String anotherString):判断当前字符串与指定字符穿的内容是否相同,不区分大小写。
③boolean startsWith(String prefix) :判断当前字符串是否以指定的字符串开头。
④boolean isEmpty() :判断当前字符串是否为空。
@Test
void stringDemo() {
// //1 —— boolean equals(Object anObject)
String str = "zcm";
System.out.println("\"zcm\"字符串与str字符串的内容相等吗?" + "zcm".equals(str));
System.out.println("================");
//2 —— boolean equalsIgnoreCase(String anotherString)
System.out.println("\"zcm\"字符串与str字符串的内容相等吗?" + "zcm".equalsIgnoreCase(str));
System.out.println("================");
//3 —— boolean startWith(String prefix)
System.out.println("str字符串是否以\"zc\"开头?" + str.startsWith("zc"));
System.out.println("str字符串是否以\"zc\"开头?" + str.startsWith("zc"));
System.out.println("================");
//4 —— boolean isEmpty()
System.out.println("str字符串是否为空?" + str.isEmpty());
// "zcm"字符串与str字符串的内容相等吗?true
// ================
// "zcm"字符串与str字符串的内容相等吗?true
// ================
// str字符串是否以"zc"开头?true
// str字符串是否以"zc"开头?true
// ================
// str字符串是否为空?false
}
2.获取功能的方法 :
①int length() :获取当前字符串的长度。
②char charAt(int index) : 获取指定位置索引的字符。
③int indexOf(String str) :获取指定字符 第一次出现的索引,默认从第0位开始。
④nt lastIndexOf(String str)。 获取指定字符(串)最后一次出现的索引,若没有,返回-1。
⑤String substring(int beginIndex) “获取指定索引位置(包含该位置) 之后的字符串。