首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

equals的用法解决办法

2012-01-19 
equals的用法通常“”用于比較基本類型,equals比較的是對象。但是我現在有個疑問:classWarehouse{publicsta

equals的用法
通常“==”用于比較基本類型,equals比較的是對象。

但是我現在有個疑問:

class   Warehouse
{
        public   static   void   main(String   args[])
        {
                Golfball   gb1=new   Golfball( "BrandX ", "Professional ",100);
                Golfball   gb2=new   Golfball( "BrandX ", "Professional ",100);

                if(gb1.equals(gb2))
                      System.out.println( "equals ");
                else
                      System.out.println( "not   equals ");
        }
}

輸出的是:not   equals
哪位大蝦幫忙解釋一下!!

[解决办法]
Equals 的默认实现仅支持引用相等,但派生类可重写此方法以支持值相等。对于引用类型,相等定义为对象相等;即这些引用是否引用同一对象。对于值类型,相等定义为按位相等。

显然你理解错了...

Golfball gb1=new Golfball( "BrandX ", "Professional ",100);
Golfball gb2=gb1;

gb1.equals(gb2) == true
[解决办法]
Golfball gb1=new Golfball( "BrandX ", "Professional ",100);
Golfball gb2=new Golfball( "BrandX ", "Professional ",100);
-----------
gb1和gb2只是类型相同不是同一引用...所以 Equals 不相等...

至于 == 运算符,对于预定义的值类型,如果操作数的值相等,则相等运算符 (==) 返回 true,否则返回 false。对于 string 以外的引用类型,如果两个操作数引用同一个对象,则 == 返回 true。对于 string 类型,== 比较字符串的值。

所以 gb1 != gb2...

热点排行