今天,我们来学习一下Java里面的String字符串,作者依旧尽量用白话描述,希望能够帮助到大家
Java字符串的本质是在栈中存储指针指向堆里的数组,该数组地址和内容均不可变,若更改字符串的值,其实是将指针修改,在堆中开辟一片新的区域存储更改后的值,然后让指针指向这个区域
将字符串a的值赋予字符串b的本质是将a存储的地址赋予b,两者指向同一组数据
String a="abc";
String c=new String ("abc");
第二句代码的作用是不与字符串a共同指向同一个存储区域,而是单独再开辟出一块区域,存储字符串
虽然 a、c 两个字符串的值相同,但是他们指向的地址不同
接下来我们学习一下比较两个字符串的方法
1、equals方法
public class Test {
public static void main(String[] args) {
String a="sds";
String c=new String ("sds");
System.out.println(a.equals(c));
}
}
equals比较的是两个字符串的值是否相等
ps:equals仅在String类型的比较中比较的是值,在其他数据类型中比较的都是地址
返回布尔类型的值,两个字符串的值相等,所以返回true
2、直接通过双等号比较
public class Test {
public static void main(String[] args) {
String a="sds";
String c=new String ("sds");
System.out.println(a==c);
}
}
使用双等号的原理是比较它们指向的地址
因为a和c并不指向同一个存储区域,因此返回false
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
希望对大家有所帮助,如果有错误,欢迎批评指正。