Учебники

Java — Методы

Java-метод — это набор операторов, сгруппированных для выполнения операции. Когда вы звоните System.out. Например, метод println () , система фактически выполняет несколько операторов для отображения сообщения на консоли.

Теперь вы узнаете, как создавать свои собственные методы с возвращаемыми значениями или без них, вызывать метод с параметрами или без параметров и применять абстракцию методов в проекте программы.

Создание метода

Рассмотрим следующий пример для объяснения синтаксиса метода —

Синтаксис

public static int methodName(int a, int b) {
   // body
}

Вот,

  • public static — модификатор

  • int — тип возвращаемого значения

  • methodName — название метода

  • а, б — формальные параметры

  • int a, int b — список параметров

public static — модификатор

int — тип возвращаемого значения

methodName — название метода

а, б — формальные параметры

int a, int b — список параметров

Определение метода состоит из заголовка метода и тела метода. То же самое показано в следующем синтаксисе —

Синтаксис

modifier returnType nameOfMethod (Parameter List) {
   // method body
}

Синтаксис, показанный выше, включает:

  • Модификатор — определяет тип доступа к методу и является необязательным для использования.

  • returnType — Метод может вернуть значение.

  • nameOfMethod — это имя метода. Подпись метода состоит из имени метода и списка параметров.

  • Список параметров — список параметров, это тип, порядок и количество параметров метода. Это необязательно, метод может содержать ноль параметров.

  • тело методатело метода определяет, что метод делает с операторами.

Модификатор — определяет тип доступа к методу и является необязательным для использования.

returnType — Метод может вернуть значение.

nameOfMethod — это имя метода. Подпись метода состоит из имени метода и списка параметров.

Список параметров — список параметров, это тип, порядок и количество параметров метода. Это необязательно, метод может содержать ноль параметров.

тело методатело метода определяет, что метод делает с операторами.

пример

Вот исходный код определенного выше метода с именем min () . Этот метод принимает два параметра num1 и num2 и возвращает максимум между двумя —

/** the snippet returns the minimum between two numbers */

public static int minFunction(int n1, int n2) {
   int min;
   if (n1 > n2)
      min = n2;
   else
      min = n1;

   return min; 
}

Вызов метода

Для использования метода он должен быть вызван. Существует два способа вызова метода, т. Е. Метод возвращает значение или ничего не возвращает (нет возвращаемого значения).

Процесс вызова метода прост. Когда программа вызывает метод, управление программой передается вызываемому методу. Затем этот вызываемый метод возвращает управление вызывающей стороне в двух условиях, когда —

  • оператор возврата выполнен.
  • он достигает метода, заканчивающего закрывающую скобку.

Методы, возвращающие void, рассматриваются как вызов оператора. Давайте рассмотрим пример —

System.out.println("This is tutorialspoint.com!");

Метод, возвращающий значение, можно понять из следующего примера:

int result = sum(6, 9);

Ниже приведен пример, демонстрирующий, как определить метод и как его вызвать.

пример

Live Demo

public class ExampleMinNumber {
   
   public static void main(String[] args) {
      int a = 11;
      int b = 6;
      int c = minFunction(a, b);
      System.out.println("Minimum Value = " + c);
   }

   /** returns the minimum of two numbers */
   public static int minFunction(int n1, int n2) {
      int min;
      if (n1 > n2)
         min = n2;
      else
         min = n1;

      return min; 
   }
}

Это даст следующий результат —

Выход

Minimum value = 6

Пустое ключевое слово

Ключевое слово void позволяет нам создавать методы, которые не возвращают значение. Здесь, в следующем примере мы рассматриваем пустой метод methodRankPoints . Этот метод является пустым методом, который не возвращает никакого значения. Вызов метода void должен быть оператором, т.е. methodRankPoints (255.7); , Это оператор Java, который заканчивается точкой с запятой, как показано в следующем примере.

пример

Live Demo

public class ExampleVoid {

   public static void main(String[] args) {
      methodRankPoints(255.7);
   }

   public static void methodRankPoints(double points) {
      if (points >= 202.5) {
         System.out.println("Rank:A1");
      }else if (points >= 122.4) {
         System.out.println("Rank:A2");
      }else {
         System.out.println("Rank:A3");
      }
   }
}

