
🌹🌹🌹我的主页🌹🌹🌹
🌹🌹🌹【Java SE 专栏】🌹🌹🌹
🌹🌹🌹上一篇文章:带你走近Java的抽象类与接口🌹🌹🌹
文章目录
1. String类的重要性
在C语言中已经涉及到字符串了,但是在C语言中要表示字符串只能使用字符数组或者字符指针,可以使用标准库提供的字符串系列函数完成大部分操作,但是这种将数据和操作数据方法分离开的方式不符合面相对象的思想,而字符串应用又非常广泛,因此Java语言专门提供了String类。
2. String类常用方法
2.1 字符串构造
String类提供的构造方式非常多,常用的就以下三种:
1.使用常量串构造,也称字符串赋值
String str = "hello";
2.直接newString对象
String str1 = new String("hello,world");
3.使用字符数组进行构造
char[] array = {
'1','2','3','4'};
String str2 = new String(array);
将数组名作为形参传到String的构造函数之后,调用了数组的复制方法copyof,然后返回的类型是String类型。

【注意】
- String是引用类型,内部并不存储字符串本身,在String类的实现源码中,String类实例变量如下:

字符串中的内容实际存储在value[]数组当中。
字符串是引用类型,并不直接存储字符串的内容,而是存储的是引用变量的地址。
以下代码和画图演示可以证明:
public static void main(String[] args) {
My_String.fun();
String str1 = new String("1234");
String str2 = new String("12");
String str3 = str1;
System.out.println(str1.length());
System.out.println(str3.isEmpty());
}
str1的引用变量的地址赋值给了str3,此时的str3引用变量存储的是str1的地址,这样也可以通过str3引用变量来指向str1中的字符串的内容。
上述的打印结果分别是4,和false则可以证明这个结论。

结果显示,结论正确。
就接下来看看画图演示:

2. 在Java中“”引起来的也是String类型对象。
System.out.println(str1.length());
System.out.println(str3.isEmpty());
System.out.println("hello".length());

2.2 String对象的比较
字符串的比较是常见操作之一,比如:字符串排序。Java中总共提供了4中方式:
- "== "比较是否引用同一个对象
对于简单类型""是比较数值的大小,而对于引用类型“”是比较引用变量的地址。
public static void main(String[] args) {
//简单类型
int a = 10;
int b = 10;
//引用类型
String str1 = new String("abcdefg");
String str2 = new String("abcdefg");
//比较简单类型
System.out.println(a == b);//true false
//比较引用类型
System.out.println(str1 == str2);
}
}

结果显示:在基本类型中比较的是数值,而在引用类型当中比较的是地址。
2. boolean equals(Object anObject) 方法:按照字典序比较:
比较返回类型为boolean类型,相同则返回true不相同则返回false
字典序:字符大小的顺序,字符大小:字符返回的ASCII值。
String类重写了父类Object中equals方法,Object中equals默认按照==比较:
public boolean equals(Object obj) {
return (this == obj);
}
因为object中equals默认按照==比较,所以我们要在String类中重写equals方法:
//在String中重写的equals方法:
public boolean equals(Object anObject) {
if (this == anObject) {
return true;
}
if (anObject instanceof String) {
String anotherString = (String)anObject;
int n = value.length;
if (n == anotherString.value.length) {
char v1[] = value;
char v2[] = anotherString.value;
int i = 0;
while (n-- != 0) {

最低0.47元/天 解锁文章





