JAVA如何进行字符串比较?

Python017

JAVA如何进行字符串比较?,第1张

1、首先,随便创建一个有main方法的类。

2、然后定义两个值相等的字符串变量a和b,都是“baidu ABC 我”。

3、然后就是用boolean equals(object obj)来判断这两个字符串是否相等了:可以看到,返回的是true,说明相等。

4、为了验证完善,再定义一个字符串变量c,赋值“asd”,继续比较。

5、运行以后,可以看到运行结果为false,说明不相等。

对于Class

AClass

B两个类,比较它们有两种比较

A

==

B

比较内存地址

A.equals(B)默认比较hashcode

第一种一般不达不到我们要的效果,所以一般选择覆盖类的equals方法来实现比较类

一般比较两个类,会比较是不是一种类,类里的私有变量是否相等,具体看你的逻辑要求是什么样的!

java中的字符串比较方法:

1)string1.equals(string2)

2) str1==str2 。

java中字符串的比较是==比较引用,equals 比较值的做法。但是不同的声明方法字符串的比较结果也是不同的。

例如: String str1=new String("a")

String str2=new String("a")

str1==str2 输出false

str1.equals(str2) 输出true

而如果这样声明

String str1="a"

String str2="a"

str1==str2 输出true

str1.equals(str2) 输出true

这是因为 equals 方法本来也是比较引用的字符串类在实现的时候重写了该方法。

第一种声明方法等于是声明了两个对象,用’==‘比较是时候比较的是引用输出的是false 由于他们的值相同用equals的时候就比较的是值了,输出true。

第二种情况不是因为比较有与第一种有差异,而是因为声明有差异,第二种声明方法在声明的时候有堆或堆栈 共用的现象,也就是说 在声明的时候如果如果声明为类属性他会检查在堆栈中有没有与现在声明的是相同结构的字符串。如果有就直接将地址指向已有内存地址。声明在方法内部的局部变量原理一样只不过他是堆栈共享。