CodeGym /Blog Java /Random-FR /Méthodes Java
John Squirrels
Niveau 41
San Francisco

Méthodes Java

Publié dans le groupe Random-FR
Les variables et constantes dans Java stockent des valeurs, tandis que les méthodes contiennent un ensemble d'opérateurs qui effectuent certaines actions. Autrement dit, les méthodes Java déterminent le comportement des objets et effectuent des actions sur certaines variables. Ils peuvent effectuer des actions et produire un certain résultat.

Que sont les méthodes en Java ?

Les méthodes définissent le comportement des objets et constituent une séquence de commandes qui vous permet d'effectuer certaines opérations dans le programme. Dans d'autres langages de programmation, les méthodes sont souvent appelées « fonctions », et à juste titre. En fait, une méthode est une fonction au sens mathématique. Habituellement, quelque chose est fourni à l'entrée de la méthode (certaines variables), ces variables sont traitées par une séquence de commandes, puis la méthode produit un résultat. Il y a de fortes chances que vous ayez déjà rencontré des méthodes, au moins avec public static void main(String[] args) . Cette méthode démarre généralement l'exécution d'un programme Java.

Comment déclarer des méthodes en Java ?

Toutes les méthodes en Java sont créées dans des classes. Ils sont déclarés comme suit :
accessSpecifier ReturnType name (parameter list) {
//method body
}
Par exemple:
public int addTwoNumbers (int a, int b){

//method body
return}
public est un spécificateur d'accès, int est un type de variable renvoyée par la méthode, addTwoNumbers est le nom de la méthode, a et b sont les paramètres de la méthode. Jetons un coup d'oeil un peu plus en détail. Le spécificateur d’accès est utilisé pour définir le type d’accès de la méthode. ils peuvent être les suivants :
  • public : l'accès à la méthode est disponible depuis n'importe quelle classe.

  • private : l'accès est disponible au sein de la classe où il a été défini.

  • protected : l'accès est disponible uniquement à l'intérieur du package ou d'autres sous-classes d'un autre package.

  • par défaut : l'accès est disponible depuis le package où il est déclaré. Dans ce cas, le mot « par défaut » n'est pas écrit.

Le type de retour définit le type renvoyé par cette méthode. Dans l'exemple ci-dessus, int est le type de retour. Si une méthode ne renvoie rien, le type de retour est void :
public void printSomething (String myString) {}
Le nom de la méthode est un nom unique de votre méthode. Nous allons expliquer quelques règles de nommage Java un peu plus loin dans cet article. Dans les méthodes ci-dessus, les noms sont addTwoNumbers et printSomething . La liste des paramètres est la liste des arguments (type de données et nom de la variable) pris par la méthode. Dans le premier exemple ci-dessus, "int a, int b" sont des paramètres, dans le second, String myString est un argument. Vous pouvez également laisser ce champ vide si vous ne souhaitez utiliser aucun paramètre dans la méthode.

Exemple de paramètres de méthode

public void printSomething (String myParameter1, int myParameter2) {}
Voici deux variables, myParameter1 et myParameter2 . Ce sont des paramètres de méthode. est l'ensemble d'instructions entourées d'accolades que la méthode exécutera. Si le type de retour de la méthode n'est pas vide, le mot-clé return doit être présent dans le corps de la méthode. return est suivi de l'argument renvoyé par cette méthode. Ainsi, pour créer une méthode, vous devez spécifier son nom accompagné de parenthèses, et entre parenthèses, si nécessaire, les variables sur lesquelles la méthode opérera. Avant le nom de la méthode se trouve un spécificateur d'accès et un type de variable que la méthode renvoie, ou void si la méthode ne renvoie rien. Entre accolades, nous écrivons la méthode elle-même, une séquence d'instructions qui fonctionne le plus souvent avec les arguments de la méthode. Voici un exemple de méthode qui trouve le plus grand nombre dans un tableau et le renvoie.
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;
}

Comment nommer une méthode ?

Il n'y a pas de règles strictes pour nommer les méthodes, mais il existe des lignes directrices que vous devez suivre si vous envisagez de développer professionnellement en Java. Les noms de méthodes sont très souvent des verbes, écrits en casse mixte, commençant par une lettre minuscule mais utilisant une lettre majuscule pour chaque mot suivant (camelCase). Voici quelques exemples:
int addTwoNumbers (int a, int b)
void run()

Comment appeler une méthode

Pour appeler une méthode, il suffit d'écrire son nom et de définir les variables correspondantes si elles étaient à la déclaration. Appelons la méthode findBiggest dans la méthode main :
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);
  }
Le résultat de ce programme est :
le plus grand nombre du tableau est : 7

Différents types de méthodes en Java

En Java, tout est constitué d'objets et le comportement des objets est défini par des méthodes. Classiquement, on peut dire que Java dispose de méthodes prédéfinies et définies par l'utilisateur. Les méthodes prédéfinies sont des méthodes incluses dans des classes faisant partie du langage Java lui-même.

Méthodes prédéfinies

