==和.equals()在java中

==和.equals()在java中,java,operators,Java,Operators,读了很多文章后,我发现如果两个操作数引用的是同一个对象,那么==会进行比较 它如何处理基本数据类型 它是否比较操作数的值 ==对于基本数据类型和类是否有不同的工作方式 请澄清对于基本数据类型,您应该使用=,它仅比较两个给定参数的值 对于装箱的基本数据类型,如Long、Double、Integer,应使用equals进行比较。如果使用=,它只比较引用等式。原语不是对象,因此没有等于(…)方法。比较基本体是否相等的唯一方法是使用=运算符 请注意,=运算符实际检查字符串对象(obj1和obj2)是否引

读了很多文章后,我发现如果两个操作数引用的是同一个对象,那么==会进行比较

它如何处理基本数据类型

它是否比较操作数的值

==对于基本数据类型和类是否有不同的工作方式


请澄清

对于基本数据类型,您应该使用
=
,它仅比较两个给定参数的值


对于装箱的基本数据类型,如Long、Double、Integer,应使用
equals
进行比较。如果使用
=
,它只比较引用等式。

原语不是
对象,因此没有
等于(…)
方法。比较基本体是否相等的唯一方法是使用
=
运算符


请注意,
=
运算符实际检查字符串对象(obj1和obj2)是否引用完全相同的内存位置时,比较
double
float
值可能会比较棘手。换句话说,如果obj1和obj2只是同一对象的不同名称,“==”运算符将在比较这两个对象时返回true

equals()方法的行为实际上与“==”运算符的行为相同–这意味着它检查两个对象是否引用内存中的同一位置。但是,equals方法实际上是用来比较两个对象的内容,而不是它们在内存中的位置。这意味着,如果调用equals()方法来比较两个字符串对象,那么只要实际的字符序列相等,就认为这两个对象相等

无法使用equal()比较基元数据类型,因为它们不是对象。 int,char可以使用==运算符进行比较

但当你们比较float和double时,由于机器中的二进制转换,你们可能会得到不同的结果。
因此,在比较浮点值时,为了使所有值(包括特殊的float.NaN值)保持一致,float.compare()是最佳选项。这同样适用于双值。

==
通常比较引用的相等性,其中as
等于
通常比较内容的相等性。。。在较高的层次上,基本数据类型也是这样。不,基本类型在Java中是“特殊的”,并且没有
equals
方法(或任何其他方法)。是复制品。(有很多,)。这比简单的字符串要复杂得多。如果考虑自动装箱(哇,还有另一个搜索词!),那么当我们比较两个基本数据类型时,==比较操作数值。但是当我们比较两个对象时,==比较引用?从某种意义上说,您可以将引用视为对象的内存地址。因此,如果您接受始终比较两个给定操作数的值的
=
,则可以认为
=
也可用于比较指向相同对象的两个引用。在您的语句中,“==”比较指向相同内存位置的对象。但是基本数据类型呢,在这里我们没有任何对象。我们只是使用“==”来比较基本数据类型的值?与对象不同。是的,对于对象使用equals()和对于基本体使用“==”运算符。