خرداد ۱۰, ۱۳۹۸ Mostafa بدون دیدگاه

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

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

در جاوا آرگومان ها به صورت پیش فرض به روش (ارسال کپی از مقدار به عنوان آرگومان) call by value به تابع ارسال می شوند نه با call by reference که طی آن آدرس متغیر در حافظه ی heap به عنوان آرگومان به تابع فرستاده می شود و تغییر در مقدار آرگومان تغییر در مقدار اصلی متغیر را به دنبال دارد. در روش call by value که صرفا کپی از مقدار متغیر به عنوان آرگومان به تابع فرستاده می شود، تغییرات در مقدار آرگومان بر روی مقدار اصلی متغیر در حافظه ی stack اعمال نمی شود.


مثال کاربردی از ارسال آرگومان به روش call by value در جاوا

همان طور که در بالا گفته شد، در call by value تغییر در مقدار آرگومان به هیچ وجه تاثیری بر روی مقدار اصلی متغیر که در حافظه ی stack قرار دارد، اعمال نمی کند.

class Operation{  
 int data=50;  
 void change(int data){  
 data=data+100;//changes will be in the local variable only  
 }  
 public static void main(String args[]){  
   Operation op=new Operation();  
   System.out.println("before change "+op.data);  
   op.change(500);  
   System.out.println("after change "+op.data);  
 }  
}

خروجی :

before change 50
after change 50

 

مثال کاربردی از ارسال پارامتر به روش call by reference در جاوا

در روش call by reference، زمانی که تابع بر روی آرگومان ارسالی که یک متغیر از نوع آبجکت بوده و حاوی آدرس آن در حافظه ی heap می باشد، تغییری را اعمال می کند، آن تغییر بر روی اصل مقدار نیز اعمال می شود. در مثال زیر یک آبجکت را به عنوان آرگومان به تابع ارسال می کنیم :

class Operation2{  
 int data=50;   
 void change(Operation2 op){  
 op.data=op.data+100;//changes will be in the instance variable  
 }  
 public static void main(String args[]){  
   Operation2 op=new Operation2();  
     System.out.println("before change "+op.data);  
   op.change(op);//passing object  
   System.out.println("after change "+op.data);  
 }  
}  

خروجی :

before change 50
after change 150

 


نظرات

توجه : لطفاً فقط نظرات خود را از این طریق ارسال نمایید و سوالات و مشکلات خود را در انجمن سایت مطرح نمایید.

دیدگاهتان را بنویسید