Les méthodes de bibliothèque prédéfinies ou standard sont intégrées à Java. Bien entendu, chaque programmeur peut les utiliser ou même les modifier localement pour ses programmes. La bibliothèque de classes Java se trouve dans un fichier d'archive Java (par exemple, *jar) avec une machine virtuelle Java (JVM) et un environnement d'exécution Java. Il peut s'agir par exemple de méthodes de la classe Math telles que min() , max() ou abs() . Ou des méthodes de manipulation de chaînes comme concat() . Créons une classe avec une méthode principale et appelons quelques méthodes de bibliothèque 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);


   }

}
Notez que pour utiliser les méthodes de la classe Math , celle-ci doit être importée au début du programme. Si cela n'est pas fait, vous pouvez écrire le nom de la classe avant le nom de la méthode séparé par un point :
int max = Math.max(a,b);

Méthodes définies par l'utilisateur

Ces méthodes sont créées par les programmeurs pour les besoins de leurs projets. En fait, nous avons déjà créé ci-dessus la méthode findBiggest() définie par l’utilisateur . Pour consolider, créons une autre méthode qui ne renvoie rien et n'a pas de paramètres mais répond au nom saisi et dit bonjour (c'est-à-dire une sortie vers la 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);
   }
}

Création de méthodes statiques en Java

Généralement, les méthodes en Java sont des méthodes d'objets. Pour appeler une méthode, vous devez créer une instance de la classe dans laquelle cette méthode est définie. Cependant, il existe également des méthodes statiques. Ils diffèrent des classes classiques en ce sens qu'ils sont attachés à une classe et non à un objet. Une propriété importante d’une méthode statique est qu’elle ne peut accéder qu’à des variables/méthodes statiques. Ils sont définis à l'aide du mot-clé static . Ainsi, dans la classe Math , toutes les méthodes permettant de travailler avec des variables sont statiques. Nous pouvons créer quelque chose de similaire à la classe Math et y collecter plusieurs méthodes statiques qui peuvent être utilisées sans créer d'instance de la classe conteneur. Appelons-le des chiffres .
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));

   }

}
Le résultat du programme est ici :
7 7
Tout d’abord, on appelle une méthode qui recherche la valeur absolue du nombre, puis une méthode qui recherche le plus grand des deux nombres. Vous n'avez pas besoin de créer une instance de la classe Numbers pour appeler ces méthodes car les deux méthodes sont définies comme statiques.

Application de méthodes d'instance dans le code Java

Les méthodes d'instance ou les méthodes régulières peuvent être appelées sur l'instance de la classe dans laquelle la méthode est définie.
public class Cat implements Voice{
   String name;
   String breed;
   int year;


   public void talk() {
       System.out.println("meow meow");
   }
}
Pour appeler la méthode talk() , vous devez créer une instance de la classe Cat :
public class Demo {
   public static void main(String[] args) {
       Cat cat = new Cat ();
       cat.talk();

   }
}
Ce résultat du programme est ici :
Miaou miaou

Méthodes abstraites en Java

Les méthodes abstraites en Java sont des méthodes sans implémentation. Autrement dit, ils ne contiennent pas de code lorsqu'il est déclaré. Ils ne peuvent être déclarés que dans des classes abstraites et implémentés dans leurs descendants non abstraits. Créons une classe abstraite avec une méthode abstraite myMethodAdd() .
abstract class DemoAbs {
   abstract void myMethodAdd();
}
Créons maintenant une classe Child de cette classe abstraite, DemoAbs . Ici, nous devons nécessairement implémenter la méthode myMethodAdd() .
public class myClass extends DemoAbs {

   void myMethodAdd() {
       System.out.println("hello");
   }

   public static void main(String[] args) {
       DemoAbs demoAbs = new myClass();
       demoAbs.myMethodAdd();
   }
}

Allocation de mémoire pour les appels de méthode

Il s'agit d'un sujet assez complexe qui nécessite une analyse plus approfondie. Nous ne mentionnerons ici que les éléments les plus élémentaires pour une connaissance superficielle du sujet. La mémoire JVM se compose de zones de tas et de pile. Le tas est une zone de mémoire qui stocke les objets Java. La mémoire de pile est une zone temporaire de mémoire qui stocke les variables primitives et les références aux objets de méthode. La mémoire de pile contient des valeurs éphémères qui dépendent de la méthode. Ce type de mémoire est basé sur le principe Last In First Out (LIFO). La mémoire de pile crée un nouveau bloc lorsque nous appelons une méthode. Il contient des valeurs primitives locales. Lorsque nous terminons une méthode, le bloc créé dans la mémoire de la pile devient libre.

Conclusion

Dans cet article, nous nous sommes familiarisés avec les bases de la création de méthodes en langage Java, ainsi qu'avec les méthodes Java et comment les utiliser. Nous avons appris que les méthodes déterminent le comportement des classes. Sans méthodes, il serait impossible pour les objets d’interagir les uns avec les autres. Pour renforcer ce que vous avez appris, nous vous proposons de regarder une leçon vidéo de notre cours Java
Commentaires
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION