Call by Value and Call by Reference

Call by Value and Call by Reference: जावा में किसी Subroutine (Method) में Arguments को Pass करने के दो तरीके होते हैं। पहले तरीके को Pass By Value व दूसरे तरीके को Pass By Reference तरीका कहा जाता है।

Pass By Value

जब किसी मान को Argument के रूप में Calling Method से Called Method में Pass By Value तरीके से Pass किया जाता है, तब Calling Method से आने वाले मान को प्राप्त करने के लिए Called Method में एक और Local Variable Create होता है।

यानी Create होने वाले उस Local Variable में Calling Method से आने वाला मान Copy हो जाता है। फिर Called Method में उस Copied मान पर जो भी प्रक्रिया होती है, उसका प्रभाव Calling Method के Variables के मान पर नहीं पडता है। इस पूरी प्रक्रिया को समझने के लिए हम एक उदाहरण देखते हैं, जो कि निम्नानुसार है।

// Program
	class PassByValue
	{
		//Attributes
		
		//Methods
		public void calculation( int i, int j)
		{
			i = i + 3;
			j = j + 3;
		}
	}
	
	public class PBVDemonstration
	{
		public static void main(String args[])
		{
			PassByValue object = new PassByValue();
			int x=10, y=20;
	
			System.out.println("Value of x and y is " + x + " " + y);
	
			object.calculation(x, y);
	
			System.out.println("Value of x and y is " + x + " " + y);
		}
	}

// Output 
   Value of x and y is 10 20
   Value of x and y is 10 20

इस उदाहरण Program के Output से हम समझ सकते हैं कि x व y के मान को calculation() Method में Pass करने के बावजूद भी x व y का मान Change नहीं हो रहा है। ऐसा इसलिए होता है क्योंकि जब x व y का मान calculation() Method में Pass किया जाता है, तब इन Variables के मानों को Hold करने के लिए calculation() Method में i व j नाम के दो Variables Create होते हैं और इन Variables में x व y के मान क्रमश: Copy हो जाते हैं। फिर calculation() Method में जो भी Processing होती है वह Actual में i व j के मान पर होती है, ना कि x व y के मान पर।

इसीलिए x व y के मान में कोई परिवर्तन नहीं होता है। जब किसी Method को इस तरीके से Call किया जाता है, जिसमें Actual Argument के मान की Copy ही Call होने वाले Method के Local Variables को Pass किया जाता है, तब इस प्रकार के Calling तरीके को Call By Value या Pass By Value तरीका कहा जाता है।

Pass By Reference

जब Calling Method से किसी Method में इस प्रकार से मान को Pass किया जाता है कि यदि Called Method में उस मान में परिवर्तन किया जाए तो Calling Method में भी उस मान में परिवर्तन हो जाता है, तो इस प्रकार से किसी Method में मान Pass करने की प्रक्रिया को Pass By Reference या Call By Reference तरीका कहा जाता है। इसे भी हम निम्न उदाहरण द्वारा समझ सकते हैं।

// Program
	class PassByReference
	{
		//Attributes
		int x, y;
	
		//2-Argument Constructor
		PassByReference(int i, int j)
		{
			x = i;
			y = j;
		}
	
		//Methods
		public void calculation( PassByReference temp )
		{
			temp.x = temp.x + 3;
			temp.y = temp.y + 3;
		}
	}
	
	public class PBRDemonstration
	{
		public static void main(String args[])
		{
			PassByReference object = new PassByReference(10, 20);
	
			System.out.println("Value of object.x and object.y before call is : "
			+ object.x + " " + object.y);
	
			object.calculation(object);
	
			System.out.println("Value of object.x and object.y after call is : "
			+ object.x + " " + object.y);
		}
	}

// Output 
   Value of object.x and object.y before call is : 10 20
   Value of object.x and object.y after call is : 13 23

इस उदाहरण में हम देख सकते हैं कि जब Object को calculation() Method में भेजा जाता है, तब Object के मान में Method के परिवर्तनों का प्रभाव पडता है और Object के Attributes के मानों में भी परिवर्तन हो जाता है। इस तरह से जब किसी Object को किसी Method में Pass किया जाता है, तो इसे Pass By Reference या Call By Reference तरीका कहा जाता है।

सामान्‍यतया एक बात ध्‍यान रखनी चाहि, कि जावा में जब किसी Method में किसी Basic Data Type के मान को Argument के रूप में Pass किया जाता है, तब इस तरह Call होने वाला Method “By Value” Call होता है और जब किसी Object को किसी Method में Argument के रूप में Pass किया जाता है, तब Call होने वाला Method “By Reference” Call होता है।

ऐसा इसलिए होता है क्योंकि जब हम किसी Class का कोई Variable Create कर रहे होते हैं तब जावा में Actual Object Create नहीं होता है, बल्कि Object का एक Reference मात्र ही Create होता है, जो कि उसी Actual Physical Memory Block को Refer कर रहा होता है, जिसे Calling Method का Object Refer कर रहा होता है।

Java Programming Language in Hindiये Article इस वेबसाईट पर Selling हेतु उपलब्‍ध EBook Java in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी रहा, तो निश्चित रूप से ये पुस्तक भी आपके लिए काफी उपयोगी साबित होगी। 

Java Programming Language in Hindi | Page: 682 | Format: PDF

BUY NOW GET DEMO REVIEWS