Это даст следующий результат —

Выход

Rank:A1

Передача параметров по значению

При работе с вызывающим процессом необходимо передавать аргументы. Они должны быть в том же порядке, что и их соответствующие параметры в спецификации метода. Параметры могут быть переданы по значению или по ссылке.

Передача параметров по значению означает вызов метода с параметром. Через это значение аргумента передается параметру.

пример

Следующая программа показывает пример передачи параметра по значению. Значения аргументов остаются неизменными даже после вызова метода.

Live Demo

public class swappingExample {

   public static void main(String[] args) {
      int a = 30;
      int b = 45;
      System.out.println("Before swapping, a = " + a + " and b = " + b);

      // Invoke the swap method
      swapFunction(a, b);
      System.out.println("\n**Now, Before and After swapping values will be same here**:");
      System.out.println("After swapping, a = " + a + " and b is " + b);
   }

   public static void swapFunction(int a, int b) {
      System.out.println("Before swapping(Inside), a = " + a + " b = " + b);
      
      // Swap n1 with n2
      int c = a;
      a = b;
      b = c;
      System.out.println("After swapping(Inside), a = " + a + " b = " + b);
   }
}

Это даст следующий результат —

Выход

Before swapping, a = 30 and b = 45
Before swapping(Inside), a = 30 b = 45
After swapping(Inside), a = 45 b = 30

**Now, Before and After swapping values will be same here**:
After swapping, a = 30 and b is 45

Перегрузка метода

Когда класс имеет два или более методов с одинаковыми именами, но разными параметрами, это называется перегрузкой методов. Это отличается от переопределения. При переопределении метод имеет то же имя, тип, число параметров и т. Д.

Рассмотрим рассмотренный ранее пример для нахождения минимального числа целочисленного типа Если, скажем, мы хотим найти минимальное число типа double. Затем будет введена концепция перегрузки для создания двух или более методов с одинаковым именем, но разными параметрами.

Следующий пример объясняет то же самое —

пример

Live Demo

public class ExampleOverloading {

   public static void main(String[] args) {
      int a = 11;
      int b = 6;
      double c = 7.3;
      double d = 9.4;
      int result1 = minFunction(a, b);
      
      // same function name with different parameters
      double result2 = minFunction(c, d);
      System.out.println("Minimum Value = " + result1);
      System.out.println("Minimum Value = " + result2);
   }

   // for integer
   public static int minFunction(int n1, int n2) {
      int min;
      if (n1 > n2)
         min = n2;
      else
         min = n1;

      return min; 
   }
   
   // for double
   public static double minFunction(double n1, double n2) {
     double min;
      if (n1 > n2)
         min = n2;
      else
         min = n1;

      return min; 
   }
}

Это даст следующий результат —

Выход

Minimum Value = 6
Minimum Value = 7.3

Перегрузка методов делает программу читабельной. Здесь два метода имеют одно и то же имя, но с разными параметрами. Минимальное число из целых и двойных типов является результатом.

Использование аргументов командной строки

Иногда вы захотите передать некоторую информацию в программу при запуске. Это достигается передачей аргументов командной строки в main ().

Аргумент командной строки — это информация, которая непосредственно следует за именем программы в командной строке при ее выполнении. Получить доступ к аргументам командной строки внутри Java-программы довольно просто. Они хранятся в виде строк в массиве String, передаваемом в main ().

пример

Следующая программа отображает все аргументы командной строки, с которыми она вызывается:

public class CommandLine {

   public static void main(String args[]) { 
      for(int i = 0; i<args.length; i++) {
         System.out.println("args[" + i + "]: " +  args[i]);
      }
   }
}

Попробуйте выполнить эту программу, как показано здесь —

$java CommandLine this is a command line 200 -100

Это даст следующий результат —

Выход

args[0]: this
args[1]: is
args[2]: a
args[3]: command
args[4]: line
args[5]: 200
args[6]: -100

Это ключевое слово

это ключевое слово в Java, которое используется как ссылка на объект текущего класса в методе экземпляра или в конструкторе. Используя это, вы можете ссылаться на членов класса, таких как конструкторы, переменные и методы.

Примечание . Ключевое слово this используется только внутри методов или конструкторов экземпляра.

это

