CodeGym /Java Blog /Random-IT /Metodi Java
John Squirrels
Livello 41
San Francisco

Metodi Java

Pubblicato nel gruppo Random-IT
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.

Return Type definisce il tipo restituito da questo metodo. Nell'esempio precedente, int è il tipo restituito. Se un metodo non restituisce nulla, il tipo restituito è void:

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();
   }
}

Allocazione di memoria per le chiamate ai metodi

Si tratta di un argomento piuttosto complesso che richiede un’analisi più attenta. Qui menzioneremo solo gli aspetti più basilari per una conoscenza superficiale dell'argomento. La memoria JVM è costituita da aree heap e stack. L'heap è un'area di memoria che memorizza oggetti Java. La memoria dello stack è un'area temporanea di memoria che memorizza variabili primitive e riferimenti a oggetti di metodo. La memoria dello stack contiene valori di breve durata che dipendono dal metodo. Questo tipo di memoria si basa sul principio LIFO (Last In First Out). La memoria dello stack crea un nuovo blocco quando chiamiamo un metodo. Contiene valori primitivi locali. Quando terminiamo un metodo, il blocco creato nella memoria dello stack diventa libero.

Conclusione

In questo articolo abbiamo conosciuto le basi della creazione di metodi nel linguaggio Java, nonché quali metodi sono presenti in Java e come lavorare con essi. Abbiamo imparato che i metodi determinano il comportamento delle classi. Senza metodi sarebbe impossibile per gli oggetti interagire tra loro. Per rafforzare ciò che hai imparato, ti suggeriamo di guardare una lezione video dal nostro corso Java
Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION