سلام و خسته نباشید خدمت همه قسمت یازدهم از مجموعه تقلب مصاحبه شغلی برنامه نویس اندروید رو در پیش داریم که میتونید از طریق لینک های زیر به توضیحات و قسمت های قبلی دسترسی داشته باشید، امروز میریم سراغ ده سوال بعدی. در اصل String ها تنها یک بار مقداردهی می شوند و مقدار آن ها دیگر تغییر نمی کند، اگر هم تغییر کنند در اصل یک شی جدید از نوع String ساخته می شود. این مورد توسط StringBuffer انجام نمی شود. این تابع با تکرار ( duplication ) مقادیر String سر و کار دارد. یک String تکراری است در صورتی که محتوای آن String در یک متغیر دیگر درون حافظه موجود باشد. به عنوان مثال با فراخوانی تابع intern بر روی" abc " ماشین مجازی جاوا" abc " را درون یک استخر String قرار می دهد و هر موقع دوباره کسی متغیری برابر" abc " بسازد ماشین مجازی همان متغیر درون استخر را باز می گرداند و دوباره حافظه را برای شی جدید اشغال نمیکند (ابعاد جلوگیری از اشغال حافظه به تعداد تکرار این مقدار در کدتان بستگی دارد. هروقت تابع intern دوباره روی یک String اجرا شود اگر String ای درون یک استخر وجود داشت که تابع equals با اجرا بر روی آن مقدار true را باز گرداند ماشین مجازی آدرس همان String درون استخر را بازمیگرداند و در غیر این صورت یک String جدید را درون استخر می سازد. استخر String در جاوا یک استخر از مقادیر String درون حافظه heap است که هرموقع ما یک متغیر String را توسط double quotes یا همان علامت"" مقدار دهی می کنیم ابتدا ماشین مجازی درون این استخر جستجو می کند و اگر مقدار نسبت داده شده به متغیر جدید ما درون استخر وجود داشت فقط آدرس مقدار درون استخر را باز می گرداند در غیر این صورت یک String جدید را وارد استخر می کند و سپس آدرس آن را باز می گرداند. یک شی یا متغیر final وقتی تعریف شد دیگر قابل تغییر نیست: یک کلاس final نمی تواند زیر کلاس داشته باشد: یک متغیر final بعد از مقدار دهی اولیه دیگر قابل تغییر نمی باشد: یک تابع final نمی تواند در یک زیر کلاس override شود. تابع Finalize عمل پاک کردن حافظه را دقیقا قبل از این که شی Garbage collect شود به انجام می رساند. کلمه finally یک محدوده ( block ) از کد را مشخص می کند که اجرای آن ها بسیار مهم است و چه exception اعمال شده باشد چه اعمال نشود، این محدوده از کد اجرا می شود. متغیر های Static متغیر هایی هستند که تنها یک نسخه از آن ها در یک کلاس وجود دارد و این متغیر ها متعلق به تنها یک نمونه ( instance ) از یک کلاس نیستند و به کل کلاس تعلق دارند و می توان بدون نمونه گیری از یک کلاس به آن ها دسترسی داشته باشید. متغیر های غیر Static می توانند مقادیر منحصر به فردی در هر نمونه به خود بگیرند. قابلیت انعکاس در جاوا بازرسی بر کلاس ها، اینترفیس ها، فیلد ها و متد ها را در هنگام اجرا (بدون توجه به نام کلاس ها در هنگام کامپایل) انجام می دهد. نمونه گیری از اشیاء و فراخوانی توابع و همچنین گرفتن یا set کردن یک مقدار برای فیلد ها را می توان توسط قابلیت انعکاس جاوا انجام داد. توسط multi threading چند وظیفه به صورت همزمان درون یک برنامه اجرا می شوند. در iterator های Fail - fast هرگاه یک thread در حال مرور بر یک شی مجموعه ای (مانند List ) است و یک thread دیگر تغییر ساختاری در شی مجموعه ای ایجاد کند. (مانند اضافه یا حذف کردن مواردی به شی) به سرعت یک ConcurrentModificationException بازگردانده می شود. اما iterator های Fail - Safe همیشه بر روی یک کپی از شی مجموعه ای کار میکنند به جای نسخه اصلی آن شی. ترجمه متنی از Anitaa Murthy تشکر بابت مطالعه پست لایک و حمایت یادتون نره سوالی بود درخدمتم نوشته شده با توسط کوچیکتون حمیدرضا شجراوی =