Java从入门到项目实战(全程视频版)
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

7.2 字符串比较

img

基本数据类型的相等判断可以直接使用Java中提供的“==”运算符来实现,直接进行数值的比较。如果在String类对象上使用“==”比较的将不再是内容,而是字符串的堆内存地址。

范例:在String上使用“==”判断

img

本程序在String类的对象上使用了“==”比较,通过结果发现对于同一个字符串采用不同方法进行String类对象实例化后,并不是所有String类对象的地址数值都是相同的。为了进一步说明问题,下面通过具体的内存关系图进行说明,如图7-1所示。

img

图7-1 String类对象地址数值比较

通过图7-1的分析可以发现,在进行String类对象比较中,“==”的确可以实现相等的比较,但是所比较的并不是对象中的具体内容,而是对象地址数值。

提示:关于“==”在不同数据类型上的使用。

在基本数据类型中“==”描述的是内容相同的判断,而在引用数据类型中“==”的作用还是数值比较,只不过此时的数值内容就是堆内存的地址。

范例:通过自定义类型使用“==”

img

本程序采用了自定义类对象的形式分析了“==”的比较形式,通过图7-2可以发现最终比较的只是两个堆内存的地址数值。

img

图7-2 “==”比较分析

对于字符串内容的判断,在String类中已经提供了相应equals()方法,只需通过String类的实例化对象调用即可,该方法定义如下。

字符串内容相等判断(区分大小写):public boolean equals(Object obj)。

提示:关于equals()方法使用。

在String类中定义的equals()方法里面需要接收的数据类型为Object,此类型将在第9章中为读者讲解。此时读者可以简单地理解为,调用String类的equals()方法只需传入字符串即可,而关于此方法在第9章也会有更加详细的说明。

范例:利用equals()方法实现字符串内容比较

img

本程序采用两种实例化方式实现了String类实例化对象的定义,由于两个实例化对象保存的堆内存地址不同,所以只能够利用equals()方法实现相等判断。

提示:关于“==”和equals()的区别。

String类对象的这两种比较方法是初学者必须掌握的概念,两者的区别总结如下。

img“==”是Java提供的关系运算符,主要功能是进行数值相等判断,如果用在了String对象上表示的是内存地址数值的比较。

imgequals()是由String提供的一个方法,此方法专门负责进行字符串内容的比较。在项目开发中,对于字符串的比较基本上都是进行内容是否相等的判断,所以主要使用equals()方法。