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

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

🔅به آبجکت هایی که بعد از ایجاد شدن قابل تغییر هستند، Mutable گفته میشود. برای مثال کلاس Date یا StringBuilder
🔅در مقابل به ابجکت هایی که پس از ایجاد شدن قابل تغییر نیستند، Immutable گفته میشود. برای مثال کلاس String, Integer, Long,...

🔰 نمونه کلاس String:

String str = "Test";
str.replaceAll("T","s);
System.out.println(str)
;//prints Test

در قطعه کد بالا پس از خروجی گرفتن رشته str خواهید دید که رشته بدون هیچ تغییر خاصی نمایش داده خواهد شد.
(در اینباره بیشتر بخوانید)

🔆تفاوت های کلاس های Mutable و Immutable
⭕️در کلاس های Mutable فیلد ها بعد از ایجاد ابجکت قابل تغییر هستند در صورتی که در کلاس های Immutable چنین چیزی ممکن نیست.

⭕️کلاس های Mutable دارای متد هایی برای تغییر مقادیر فیلد ها مانند setter & getter هستند. در صورتی که کلاس های Immutable فقط دارای متد های getter میباشند.

⁉️چرا بعضی از کلاس ها Immutable هستند و یا چرا باید باشند؟
- همانطور که گفتیم مقادیر این کلاس ها غیر قابل تغییر است و از لحاظ مدیریت حافظه بصرفه است.
- کلاس های Immutable اصطلاحا Thread Safe هستند (در محیط های چند نخی (multithreading)) در واقع Thread safety به فرایند امن سازی برنامه در محیط های چند نخی گفته میشود.
🔗 نحوه ایجاد کلاس Immutable

#immutable #mutable #threadsafe #thread_safe #StringBuilder #Date #String

@pieceJava
👍3
💎 کلاس StringBuffer در جاوا

🔆 یک کلاس مشابه String در رابطه با رشته ها کلاس StringBuffer میباشد. کلاس رشته همانطور که پیش تر بررسی کردیم، غیرقابل تغییر(Immutable)، دارای اندازه ثابت و... میباشد در حالی که StringBuffer قابل تغییر میباشد و از لحاظ افزودن دنباله ای کاراکتر ها نیز منعطف عمل میکند.

🔗 درباره کلاس های Immutable و Mutable از اینجا بخوانید.
🔗 درباره Immutable بودن رشته ها از اینجا بخوانید.

✏️ برخی از متد های پرکاربرد کلاس StringBuffer
1️⃣ append()
برای افزودن یک متن به آخر یک رشته استفاده میشود.
2️⃣ length()
طول رشته ی ایجاد شده از طریق کلاس StringBuffer را برمیگرداند
3️⃣ charAt()
کاراکتر موجود در ایندکس موردنظر را برمیگرداند.
4️⃣ delete()
دنباله ای از کاراکتر ها را از شی ایجاد شده (از این کلاس) حذف میکند.
5️⃣ deleteCharAt()
کاراکتر موجود در ایندکس موردنظر را حذف میکند.
6️⃣ insert()
متنی را در یک موقعیت مشخص شده (ایندکس) وارد میکند
7️⃣ reverse()
رشته مورد نظر در وارون میکند.
8️⃣capacity()
یک ظرفیت برای StringBuffer در نظر میگیرد
9️⃣trimToSize()
میزان حافظه مصرفی برای دنباله ای از رشته ها را به اندازه سایز رشته کاهش میدهد
———
🔰در ادامه یک مثال از این کلاس در رابطه با بررسی متد های این کلاس بررسی خواهیم کرد.
⭕️ (خروجی هر متد بصورت کامنت امده است)
⭕️ (برای خوانایی بیشتر، کد رو بصورت تصویر توی کانال قرار میدم)
public class Main {
public static void main(String[] args) {
//Telegram: @pieceJava
StringBuffer sb = new StringBuffer("ITHOOLOO");

//prints length of String
System.out.println(sb.length());// prints 8

//appends .comi to String
sb.append(".comi");
System.out.println(sb); // prints ITHOOLOO.comi

//removes a character at index sb.length()-1
sb.deleteCharAt(sb.length() - 1); // removes i from IT...com(i)
System.out.println(sb);// prints ITHOOLOO.com

//removes sequence of characters from index 8 to sb.length()
sb.delete(8, sb.length());//removes ".com"
System.out.println(sb);// prints ITHOOLOO

//reverses String
sb.reverse();
System.out.println(sb);// prints OOLOOHTI

//inserts a String at index 0
sb.insert(0, "HELLO FROM ");
System.out.println(sb);//prints hello from OOLOOHTI
}
}
#StringBuffer #Buffer #Mutable #reverse
———
☕️@pieceJava
👍21