JavaRush /جاوا بلاگ /Random-SD /جاوا ۾ پيراگراف پاس ڪرڻ
vincent_vega
سطح
Gainesville

جاوا ۾ پيراگراف پاس ڪرڻ

گروپ ۾ شايع ٿيل
جاوا ۾ هڪ متغير هڪ ڪنٽينر آهي جنهن ۾ هڪ قدر آهي. پوء ان جو مطلب ڇا آهي "پاس" هڪ متغير؟ ۽ بنيادي ۽ حوالن جي ڊيٽا جي قسمن جي وچ ۾ ڇا فرق آهي.
جاوا ۾ پيرا ميٽر پاس ڪرڻ - 1
اسان انهي کي بعد ۾ حاصل ڪنداسين. اچو ته پهرين هڪ سادي تفويض سان شروع ڪريون. هي ڪوڊ ڇا ڪندو آهي:
int х = 3;
int у = х;
لائن 1 تي، قسم جي int جو ھڪڙو متغير x ٺاھيو ويو آھي ۽ قيمت 3 مقرر ڪيو ويو آھي. لائن 2 تي، ھڪڙي قسم جي int جو ھڪڙو متغير y ٺاھيو ويو آھي ۽ متغير x جي قيمت مقرر ڪئي وئي آھي . مستقبل ۾، متغير x ڪنهن به طريقي سان y کي متاثر نٿو ڪري . جاوا x (3) جي قيمت کي نقل ڪري ٿو ۽ جڳهن کي نقل ڪري ٿو y ۾ . هي قدر جي لحاظ کان هڪ پيٽرولر گذري رهيو آهي. توهان هڪ متغير کي ٻئي ڏانهن نه لکو. قيمت نقل ڪئي وئي آهي ۽ هڪ نئين متغير ڏانهن لڳايو ويو آهي. اظهار y = x؛ مطلب نه آهي "لکيو x ڏانهن y ". ان جو مطلب آهي "قيمت کي نقل ڪريو x اندر ۽ ان ڪاپي کي y لکو ." جيڪڏهن بعد ۾ آئون y ​​تبديل ڪريان ٿو :
у = 34;
ڇا اهو اثر x تي اثر ڪندو ؟ بلڪل نه. x جي اڃا به قيمت 3 آهي. جيڪڏهن آئون تبديل ڪريان x بعد ۾ :
х = 90;
اهو ڪيئن متاثر ڪندو يو ؟ بالڪل نه. اهي ڪنهن به طريقي سان لاڳاپيل نه آهن تفويض ٿيڻ کان پوء (قيمت کي نقل ڪندي). حوالن جي قسمن بابت ڇا؟ اهي ڪيئن ڪم ڪندا؟ ايترو ڏکيو نه آهي، حقيقت ۾ اصول ساڳيو آهي. لنڪس ساڳيو ڪم ڪندا آهن - توهان لنڪ جي ڪاپي حاصل ڪندا آهيو. پوء جيڪڏھن مان چوان ٿو:
Cat A = new Cat ();
Cat B = A;
لنڪ A نقل ڪيو ويو آهي لنڪ B ڏانهن. اهو اعتراض تي لاڳو نٿو ٿئي - توهان وٽ اڃا تائين صرف هڪ اعتراض آهي. پر هاڻي توهان وٽ ٻه مختلف حوالا آهن جيڪي ڪنٽرول ڪن ٿا ساڳئي Cat اعتراض . ھاڻي اچو ته ڏسو پيراميٽرن کي طريقن ڏانھن منتقل ڪرڻ. جاوا قدر جي لحاظ کان پيراگراف پاس ڪري ٿو. هميشه. هن جو مطلب آهي "قيمت نقل ڪريو ۽ نقل پاس ڪريو." ابتدائي قسمن لاء اهو آسان آهي:
int х = 5;
doStuff (х); / / Передать копию х (meaning 5) в метод doStuff
doStuff جو طريقو هن طرح نظر اچي ٿو:
void doStuff (int у) {

   / / Действия с 'y'
}
x جي قيمت جي هڪ ڪاپي ، يعني 5، doStuff() طريقي سان گذري وئي آهي . doStuff() طريقي جو پنهنجو متغير آهي y . y متغير ھڪڙو نئون، مختلف متغير آھي. انهي جي ڪاپي سان گڏ جيڪو ان کي پاس ڪرڻ وقت x ۾ هو طريقي سان. هاڻي کان وٺي، y ۽ x جو هڪ ٻئي تي ڪو به اثر نه آهي. جڏهن توهان y تبديل ڪندا آهيو، توهان x کي متاثر نه ڪندا آهيو .
void doStuff (int у) {

   у = 27; / / Это не влияет на 'х'
}
۽ ان جي برعڪس - جيڪڏھن توھان تبديل ڪيو x ، توھان تبديل نه ڪندا y . صرف شيء x هن معاملي ۾ ڪيو ويو ان جي قيمت کي نقل ڪيو ۽ ان کي منتقل ڪيو doStuff() طريقو . حوالن سان "قدر سان گذري" ڪيئن ڪم ڪندو آهي؟ تمام گھڻا ماڻھو چون ٿا، "جاوا قدر ۽ شين جي حوالي سان ابتدائي قسمن کي پاس ڪري ٿو." اهو نه آهي ته اهي ڇا چوندا آهن. جاوا قدر جي لحاظ کان هر شيء کي گذري ٿو. primitives سان، توهان حاصل ڪريو مواد جي هڪ ڪاپي. لنڪن سان توهان مواد جي ڪاپي پڻ حاصل ڪندا. پر لنڪ جو مواد ڇا آهي؟ ريموٽ ڪنٽرول. سهولتن جي انتظام / رسائي جي سهولت. جڏهن توهان هڪ طريقي سان هڪ اعتراض جو حوالو پاس ڪيو ٿا، توهان حوالن جي ڪاپي گذري رهيا آهيو. ريموٽ ڪنٽرول ڪلون. اعتراض اڃا تائين ڍير ۾ بيٺو آهي جتي اهو ٺاهيو ويو هو، ڪنهن کي ريموٽ ڪنٽرول استعمال ڪرڻ جي انتظار ۾. سهولت کي پرواه ناهي ته ڪيترا ريموٽ ان کي ڪنٽرول ڪرڻ لاء "پروگرام" آهن. صرف اهي ماڻهو جيڪي هن جي باري ۾ خيال رکندا آهن گندي ڪليڪٽر ۽ توهان، پروگرامر. پوءِ جڏهن چئو ته:
Cat A = new Cat ();
doStuff (А);

void doStuff (Cat B) {

   / / Использование B
}
صرف هڪ ٻلي اعتراض آهي . پر ھاڻي ٻه ريموٽ ڪنٽرول (لنڪس) ساڳي Cat اعتراض تائين رسائي ڪري سگھن ٿا . تنهن ڪري هاڻي جيڪو به B Cat اعتراض سان ڪندو اهو Cat تي اثر ڪندو A جي طرف اشارو ڪيو ويو ، پر اهو A جي مواد کي متاثر نه ڪندو ! توهان نئين لنڪ B استعمال ڪندي Cat تبديل ڪري سگهو ٿا (سڌي طرح A کان نقل ٿيل )، پر توهان A کي تبديل نٿا ڪري سگهو. ان جو مطلب ڇا آهي؟ توھان ان اعتراض کي تبديل ڪري سگھو ٿا جيڪو A جو حوالو ڏئي ٿو ، پر توھان A جو حوالو تبديل نه ٿا ڪري سگھو - ان کي ٻي شئي ڏانھن ريڊائريڪيٽ ڪريو يا null . تنهن ڪري جيڪڏهن توهان B جو حوالو تبديل ڪيو (حقيقي Cat اعتراض نه آهي جيڪو B حوالو ڏئي ٿو ، پر خود حوالن جي قيمت) توهان A جي قيمت کي تبديل نه ڪندا . ۽ ان جي برعڪس. سو:
Cat A = new Cat ();
doStuff (А);

void doStuff (Cat B) {

   B = new Cat (); / / Не повлияет на ссылку A
}
ان جو سادو مطلب اهو آهي ته B هڪ ٻئي اعتراض ڏانهن اشارو ڪري ٿو. A اڃا تائين خوش آهي. تنهن ڪري مون کان پوءِ ورجايو: جاوا هر شيءِ کي قدر سان گذري ٿو. (ٺيڪ آهي، هڪ دفعو ٻيهر... احساس سان.) جاوا هر شيءِ کي قدر جي ذريعي گذري ٿو. ابتدائي قسمن لاءِ توھان پاس ڪريو موجوده قدر جي ڪاپي، اعتراض جي حوالن لاءِ توھان پاس ڪندا آھيو ريفرنس جي ڪاپي (ريموٽ ڪنٽرول). توهان ڪڏهن به اعتراض پاس نه ڪيو. سڀئي شيون ڍير تي محفوظ ٿيل آهن. هميشه. هاڻي ڪافي جو هڪ وڏو پيالو ٺاهيو ۽ ڪجهه ڪوڊ لکو! اصل مضمون.
تبصرا
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION