JAVA spring使用功能详解

发布于:2022-08-05 ⋅ 阅读:(280) ⋅ 点赞:(0)

字符串的获取与初始化

首先需要注意的是字符串初始化后是无法修改的

例如:

String a="abc";
a="asc";

这里看似是修改了字符串a的内容,实际上是通过创建另一个字符串对象(初始化为“asc"),然后将改新建的字符串对象赋值给字符串a,所以在这个过程中一共有两个字符串对象。

1.使用直接赋值的方式来获取一个字符串对象(最简单也是最常用的方式)

String s1="abc";

使用这种方式时,系统会检查字符串在串池中是否存在,如果不存在则创建新的,若存在则复用,将串池中的该字符串地址赋给字符串对象

2.使用new的方式获取一个字符串对象

String s1=new String();

这里是调用String类的构造方法,此时的s1的内容为空。

String s1=new String("abc");

这里是调用构造方法的重载进行获取与赋值字符串对象,但是很明显,此方法与方法一相比就是多此一举,完全没有必要,了解即可。

3.传递一个字符数组,然后根据改数组的内容再创建一个新的字符串对象(常用在需进行经常修改操作的字符串)

char [] s1={'a','b','s'};
String s2=new String(s1);

4.传递一个字节数组,根据字节数组的内容创建一个字符串对象

应用实例:网络传输一般都是以字节的方式进行传输,我们一般需要将字节转化为字符串进行阅读。

byte [] s1={97,98,99,100};
String s2=new String(s1);

运行结果:

 字符串的比较

首先需要注意的是:字符串的比较不能简单的使用”=="

因为“==”用于两个基本数据类型时,比较的是两个量的值的大小。而用于引用数据类型时,比较的是两个量存储的地址值。

例如:

 由于s1与s2都是通过new创建的,虽然存储地址中的值相同,但在堆中的地址不同,所以返回false

还有一种情况:

 使用直接赋值的方法创建的字符串,由于在串池中采取复用的方式,所以存储的地址相同,返回true.(尤其注意,需要比较的两个字符串都是该方式创建的情况下才可以使用“==”比较,)

虽然“=="在此时可以有效使用,但是不建议使用”==“进行字符串的比较。

常规的字符串比较方法(使用String类的成员方法):

 equals()  AND equalsIgnoreCase()

两个方法的区别在于:

equals() 严格区分大小写,只有两个字符串完全相同的情况下才会返回true

equalsIgnoreCase() 不区分大小写

案例:

 


网站公告

今日签到

点亮在社区的每一天
去签到