esmaeilbf
جمعه 27 اردیبهشت 1392, 14:35 عصر
برای مقایسه ی مقدار دوتا primitive type از عملگر == استفاده میشه مثلا:
int x=2
int y=2
x==y خروجیش میشه: true
--------------------------------------------
وقتی می نویسیم:
Integer z = new Integer(2);
Integer y = new Integer(2);
boolean result = z == y;
خروجیش :false هست چون برای مقایسه محتوای object ها باید از متد equals استفاده بشه
و اگر بنویسیم :
boolean result = z.equals(y);
خروجی : true هست
--------------------------------------------
تا اینجا مشکلی نیست اما وقتی حودمون یک کلاس که داخلش یک فیلد داره می سازیم
دیگه متد equals روی شی ای که از اون کلاس میسازیم جواب نمیده!!
علتش چی هست؟
و راه حلش چیه؟
int x=2
int y=2
x==y خروجیش میشه: true
--------------------------------------------
وقتی می نویسیم:
Integer z = new Integer(2);
Integer y = new Integer(2);
boolean result = z == y;
خروجیش :false هست چون برای مقایسه محتوای object ها باید از متد equals استفاده بشه
و اگر بنویسیم :
boolean result = z.equals(y);
خروجی : true هست
--------------------------------------------
تا اینجا مشکلی نیست اما وقتی حودمون یک کلاس که داخلش یک فیلد داره می سازیم
دیگه متد equals روی شی ای که از اون کلاس میسازیم جواب نمیده!!
علتش چی هست؟
و راه حلش چیه؟