В общем, ключевое слово это используется для —

  • Отличайте переменные экземпляра от локальных переменных, если они имеют одинаковые имена, в конструкторе или методе.

Отличайте переменные экземпляра от локальных переменных, если они имеют одинаковые имена, в конструкторе или методе.

class Student {
   int age;   
   Student(int age) {
      this.age = age;	
   }
}
  • Вызовите один тип конструктора (параметризованный конструктор или по умолчанию) из другого класса. Это известно как явный вызов конструктора.

Вызовите один тип конструктора (параметризованный конструктор или по умолчанию) из другого класса. Это известно как явный вызов конструктора.

class Student {
   int age
   Student() {
      this(20);
   }
   
   Student(int age) {
      this.age = age;	
   }
}

пример

Вот пример, который использует это ключевое слово для доступа к членам класса. Скопируйте и вставьте следующую программу в файл с именем This_Example.java .

Live Demo

public class This_Example {
   // Instance variable num
   int num = 10;
	
   This_Example() {
      System.out.println("This is an example program on keyword this");	
   }

   This_Example(int num) {
      // Invoking the default constructor
      this();
      
      // Assigning the local variable num to the instance variable num
      this.num = num;	   
   }
   
   public void greet() {
      System.out.println("Hi Welcome to Tutorialspoint");
   }
      
   public void print() {
      // Local variable num
      int num = 20;
      
      // Printing the local variable
      System.out.println("value of local variable num is : "+num);
      
      // Printing the instance variable
      System.out.println("value of instance variable num is : "+this.num);
      
      // Invoking the greet method of a class
      this.greet();     
   }
   
   public static void main(String[] args) {
      // Instantiating the class
      This_Example obj1 = new This_Example();
      
      // Invoking the print method
      obj1.print();
	  
      // Passing a new value to the num variable through parametrized constructor
      This_Example obj2 = new This_Example(30);
      
      // Invoking the print method again
      obj2.print(); 
   }
}

Это даст следующий результат —

Выход

This is an example program on keyword this 
value of local variable num is : 20
value of instance variable num is : 10
Hi Welcome to Tutorialspoint
This is an example program on keyword this 
value of local variable num is : 20
value of instance variable num is : 30
Hi Welcome to Tutorialspoint

Переменные Аргументы (var-args)

JDK 1.5 позволяет передавать методу переменное число аргументов одного и того же типа. Параметр в методе объявлен следующим образом:

typeName... parameterName

В объявлении метода вы указываете тип, за которым следует многоточие (…). В методе может быть указан только один параметр переменной длины, и этот параметр должен быть последним параметром. Любые обычные параметры должны предшествовать этому.

пример

Live Demo

public class VarargsDemo {

   public static void main(String args[]) {
      // Call method with variable args  
	   printMax(34, 3, 3, 2, 56.5);
      printMax(new double[]{1, 2, 3});
   }

   public static void printMax( double... numbers) {
      if (numbers.length == 0) {
         System.out.println("No argument passed");
         return;
      }

      double result = numbers[0];

      for (int i = 1; i <  numbers.length; i++)
      if (numbers[i] >  result)
      result = numbers[i];
      System.out.println("The max value is " + result);
   }
}

Это даст следующий результат —

Выход

The max value is 56.5
The max value is 3.0

Метод finalize ()

Можно определить метод, который будет вызываться непосредственно перед окончательным уничтожением объекта сборщиком мусора. Этот метод называется finalize () , и его можно использовать для обеспечения правильного завершения объекта.

Например, вы можете использовать finalize (), чтобы убедиться, что открытый файл, принадлежащий этому объекту, закрыт.

Чтобы добавить финализатор в класс, вы просто определяете метод finalize (). Среда выполнения Java вызывает этот метод всякий раз, когда собирается перезапустить объект этого класса.

Внутри метода finalize () вы будете указывать те действия, которые должны быть выполнены до уничтожения объекта.

Метод finalize () имеет такую ​​общую форму —

protected void finalize( ) {
   // finalization code here
}

Здесь ключевое слово protected — это спецификатор, который запрещает доступ к finalize () по коду, определенному вне его класса.

Это означает, что вы не можете знать, когда или даже выполнится finalize (). Например, если ваша программа заканчивается до того, как происходит сборка мусора, finalize () не будет выполняться.