java字符串比较java字符串的比较方法Java 字符串比较




java字符串比较java字符串的比较方法Java 字符串比较

2022-07-21 2:27:27 网络知识 官方管理员

介绍

字符串是Java中的一个特殊类。我们在Java程序中经常使用字符串,所以比较两个字符串是Java中的一种常见做法。在本文中,我尝试回答关于字符串的最常见问题,比如:“如何在Java中比较字符串?”

在验证、排序、引用匹配等过程中,比较字符串非常有用。

我列出了在Java中比较字符串的三种不同方法

使用equals()方法(比较内容)

使用==操作符(比较对象引用)

使用compareTo()方法(按字母顺序比较字符串)

java字符串比较(java字符串的比较方法)(1)

1.使用Equals()方法比较字符串

这样,我正在使用.equals()String类的实例方法。.equals()方法原本是Object类方法,而String类会覆盖它。

equals()方法比较两个字符串的值相等性,无论它们在逻辑上是否相等。

equals()String类中的方法将另一个字符串作为参数,并将其与指定的字符串进行比较。true当且仅当参数字符串不为null且包含与指定字符串相同的字符时,它返回。

publicbooleanequals(ObjectanObject)Itcomparethisstringwiththeargumentstringsandreturntrueiftheargumentisnotnullandcontainsthesamecharacterasthespecifiedstring.param-anotherstringreturns-true-ifargumentisnotnullanditcontainssamecharactersasthespecifiedstring13ex.firstString.equals(secondString)14//returnstrueifandonlyifthesecondStringisnotnullandcontainsthesamecharactersasfirstString.

已要求程序使用以下equals()方法比较字符串:

