==是关系操作运算符,什么方法也不调用。说明白点:它就是数学中的“=”,比较两个数是否相等的。只不过在Java中“=”被当作赋值了,所以用“==”来表示数学中的“=”。
如果“==”两边是对象的引用,它比较的这两个引用所代表的值。可以认为引用的值就是它所指向的对象的地址。这个时候就是比较两个对象的地址是不是相同了。但地址是在new对象的时候就已经赋值给了引用,并不是在==的时候才调用的new产生地址的。所以==不会调用任何方法。
一般容易混淆的就是==和equals的区别。但两者的区别很简单,==只是比较左右两边本身的值,不管它是否是基本数据类型还是引用数据类型。对于equals默认比较的是哈希值。不过不同的类可能会覆盖这个方法(如String),那就需要具体情况具体分析了。 |