Articles

funcții

Posted by admin

în Java, toate definițiile de funcții trebuie să fie în interiorul clase. De asemenea, numim metode de funcții. Să ne uităm la un exemplu de metodă

public class Main { public static void foo() { // Do something here }}

foo este o metoda definită în clasa Principală. Observați câteva lucruri despre foo.

  • static înseamnă că această metodă aparține clasei Main și nu unei instanțe specifice a Main. Ceea ce înseamnă că putem apela metoda dintr-o altă clasă de genul Main.foo().,
  • void înseamnă că această metodă nu returnează o valoare. Metodele pot returna o singură valoare în Java și trebuie definită în declarația metodei. Cu toate acestea, puteți utiliza return de la sine pentru a ieși din metodă.
  • această metodă nu primește argumente, dar desigur metodele Java pot obține argumente așa cum vom vedea mai departe.,

argumente

întotdeauna îmi place să spun că argumentele pentru metodele Java sunt transmise prin valoare, deși unii ar putea să nu fie de acord cu alegerea mea de cuvinte, mi se pare cel mai bun mod de a explica și de a înțelege cum funcționează exact.

prin valoare înseamnă că argumentele sunt copiate atunci când metoda rulează. Să ne uităm la un exemplu.,

public void bar(int num1, int num2) { ...}

Aici este un alt loc din cod, în cazul în care bara este numit

int a = 3;int b = 5;bar(a, b);

Vă puteți imagina în cap că atunci când bar(a, b) este rulat, e ca și cum la începutul bar următoarele două linii sunt scrise:

int num1 = a;int num2 = b;

Și doar apoi restul de metodă este de a rula.

Acest lucru înseamnă că a valoarea fi copiate num1 și b valoarea fi copiate num2., Schimbarea valorilor num1 și num2 nu va afecta a și b.dacă argumentele erau obiecte, regulile rămân aceleași, dar acționează puțin diferit. Aici este un exemplu:

public void bar2(Student s1, Student s2) { ...}

Și aici este modul în care o folosim

Student joe = new Student("joe");Student jack = new Student("jack");bar2(joe, jack);

din Nou, ne putem imagine aceleași două linii de la începutul bar2

Student s1 = joe;Student s2 = jack;

Dar când ne-am atribui obiecte, e un pic diferit decât atribuirea primitive., s1 și joe sunt două referințe diferite pentru același obiect. s1 == joe este adevărat. Aceasta înseamnă că metodele de rulare pe s1vor schimba obiectul joe. Dar dacă vom schimba valoarea s1ca referință, aceasta nu va afecta referința joe.

metode non-statice

metode non-statice în Java sunt utilizate mai mult decât metode statice. Aceste metode pot fi rulate numai pe obiecte și nu pe întreaga clasă.,

metodele non-statice pot accesa și modifica câmpul obiectului.apelarea metodelor va necesita un obiect de tip Student.

rezumat

Leave A Comment