- - Izpratne par Java pēc zvana un vērtības pēc zvana

Izpratne par Java pēc zvana un vērtības pēc zvana

Ievads

Tā kā tagad jūs esat iemācījušies par klases objektu izveidi Java, mums ir jāpārbauda, ​​kā mēs varam nodot argumentus, veidojot metodes.

Iekšā zvana pēc vērtības pieejas gadījumā argumenta vērtība tiek kopēta uz pakārtotās programmas formālo parametru. Izmaiņas apakšprogrammas parametrā neietekmē argumentu.

Iekšā zvana-atsauce pieejas gadījumā atsauce uz argumentu tiek nodotaapakšprogrammas formālais parametrs, kas atrodas apakšprogrammā, atsauci izmanto, lai piekļūtu uzaicinājumā norādītajam faktiskajam argumentam. Tas nozīmē, ka parametrā veiktās izmaiņas ietekmēs argumentu, ko izmanto, lai izsauktu apakšprogrammu.

Ar šiem piemēriem mēs izskaidrosim abus veidus, kā novirzīt argumentu uz metodi Java.

Programma pēc zvana pēc vērtības

class Employee{
double salary;
int age;
void incrementSalAndAge(double sal, int a){
salary = sal+10000;
age = a+7;
System.out.println("Salary on call: "+salary);
System.out.println("Salary on call: "+age);
}
}
class CallByValueDemo{
public static void main(String args[]){
Employee employee = new Employee();
double salary = 34521.86;
int age = 23;
System.out.println("Salary before call: "+salary);
System.out.println("Salary before call: "+age);
employee.incrementSalAndAge(salary,age);
System.out.println("Salary after call: "+salary);
System.out.println("Salary after call: "+age);
}
}

Izeja

call_by_value

Programma zvana saņemšanai pēc atsauces

class Employee{
double salary;
int age;
void incrementSalAndAge(Employee emp){
salary = emp.salary+10000;
age = emp.age+7;
System.out.println("Salary on call: "+emp.salary);
System.out.println("Salary on call: "+emp.age);
}
}
class CallByRefDemo{
public static void main(String args[]){
Employee employee = new Employee();
employee.salary = 34512.37;
employee.age = 23;
System.out.println("Salary before call: "+employee.salary);
System.out.println("Salary before call: "+employee.age);
employee.incrementSalAndAge(employee);
System.out.println("Salary after call: "+employee.salary);
System.out.println("Salary after call: "+employee.age);
}
}

Izeja

call_by_reference

Java koda un izvades skaidrojums

Ja redzat pirmo programmu, jūs atradīsit, ka esam uzrakstījuši metodi incrmentSalAndAge (), kur mēs nosūtām argumentu vērtības uz tās pašas metodes formālajiem parametriem. Pirms zvana incrmentSalAndAge(), mēs esam izdrukājuši to argumentu vērtības, kuri tiks faktiski nodoti. Tad mēs esam atjauninājuši argumentu vērtības incrmentSalAndAge() metode un izdrukāta.

Jūs varat redzēt, ka tas izdrukās atjauninātoformālo parametru vērtības. Pēc atkāpšanās no apakšprogrammas šīs atjauninātās vērtības vairs nepastāvēs. Un tas izdrukās to vērtību vērtības, kuras tika saglabātas argumentos pirms zvana incrmentSalAndAge(). Noslēgumā varam teikt, ka izmaiņas apakšprogrammas parametrā neietekmē argumentu.

Tagad otrajā programmā jūs redzēsit, nevis nododot vērtības, kas glabājas argumentos, kuriem esam nodevuši objekta atsauci incrmentSalAndAge() metode. Tādējādi, nododot šo atsauci uz metodi, parametrs, kas to saņem, atsaucas uz to pašu objektu, uz kuru norāda arguments. No izejas jūs to varat viegli izveidot. Pirms zvana incrmentSalAndAge() mums ir izdrukātas argumentu vērtības. Ir izdrukātas vērtības, ar kurām tiek inicializēti argumenti.

Metodes pieaicināšanas laikā incrmentSalAndAge(), ir paredzēts, ka metode atjaunina vērtībasformālajiem parametriem un izdrukā atjaunināto vērtību. Pēc atgriešanās no sarunas tā ir izdrukājusi atjauninātās argumentu vērtības. Tāpēc parametrā veiktās izmaiņas ietekmēs argumentu, kuru izmanto, lai izsauktu apakšprogrammu, jo gan arguments, gan formālais parametrs attiecas uz vienu un to pašu objektu.

Atcerieties, ka šie jēdzieni ir ļoti noderīgi, lai tos saprastu Kopēt konstruktorus Java.

Šeit atradīsiet norādes par vairāk noderīgām pamācībām un galīgām Java programmēšanas vadlīnijām.

Komentāri