JavaRush /Java Blog /Random-TK /Java-da parametrleri geçirmek
vincent_vega
Dereje
Gainesville

Java-da parametrleri geçirmek

Toparda çap edildi
Java-da üýtgeýji, gymmaty bolan konteýnerdir. Onda üýtgeýjini "geçirmek" nämäni aňladýar? Ilkinji we salgylanma maglumat görnüşleriniň arasynda näme tapawut bar?
Java-da parametrlerden geçmek - 1
Soňrak bararys. Ilki bilen ýönekeý ýumuşdan başlalyň. Bu kod näme edýär:
int х = 3;
int у = х;
1-nji setirde int görnüşiniň üýtgeýän x döredilýär we 3-nji baha berilýär. 2-nji setirde int görnüşiniň üýtgeýän y döredilýär we üýtgeýän x bahasy kesgitlenýär . Geljekde x üýtgeýjisi y-a hiç hili täsir etmeýär . Java x (3) bahasyny we y- a göçürýän ýerleri göçürýär . Bu parametr boýunça bahadan geçýär. Bir üýtgeýjini beýlekisine ýazmaýarsyňyz. Bahasy göçürilýär we täze üýtgeýjä bellenýär. Y = x aňlatma ; " X -dan y ýaz" diýmek däl . Bu " x içindäki bahany göçüriň we şol göçürmäni y- a ýazyň " diýmekdir. Soňrak bolsa y üýtgederin :
у = 34;
Bu x-a täsir edermi ? Elbetde ýok. x henizem 3 bahasyna eýe. Eger x soň üýtgeden bolsam :
х = 90;
Bu y-a nähili täsir eder ? Wayok. Bu ýumuş ýerine ýetirilenden soň hiç hili baglanyşyk ýok (Bahasyny göçürmek). Salgy görnüşleri barada näme aýdyp bilersiňiz? Olar nähili işleýärler? Kyn däl, aslynda düzgün birmeňzeş. Salgylar hem edil şonuň ýaly edýär - baglanyşygyň göçürmesini alarsyňyz. Şonuň üçin aýtsam:
Cat A = new Cat ();
Cat B = A;
A baglanyşygy B baglanyşygy üçin göçürildi Bu obýekte degişli däl - henizem diňe bir obýekt bar. Nowöne indi şol bir Pişik obýektini dolandyrýan iki dürli salgylanma bar . Indi parametrlere usullara geçmäge seredeliň. Java parametrleri baha boýunça geçirýär. Elmydama. Bu "bahany göçüriň we göçürmäni geçiriň" diýmekdir. Ilkinji görnüşler üçin aňsat:
int х = 5;
doStuff (х); / / Передать копию х (meaning 5) в метод doStuff
DoStuff usuly şuňa meňzeýär:
void doStuff (int у) {

   / / Действия с 'y'
}
X bahasynyň göçürmesi , ýagny 5, doStuff () usulyna geçirilýär . DoStuff () usulynyň y atly üýtgeýjisi bar . Y üýtgeýjisi täze, üýtgeşik üýtgeýjidir. Usula geçen wagty x -daky zatlaryň göçürmesi bilen . Mundan beýläk y we x biri-birine täsir etmeýär. Y üýtgedeniňizde , x-a täsir etmersiňiz .
void doStuff (int у) {

   у = 27; / / Это не влияет на 'х'
}
Tersine - x çalyşsaňyz, y üýtgetmersiňiz . Bu ýagdaýda x eden ýeke-täk zady, onuň bahasyny göçürip, doStuff () usulyna geçirmekdi . "Gymmatlykdan geçmek" salgylanmalar bilen nähili işleýär? Örän köp adam: "Java başlangyç görnüşleri baha we obýektler boýunça geçýär" diýýär. Bu olaryň aýdýanlary däl. Java hemme zady gymmaty boýunça geçirýär. Ilkinjiler bilen mazmunyň bir nusgasyny alarsyňyz. Salgylar bilen mazmunyň bir nusgasyny hem alarsyňyz. Emma baglanyşygyň mazmuny näme? Uzakdan dolandyryş. Desgany dolandyrmak / oňa girmek üçin desgalar. Bir obýekte salgylanmany bir usula geçireniňizde, salgylanmanyň bir nusgasyny geçirýärsiňiz. Uzakdan dolandyryş klony. Obýekt henizem döredilen üýşmeleňde, uzakdan dolandyryşy ulanmagyna garaşýar. Desga gözegçilik etmek üçin näçe uzakdan "programmirlendi" gyzyklandyranok. Bu barada alada edýän adamlar diňe zibil ýygnaýjy we siz, programmist. Şonuň üçin:
Cat A = new Cat ();
doStuff (А);

void doStuff (Cat B) {

   / / Использование B
}
Diňe bir pişik obýekti bar . Nowöne indi iki sany uzakdan dolandyrmak (baglanyşyk) şol bir Pişik obýektine girip biler . Şonuň üçin indi B pişigiň obýektine näme etse, A görkezilen pişige täsir eder , ýöne A mazmunyna täsir etmez ! Täze baglanyşyk B ulanyp, pişigi üýtgedip bilersiňiz (göni A- dan göçürilýär ), ýöne A-ny üýtgedip bilmersiňiz. Jähennemiň manysy näme? A- ny görkezýän obýekti üýtgedip bilersiňiz , ýöne A salgylanmasyny üýtgedip bilmersiňiz - başga bir obýekte ýa-da null gönükdirip bilersiňiz . Şeýlelik bilen, B salgylanmasyny üýtgetseňiz ( B salgylanýan hakyky pişik obýekti däl -de, salgylanmanyň özi) A- nyň bahasyny üýtgetmersiňiz . Tersine. Diýmek:
Cat A = new Cat ();
doStuff (А);

void doStuff (Cat B) {

   B = new Cat (); / / Не повлияет на ссылку A
}
Diňe B başga bir jisimi görkezýär diýmekdir . A henizem bagtly. Şonuň üçin menden soň gaýtala: Java hemme zady gymmaty boýunça geçirýär. (Bolýar, ýene bir gezek ... duýgy bilen.) Java hemme zady gymmaty boýunça geçirýär. Ilkinji görnüşler üçin häzirki bahanyň bir nusgasyny, obýekt salgylanmalary üçin salgylanmanyň göçürmesini (uzakdan dolandyrmak) geçirýärsiňiz. Hiç haçan obýektden geçmeýärsiň. Objectshli zatlar üýşmekde saklanýar. Elmydama. Indi gaty bir käse kofe demläň we kod ýazyň! Asyl makala.
Teswirler
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION