Variabili e costanti in Java memorizzano valori, mentre i metodi contengono un insieme di operatori che eseguono determinate azioni. Cioè, i metodi in Java determinano il comportamento degli oggetti ed eseguono azioni su alcune variabili. Possono eseguire azioni e produrre un determinato risultato.
Cosa sono i metodi in Java?
I metodi definiscono il comportamento degli oggetti e sono una sequenza di comandi che consente di eseguire alcune operazioni nel programma. In altri linguaggi di programmazione, i metodi vengono spesso definiti "funzioni", ed è giusto che sia così. In effetti, un metodo è una funzione in senso matematico. Di solito viene fornito qualcosa all'input del metodo (alcune variabili), queste variabili vengono elaborate da una sequenza di comandi e quindi il metodo produce un risultato. È probabile che tu abbia già incontrato metodi, almeno con public static void main(String[] args) . Questo metodo solitamente avvia l'esecuzione di un programma Java.Come dichiarare i metodi in Java?
Tutti i metodi in Java vengono creati all'interno delle classi. Sono dichiarati come segue:
accessSpecifier ReturnType name (parameter list) {
//method body
}
Per esempio:
public int addTwoNumbers (int a, int b){
//method body
return…
}
Dove public è uno specificatore di accesso, int è un tipo di variabile restituita dal metodo, addTwoNumbers è il nome del metodo, a e b sono i parametri del metodo. Diamo un'occhiata un po' più in dettaglio. Lo specificatore di accesso viene utilizzato per definire il tipo di accesso del metodo. possono essere i seguenti:
-
public : l'accesso al metodo è disponibile da qualsiasi classe.
-
privato : l'accesso è disponibile all'interno della classe in cui è stato definito.
-
protetto : l'accesso è disponibile solo all'interno del pacchetto o in altre sottoclassi in un altro pacchetto.
-
default : l'accesso è disponibile dal pacchetto in cui è dichiarato. In questo caso la parola "default" non viene scritta.
public void printSomething (String myString) {}
Il nome del metodo è un nome univoco del metodo. Spiegheremo alcune regole di denominazione Java un po' più avanti in questo articolo. Nei metodi precedenti i nomi sono addTwoNumbers e printSomething . L'elenco dei parametri è l'elenco degli argomenti (tipo di dati e nome della variabile) accettati dal metodo. Nel primo esempio sopra, "int a, int b" sono parametri, nel secondo String myString è un argomento. Puoi anche lasciare vuoto questo campo se non desideri utilizzare alcun parametro nel metodo.
Esempio di parametri del metodo
public void printSomething (String myParameter1, int myParameter2) {}
Ecco due variabili, myParameter1 e myParameter2 . Sono parametri del metodo. è l'insieme di istruzioni racchiuse tra parentesi graffe che il metodo eseguirà. Se il tipo restituito del metodo non è void, la parola chiave return deve essere presente nel corpo del metodo. return è seguito dall'argomento restituito da questo metodo. Quindi, per creare un metodo, è necessario specificarne il nome insieme tra parentesi, e tra parentesi, se necessario, le variabili su cui opererà il metodo. Prima del nome del metodo c'è uno specificatore di accesso e un tipo di variabile restituita dal metodo, oppure void se il metodo non restituisce nulla. Tra parentesi graffe scriviamo il metodo vero e proprio, una sequenza di istruzioni che molto spesso funziona con gli argomenti del metodo. Ecco un esempio di un metodo che trova il numero più grande in un array e lo restituisce.
public int findBiggest(int[] numbers) {
int max;
max = numbers[0];
for (int i = 1; i < numbers.length; i++) {
if (max < numbers[i]) {
max = numbers[i];
}
}
return max;
}
Come nominare un metodo?
Non esistono regole rigide per la denominazione dei metodi, ma esistono linee guida che dovresti seguire se prevedi di sviluppare professionalmente in Java. I nomi dei metodi sono molto spesso verbi, scritti in maiuscolo, iniziando con una lettera minuscola ma usando una lettera maiuscola per ogni parola successiva (camelCase). Ecco alcuni esempi:
int addTwoNumbers (int a, int b)
void run()
Come chiamare un metodo
Per chiamare un metodo è sufficiente scriverne il nome e impostare le variabili corrispondenti se presenti nella dichiarazione. Chiamiamo il metodo findBiggest nel metodo principale :
public static void main(String[] args) {
int[] array = new int[] {5, 7, -2, 6, 7, 1};
int max = findBiggest(array);
System.out.println("the biggest number in array is: " + max);
}
L'output di questo programma è:
il numero più grande nell'array è: 7
Diversi tipi di metodi in Java
In Java tutto è costituito da oggetti e il comportamento degli oggetti è definito da metodi. Convenzionalmente, possiamo dire che Java ha metodi predefiniti e definiti dall'utente. I metodi predefiniti sono metodi inclusi nelle classi che fanno parte del linguaggio Java stesso.Metodi predefiniti
I metodi di libreria predefiniti o standard sono integrati in Java. Naturalmente ogni programmatore può utilizzarli o addirittura modificarli localmente per i propri programmi. La libreria di classi Java si trova in un file di archivio Java (ad esempio, *jar) con una Java virtual machine (JVM) e un ambiente runtime Java. Questi possono essere ad esempio metodi della classe Math come min() , max() o abs() . O metodi di manipolazione delle stringhe come concat() . Creiamo una classe con un metodo main e chiamiamo un paio di metodi della libreria standard.
import static java.lang.Math.max;
public class Test {
public static void main(String[] args) {
int a = 5;
int b = 7;
int max = max(a,b);
System.out.println(max);
String str1 = "I am ";
String str2 = "here ";
String str3 = str1.concat(str2);
System.out.println(str3);
}
}
Si noti che per poter utilizzare i metodi della classe Math è necessario importarla all'inizio del programma. Se ciò non viene fatto, puoi scrivere il nome della classe prima del nome del metodo separato da un punto:
int max = Math.max(a,b);
Metodi definiti dall'utente
Questi metodi sono creati dai programmatori per i requisiti dei loro progetti. In realtà, abbiamo già creato il metodo findBiggest() definito dall'utente sopra. Per consolidare, creiamo un altro metodo che non restituisce nulla e non ha parametri ma risponde al nome inserito e dice ciao (ovvero, output sulla console).
import java.util.Scanner;
public class Test {
public void repeater() {
Scanner scanner = new Scanner(System.in);
System.out.println("WHat should I repeat after you?...");
String s = scanner.nextLine();
System.out.println(s);
}
}
Creazione di metodi statici in Java
Generalmente, i metodi in Java sono metodi di oggetti. Per chiamare un metodo, è necessario creare un'istanza della classe in cui è definito questo metodo. Esistono però anche metodi statici. Differiscono da quelli normali in quanto sono collegati a una classe, non a un oggetto. Una proprietà importante di un metodo statico è che può accedere solo a variabili/metodi statici. Sono definiti utilizzando la parola chiave static . Pertanto, nella classe Math , tutti i metodi per lavorare con le variabili sono statici. Possiamo creare qualcosa di simile alla classe Math e raccogliere al suo interno diversi metodi statici che possono essere utilizzati senza creare un'istanza della classe che la contiene. Chiamiamolo Numeri .
import java.util.ArrayList;
import java.util.List;
import java.util.stream.IntStream;
public class Numbers {
public static int findMax(int left, int right) {
return (left < right) ? right : left;
}
public static boolean isNegative(int number) {
return number < 0;
}
public static long power(long number, int deg) {
if (deg == 0) {
number = 1;
return number;
} else {
number = power(number, deg - 1) * number;
return number;
}
}
public static long abs(long number) {
return number > 0 ? number : -number;
}
public static void main(String[] args) {
int a = 5;
int b = 7;
long c = -7;
long abs = abs(c);
System.out.println(abs);
System.out.println(findMax(a,b));
}
}
L'output del programma è qui:
77
Innanzitutto viene chiamato un metodo che cerca il valore assoluto del numero, quindi un metodo che cerca il maggiore dei due numeri. Non è necessario creare un'istanza della classe Numbers per chiamare questi metodi perché entrambi i metodi sono definiti come statici.
Applicazione di metodi di istanza nel codice Java
È possibile chiamare metodi di istanza o metodi regolari sull'istanza della classe in cui è definito il metodo.
public class Cat implements Voice{
String name;
String breed;
int year;
public void talk() {
System.out.println("meow meow");
}
}
Per chiamare il metodo talk() , devi creare un'istanza della classe Cat :
public class Demo {
public static void main(String[] args) {
Cat cat = new Cat ();
cat.talk();
}
}
L'output del programma è qui:
miao miao
Metodi astratti in Java
I metodi astratti in Java sono metodi senza implementazione. Cioè, non contengono codice quando viene dichiarato. Possono essere dichiarati solo in classi astratte e implementati nei loro discendenti non astratti. Creiamo una classe astratta con un metodo astratto myMethodAdd() .
abstract class DemoAbs {
abstract void myMethodAdd();
}
Ora creiamo una classe Child di questa classe astratta, DemoAbs . Qui dovremmo necessariamente implementare il metodo myMethodAdd() .
public class myClass extends DemoAbs {
void myMethodAdd() {
System.out.println("hello");
}
public static void main(String[] args) {
DemoAbs demoAbs = new myClass();
demoAbs.myMethodAdd();
}
}
GO TO FULL VERSION