amozzabanB amozzabanB .

amozzabanB

برنامه نويسي جاوا

۱- به جاي Null از مجموعه هاي خالي بازگشتي استفاده كنيد.
اگر برنامه مجموعه اي را برمي گرداند كه هيچ مقداري ندارد، مطمئن شويد كه مجموعه خالي به جاي عناصر Null برگردانده شده است. اين باعث مي شود تا تعداد زيادي “if else” براي تست عناصرNull حذف شوند.

public class getLocationName {

return (null==cityName ? “”: cityName);

}

۲- رشته ها را با دقت استفاده كنيد.
اگر دو رشته با استفاده از عملگر “+” در يك حلقه “for” به هم متصل شوند، در هر تكرار حلقه يك شي رشته اي جديد ايجاد مي شود. اين باعث اتلاف حافظه و افزايش زمان اجرا مي شود. همچنين هنگام ساخت نمونه از يك شي رشته اي بايد از سازنده ها اجتناب كنيد و آن بايد به طور مستقيم ساخته شود. براي مثال:

//Slower Instantiation

String bad = new String(“Yet another string object”);

//Faster Instantiation

String good = “Yet another string object”

۳- از اشياي غير ضروري خودداري كنيد.
يكي از پر هزينه ترين عمليات (از نظر استفاده از حافظه) در جاوا، 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(“Element: ” + 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(“Inside Try Block.Exiting without executing Finally block.”);

System.exit(0);

}

}

finally {

System.out.println(“Inside Finally Block.”);

}

}

}

}

در برنامه بالا به نظر مي رسد كه “println” در بلاكfinally ، ۵ بار اجرا مي شود. اما در صورت اجراي برنامه، كاربر متوجه مي شود كه بلاكfinally فقط ۴ بار فراخواني مي شود. در تكرار پنجم تابع exit فراخواني مي شود و finally هرگز براي بار پنجم فراخواني نمي شود. دليلش اين است كه اجراي تابع System.exit اجراي تمام موضوعات در حال اجرا از جمله جريان فعلي را متوقف مي كند. حتي بلاك finally كه بعد از try قرار دارد با اجراي exit اجرا نمي شود.

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

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

 

براي مطالعه ادامه مطلب كليك كنيد...


برچسب: ،
امتیاز:
 
بازدید:
+ نوشته شده: ۲۲ ارديبهشت ۱۳۹۹ساعت: ۱۱:۱۴:۵۰ توسط:سارا موضوع:

ارسال نظر
نام :
ایمیل :
سایت :
آواتار :
پیام :
خصوصی :
کد امنیتی :