تیکه پاره های جاوا
528 subscribers
93 photos
24 videos
7 files
58 links
سلام خوش اومدید. اینجا یادداشت ها و تکه های جاوا رو کنار هم قرار میدیم :) مطالب کاملا اختصاصی و دستنویس هستند. کپی فقط با ذکر منبع و آیدی کانال❤️

📝برای تدریس پیام دهید
محمدرضا عظیمی‌فرد
🆔 @mrvj475
Download Telegram
💎 مقایسه اشیا (ابجکت ها) در جاوا

🔆 توی جاوا هر کلاس بصورت پیشفرض از کلاس Object ارث بری میکند. کلاس Object شامل متد هایی مثل hashCode, equals, toString و... میشود که کاربرد گسترده ای در رابطه با کار با ابجکت ها دارند. به همین منظور برای مقایسه ابجکت ها از متد equals و hashCode از کلاس Object استفاده میشود.

🔗در مورد کلاس آبجکت از اینجا بخوانید

🔅هش کد در جاوا یک عدد صحیح 32 بیتی میباشد. هش کد یک مقدار منحصر بفرده که بصورت پیشفرض توسط JVM برای هر نمونه (شی / ابجکت) تعریف میشود.

👈 طبق این تعریف اگر دو ابجکت دارای هش کد برابر باشند، یعنی با هم برابرند با توجه به متد equals ولی لزوما دو ابجکت با هش کد برابر، با هم برابر نیستند. یعنی این شرط لازم و کافی نیست.

برای بررسی برابر بودن ابجکت ها، لازم است متد equals پیاده سازی شود.
🔰 مثال:
💠 کلاس Employee

داخل کلاس متد equals را اورراید میکنیم و فیلد هارا با هم مقایسه میکنیم (البته بستگی به این داره که برابری از نظر شما چه شرایطی داشته باشد. توی این مثال من شرط برابری را برابر بودن فیلد ها قرار دادم).
(برای بهتر دیده شدن کد ها، گوشی را در حالت افقی نگه دارید)

public class Employee {
private String firstName;
private String lastName;

public Employee(String firstName, String lastName) {
this.firstName = firstName;
this.lastName = lastName;
}

@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Employee a = (Employee) o;
return firstName.equals(a.firstName) && lastName.equals(a.lastName);
}
}

بعد از اورراید کردن متد، شرایط زیر را بررسی میکنیم:
() شرط اول: this == o به این معناست که اگر هر دو ابجکت به یک ادرس از حافظه اشاره کنند، یعنی با هم برابرند و مقدار ترو را برگرداند.

() شرط دوم: اگر ابجکت o از یک کلاس نباشد و یا مقدار null را داشته باشد، یعنی با هم برابر نیستند و مقدار فالس را برگرداند.

اگر شرط یک و دو با موفقیت پشت سر گذاشته شود، نوع o را که از نوع Object میباشد، به نوع Employee تغییر میدهیم (type casting) و سپس سراغ شرط آخر میرویم.

() شرط آخر: با توجه به برابر بودن یا نبودن فیلد های کلاس، مقدار ترو یا فالس را برمیگرداند.

🔰 بعنوان مثال با توجه به متد equals باید این دو ابجکت شرط برابری را داشته باشند:

Employee e1 = new Employee("A","B");
Employee e2 = new Employee("A","B");
System.out.println(e1.equals(e2));//returns true


#equals #object #hashCode #hash #inheritence

@pieceJava
👍5
Media is too big
VIEW IN TELEGRAM
#یکبار_برای_همیشه

چرا وقتی یک آبجکت رو چاپ میکنیم، خروجی زیر رو داره؟
[I@12b231e
Employee@312b4a3
- خروجی بالا دقیقا چیه؟
- چجور میشه تغییرش داد؟
- هش کد چیه؟ ادرس حافظست یا...؟
- متد toString چیست؟

⭕️ هنگ درام: کیا رکنی
———
#hashcode #toString
🟡 @PieceJava
13👍5👏2