/**2*AJavaprogramtocomparetwostringsusingequsls()3*andequalsIgnoreCase()methodoftheString.4*5*@authorGauravKukadeatcoderolls.com6*/78publicclassCompareUsingEquals{910publicstaticvoidmain(String[]args){11StringfirstString="coderolls";12StringsecondString="javablog";13StringthirdString="coderolls";14StringfourthString="CodeRolls";1516System.out.println("Comparingstringsusingequals()andequalsIgnoreCase()method\n");1718//Usingequals()method19System.out.println(firstString.equals(secondString));System.out.print("firstString.equals(thirdString):");System.out.println(firstString.equals(thirdString));/**UsingequalsIgnoreCase()methodtoignore*caseconsideration(i.e.Capitalorsmall)ofboththestrings.*/System.out.print("firstString.equalsIgnoreCase(fourthString):");System.out.println(firstString.equalsIgnoreCase(fourthString));}}

输出:

Comparingstringsusingequals()andequalsIgnoreCase()methodfirstString.equals(secondString):falsefirstString.equals(thirdString):truefirstString.equalsIgnoreCase(fourthString):true

2.使用==操作符比较字符串

在String中,==操作符用于比较给定字符串的引用,这取决于它们是否引用相同的对象。

当使用==操作符比较两个字符串时,如果字符串变量指向相同的java对象,则返回true。否则,它将返回false。

我已经给出了一个Java程序来比较使用==操作符如下:

/***一个Java程序,用于使用==运算符比较字符串。**==运算符会终止是否两个字符串都引用*到相同的String对象。*/publicclassCompareUsingEqualsToOperator{publicstaticvoidmain(String[]args){StringfirstString="coderolls";StringsecondString="javablog";StringthirdString="coderolls";//建具有与firstString或thirdString相同值的新String对象StringfourthString=newString("coderolls");System.out.println("Comparingstringsusing==operator\n");System.out.print("firstString==secondString:");System.out.println(firstString==secondString);/**这里firstString和thirdString指的是相同的String对象*/System.out.print("firstString==thirdString:");System.out.println(firstString==thirdString);/**HerefirstStringandfourthStringhavesamevalue*buttheyarereferringtothedifferentStringobject.**henceitwillprint'false'*/System.out.print("firstString==fourthString:");System.out.println(firstString==fourthString);}}

输出:

Comparingstringsusing==operatorfirstString==secondString:falsefirstString==thirdString:truefirstString==fourthString:false

使用==操作符进行字符串比较的问题

大多数初学Java的开发人员都会犯这个错误,他们使用==操作符比较两个字符串。

逻辑上,它们必须检查两个字符串是否包含相同的字符序列。

在Java字符串中,==操作符用于检查字符串对象和equals()方法的引用,equals()方法用于检查两个字符串的值是否相等。

==-检查引用是否相等

equals()——检查值是否相等

当我们将字符串值赋给字符串变量时,JVM将检查字符串池中是否已经存在具有相等值的字符串。如果它不在字符串池中,它将被添加到常量池中,并返回对该字符串对象的引用。

如果它存在于字符串池中,则返回对该字符串对象的内存地址的引用。

下面的图像显示了同样的图形解释。

java字符串比较(java字符串的比较方法)(2)

在上方,我们firstString指向字符串池中的“coderolls”字符串。

如果我们将相等的值分配给另一个字符串变量,JVM将检查具有该值的字符串是否出现在字符串常量池中。

由于在前面的步骤中已经创建了具有该值的string对象,所以另一个string变量开始引用前面创建的string对象实例。

下面的图像显示了“firstString”和“secondString”的图形说明,它们指向字符串池中的“coderolls”字符串。

java字符串比较(java字符串的比较方法)(3)

当我们使用new运算符创建字符串时,将创建一个新的字符串对象并将其存储在Java堆空间中。

java字符串比较(java字符串的比较方法)(4)

在上方,我们可以看到'firstString'和'secondString'指向coderolls字符串池中的“”字符串,而'thirdString'指向coderollsJava堆空间中的“”。

如果参数字符串在词法上大于指定字符串,也就是说,如果参数字符串在指定字符串之后,那么它返回一个负整数。(参数字符串>指定字符串)

如果参数字符串在字典上比指定字符串小,也就是说,如果参数字符串在指定字符串之前,则返回正整数。(参数字符串<指定字符串)

如果两个字符串都是lexicographicequals,则返回0。(参数字符串=指定字符串)

如果想忽略两个字符串的情况,请使用compareToIgnoreCase()方法。

我已经给出了一个使用compareTo()方法比较字符串的程序。它还包含一个用compareToIgnoreCase()方法忽略案例的案例。

/**2*AJavaprogramtocomparestringsusingcompareTo()3*andcompareToIgnoreCase()method.4*5*compareTo()comparestringslexicograpgically.6*7*@authorGauravKukadeatcoderolls.com8*/910publicclassCompareUsingCompareTo{1112publicstaticvoidmain(String[]args){1314StringfirstString="java";15StringsecondString="coderolls";16StringthirdString="sql";17StringfourthString="CodeRolls";1819System.out.println("ComparingstringsusingcompareTo()andcompareToIgnoreCase()method\n");2021//UsingcompareTo()method22System.out.println(firstString.compareTo(secondString));System.out.print("firstString.compareTo(thirdString):");System.out.println(firstString.compareTo(thirdString));/*29*UsingcompareToIgnoreCase()methodtoignore30*caseconsideration(i.e.Capitalorsmall)ofboththestrings.31*/System.out.print("secondString.compareToIgnoreCase(fourthString):");System.out.println(secondString.compareToIgnoreCase(fourthString));}}

输出:

ComparingstringsusingcompareTo()andcompareToIgnoreCase()methodfirstString.compareTo(secondString):7firstString.compareTo(thirdString):-9secondString.compareToIgnoreCase(fourthString):0

结论

我们可以用下面的方法来比较字符串:

在字符串中使用equals()方法:equals()方法用于检查字符串值是否包含相同的字符序列。

使用==操作符:==操作符检查两个字符串的引用是否相等,是否指向同一个字符串对象。

使用compareTo()方法:compareTo()方法用于按字母顺序检查字符串。查看关于如何按字典顺序比较字符串的详细文章。

大多数初学Java的开发人员在比较字符串时都会出错。他们想要检查字符串的内容,但是他们使用==操作符来检查它。

总是建议使用equals()方法根据字符串的内容比较字符串。

发表评论:

最近发表
网站分类
标签列表