首页 理论教育 零基础Java:字符串比较教程

零基础Java:字符串比较教程

时间:2023-10-19 理论教育 版权反馈
【摘要】:字符串比较方法定义格式如下:动手写6.2.27上面示例中,使用new关键字创建字符串后,指向不同内存地址的str1和str2使用“==”判断是不相等的。动手写6.2.28其运行结果为:图6.2.28equalsIgnoreCase()比较字符串String中的equals()方法实际上是重写了Object类的equals()方法,通过将待比较的两个字符串中的每个字符一一进行比较得出两个字符串的内容是否相等的结论。

零基础Java:字符串比较教程

Java中,双等号“==”用来对基本类型数据进行比较。但是,对String对象来说,双等号比较的是两个对象的引用内存地址是否相同,而不是比较两个对象的内容是否一致。String类中提供了equals()和equalsIgnoreCase()两个方法来比较字符串对象的内容是否一样,如果被比较的参数为null,则会返回false。字符串比较方法定义格式如下:

动手写6.2.27

上面示例中,使用new关键字创建字符串后,指向不同内存地址的str1和str2使用“==”判断是不相等的。但是直接使用“=”将字符串常量赋值给str1和str2时,本应该是引用赋值不同,为什么判断结果是str1和str2都指向同一个字符串常量呢?这是因为像“www.01kuaixue.com”这样的字符串常量是存在于JVM的栈中的,Java运行时会先判断String池中是否存在内容相同的字符串常量,如果存在,则不会在池中添加,直接将这个常量地址返回引用赋值给变量;如果不存在,则会创建一个新的字符串。但是,使用new关键字创建对象,一定会创建一个新的对象来指向这个常量,同时新建的变量也会指向这个新建的对象。动手写6.2.27的运行结果为:

图6.2.27 equals()比较字符串

equals()方法会将大小写不同的字符串认为是不同的内容,equalsIgnoreCase()方法则不考虑大小写,只要字符相等(即认为A和a是相等的),就会认为这两个字符串是相等的。

动手写6.2.28(www.xing528.com)

其运行结果为:

图6.2.28 equalsIgnoreCase()比较字符串

String中的equals()方法实际上是重写了Object类的equals()方法,通过将待比较的两个字符串中的每个字符一一进行比较得出两个字符串的内容是否相等的结论。JDK中equals()方法的源码如下:

经常阅读JDK自带方法源码是一种良好的学习方式,可以深层次了解底层算法是如何实现的。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