amozzabanb



۱- به جای Null از مجموعه های خالی بازگشتی استفاده کنید.
اگر برنامه مجموعه ای را برمی گرداند که هیچ مقداری ندارد، مطمئن شوید که مجموعه خالی به جای عناصر Null برگردانده شده است. این باعث می شود تا تعداد زیادی ldquo;if elserdquo; برای تست عناصرNull حذف شوند.

public class getLocationName {

return (null==cityName ? ldquo;rdquo;: cityName);

}

۲- رشته ها را با دقت استفاده کنید.
اگر دو رشته با استفاده از عملگر ldquo;+rdquo; در یک حلقه ldquo;forrdquo; به هم متصل شوند، در هر تکرار حلقه یک شی رشته ای جدید ایجاد می شود. این باعث اتلاف حافظه و افزایش زمان اجرا می شود. همچنین هنگام ساخت نمونه از یک شی رشته ای باید از سازنده ها اجتناب کنید و آن باید به طور مستقیم ساخته شود. برای مثال:

//Slower Instantiation

String bad = new String(ldquo;Yet another string objectrdquo;);

//Faster Instantiation

String good = ldquo;Yet another string objectrdquo;

۳- از اشیای غیر ضروری خودداری کنید.
یکی از پر هزینه ترین عملیات (از نظر استفاده از حافظه) در جاوا، Object Creation یا همان ساخت شی است. بنابراین توصیه می شود، اشیا را فقط در صورت وم ایجاد یا مقدار اولیه شوند. کد زیر مثالی ارائه می دهد:

import java.util.ArrayList;

import java.util.List;

public class Employees {

private List Employees;

public List getEmployees() {

//initialize only when required

if(null == Employees) {

Employees = new ArrayList();

}

return Employees;

}

}

۴- دوراهی بین آرایه (Array) و آرایه لیستی (ArrayList)
اغلب برای توسعه دهندگان تصمیم گیری درباره استفاده از ساختار ArrayList برای نوع داده آرایه سخت است. هر دوی آنها نقاط قوت و ضعف خود را دارند. انتخاب واقعاً به شرایط مورد نیاز بستگی دارد.

import java.util.ArrayList;

public class arrayVsArrayList {

public static void main(String[] args) {

int[] myArray = new int[6];

myArray[7]= 10; // ArraysOutOfBoundException

//Declaration of ArrayList. Add and Remove of elements is easy.

ArrayList myArrayList = new ArrayList<>();

myArrayList.add(1);

myArrayList.add(2);

myArrayList.add(3);

myArrayList.add(4);

myArrayList.add(5);

myArrayList.remove(0);

for(int i = 0; i < myArrayList.size(); i++) {

System.out.println(ldquo;Element: rdquo; + myArrayList.get(i));

}

//Multi-dimensional Array

int[][][] multiArray = new int [3][3][3];

}

}

۱- آرایه ها اندازه ثابتی دارند اما اندازه در ArrayListها متغیر است. از آنجا که اندازه آرایه ثابت است، حافظه برای متغیر نوع آرایه در زمان اعلان و تعریف آن اختصاص می یابد. در نتیجه آرایه ها بسیار سریع هستند.

از طرف دیگر اگر اندازه داده معلوم نباشد، در آرایه برای تعداد داده های بیشتر منجر به خطای ایندکس خارج از محدوه اندازه آرایه می شود و تعداد داده های کمتر باعث اتلاف فضای ذخیره سازی می شود.

۲- اضافه یا حذف عناصر از ArrayList بسیار ساده تر از آرایه است.

۳- آرایه می تواند چند بعدی باشد اما ArrayList تنها می تواند یک بعد داشته باشد.

۵- چه زمانی کد Finally در Try اجرا نمی شود؟
قطعه کد زیر را در نظر بگیرید:

public class shutDownHooksDemo {

public static void main(String[] args) {

for(int i=0;i<5;i++)

{

try {

if(i==4) {

System.out.println(ldquo;Inside Try Block.Exiting without executing Finally block.rdquo;);

System.exit(0);

}

}

finally {

System.out.println(ldquo;Inside Finally Block.rdquo;);

}

}

}

}

در برنامه بالا به نظر می رسد که ldquo;printlnrdquo; در بلاکfinally ، ۵ بار اجرا می شود. اما در صورت اجرای برنامه، کاربر متوجه می شود که بلاکfinally فقط ۴ بار فراخوانی می شود. در تکرار پنجم تابع exit فراخوانی می شود و finally هرگز برای بار پنجم فراخوانی نمی شود. دلیلش این است که اجرای تابع System.exit اجرای تمام موضوعات در حال اجرا از جمله جریان فعلی را متوقف می کند. حتی بلاک finally که بعد از try قرار دارد با اجرای exit اجرا نمی شود.

وقتی System.exit فراخوانی می شود، JVM دو کار پاکسازی قبل از توقف برنامه انجام می دهد:

در ابتدا همه ماژول های ثبت شده در Runtime.addShutdownHook را متوقف می کند. این بسیار مفید است زیرا منابع را به بیرون از JVM منتقل می کند.
دومی مربوط بهFinalizers (فینالیزرها)، چه System.runFinalizerOnExit و چه Runtime.runFinalizersOnExit باشد. استفاده از فینالیزرها برای مدت زمان طولانی است که منسوخ شده است. فینالیزرها می توانند روی اشیاء زنده در زمان استفاده توسط تریدهای دیگر اجرا شوند. این کار منجر به نتایج نامطلوب یا حتی بن بست می شود.


آخرین مطالب

آخرین ارسال ها

آخرین جستجو ها


اندیشه ها و نظرات یک برنامه نویس و بازی ساز قیمت پمپ وکیوم گل من گلی vectorisuny من و روزهایم با کنکور علم اطلاعات و دانش شناسی Michelle's collection نامبر پرو | دانلود شماره مجازی ساز پیشرفته pooyarci تیم پرسپولیس گلپایگان