In Java, tutte le definizioni di funzione devono essere all’interno di classi. Chiamiamo anche metodi di funzioni. Diamo un’occhiata ad un esempio metodo
public class Main { public static void foo() { // Do something here }}
foo
è un metodo che abbiamo definito nella classe Main. Nota alcune cose su foo
.
static
significa che questo metodo appartiene alla classe Main e non a una specifica istanza di Main. Il che significa che possiamo chiamare il metodo da una classe diversa come quellaMain.foo()
.,-
void
significa che questo metodo non restituisce un valore. I metodi possono restituire un singolo valore in Java e deve essere definito nella dichiarazione del metodo. Tuttavia, è possibile utilizzarereturn
da solo per uscire dal metodo. - Questo metodo non ottiene argomenti, ma ovviamente i metodi Java possono ottenere argomenti come vedremo più avanti.,
Argomenti
Mi piace sempre dire che gli argomenti ai metodi Java sono passati per valore, anche se alcuni potrebbero non essere d’accordo con la mia scelta di parole, lo trovo il modo migliore per spiegare e capire come funziona esattamente.
Per valore si intende che gli argomenti vengono copiati quando viene eseguito il metodo. Diamo un’occhiata a un esempio.,
public void bar(int num1, int num2) { ...}
Ecco un altro punto del codice, dove è chiamato
int a = 3;int b = 5;bar(a, b);
Si può immaginare nella tua testa che quando bar(a, b)
viene eseguito, come all’inizio del bar
le seguenti due righe scritto:
int num1 = a;int num2 = b;
E solo allora il resto del metodo viene eseguito.
Ciò significa che a
il valore viene copiato in num1
e b
il valore viene copiato in num2
., La modifica dei valori dinum1
enum2
non influirà sua
eb
.
Se gli argomenti erano oggetti, le regole rimangono le stesse, ma agisce in modo leggermente diverso. Ecco un esempio:
public void bar2(Student s1, Student s2) { ...}
Ed ecco come usarlo
Student joe = new Student("joe");Student jack = new Student("jack");bar2(joe, jack);
anche in questo caso possiamo immaginare le stesse due righe all’inizio del bar2
Student s1 = joe;Student s2 = jack;
Ma quando ci assegnare oggetti, è un po ‘ diverso rispetto all’assegnazione di primitive., s1
ejoe
sono due diversi riferimenti allo stesso oggetto. s1 == joe
è vero. Ciò significa che i metodi in esecuzione su s1
cambieranno l’oggettojoe
. Ma se cambieremo il valore di s1
come riferimento, non influirà sul riferimento joe
.
Metodi non statici
I metodi non statici in Java vengono utilizzati più dei metodi statici. Questi metodi possono essere eseguiti solo su oggetti e non sull’intera classe.,
I metodi non statici possono accedere e modificare il campo dell’oggetto.
Chiamare i metodi richiederà un oggetto di tipoStudent
.