- Методы
- Создание метода
- Синтаксис
- Синтаксис
- Пример
- Вызов метода
- Пример
- Ключевое слово void
- Пример
- Передача параметров по значению в Java
- Пример
- Перегрузка методов
- Пример
- Использование аргументов командной строки
- Пример
- Конструктор в Java
- Пример
- Параметризованный конструктор
- Пример
- Ключевое слово this
- Пример
- Аргументы переменной (var-args)
- Пример
- Метод finalize()
- Java вызвать метод void
Методы
Метод в Java — это комплекс выражений, совокупность которых позволяет выполнить определенную операцию. Так, например, при вызове метода System.out.println(), система выполняет ряд команд для выведения сообщения на консоль.
На данном этапе вы освоите технику создания собственных методов с либо без возвращаемых значений, вызова методов с указанием либо без указания параметров, и выделения методов при разработке программы.
Создание метода
Ниже рассмотрен пример, иллюстрирующий синтаксис метода, как в Java создать метод.
Синтаксис
public static int methodName(int a, int b) < // тело >
- public static — модификатор;
- int — возвращаемый тип;
- methodName — имя метода;
- a, b — формальные параметры;
- int a, int b — перечень параметров.
Определение метода представлено заголовком и телом метода. То же самое мы можем наблюдать в следующем синтаксисе создания метода.
Синтаксис
modifier returnType nameOfMethod (Parameter List) < // тело метода >
Приведенный выше синтаксис включает:
- modifier – определяет тип доступа для метода и возможность его использования.
- returnType – метод может возвратить значение.
- nameOfMethod – указывает имя метода. Сигнатура метода включает имя метода и перечень параметров.
- Parameter List – перечень параметров представлен типом, порядком и количеством параметров метода. Данная опция задается произвольно, в методе может присутствовать нулевой параметр.
- method body – тело метода определяет метод работы с командами.
Пример
Далее представлен исходный код рассмотренного выше метода, именуемого max(). Данный метод использует два параметра num1 и num2 и возвращает больший из двух.
/* фрагмент кода возвращает минимальное между двумя числами */ public static int minFunction(int n1, int n2) < int min; if (n1 >n2) min = n2; else min = n1; return min; >
Вызов метода
Перед использованием метода его необходимо вызвать. Существует два способа для вызова метода в Java, т.е. метод производит возврат значения либо не производит (отсутствует возвращающее значение).
Алгоритм вызова метода достаточно прост. Когда программа производит в Java вызов метода, программное управление передается вызванному методу. Данный вызванный метод затем возвращает управление вызывающему клиенту в двух случаях, если:
- выполняется оператор возврата;
- достигнута закрывающая фигурная скобка окончания метода.
Метод возврата типа void производит вызов команды. Рассмотрим пример:
System.out.println("Это proglang.su!");
Метод возврата значения может быть проиллюстрирован следующим примером:
Пример ниже демонстрирует способ определения и вызова метода в Java.
Пример
public class ExampleMinNumber < public static void main(String[] args) < int a = 11; int b = 6; int c = minFunction(a, b); System.out.println("Минимальное значение dos">Минимальное значение = 6
Ключевое слово void
Ключевое слово void в Java позволяет нам создать методы, не производящие возврат значения. В примере, расположенном далее, нами был рассмотрен метод типа void – methodRankPoints. Методы типа void в Java не производят возврат каких-либо значений. Вызов метода типа void выполняется командой, т.е. methodRankPoints(255.7);. Это java-выражение, которое оканчивается точкой с запятой, как показано в примере ниже:
Пример
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("Ранг A1"); >else if (points >= 122.4) < System.out.println("Ранг A2"); >else < System.out.println("Ранг A3"); >> >
В итоге будет получен следующий результат:
Передача параметров по значению в Java
При выполнении вызывающего процесса производится в Java передача аргументов. Процедура должна осуществляться согласно порядку, предусмотренному соответствующими параметрами в спецификации метода. Передача параметров может производиться по значению либо по ссылке.
В Java передача параметров по значению обозначает вызов метода с параметром. За счет этого производится передача значения аргумента параметру.
Пример
Следующая программа демонстрирует пример передачи параметра по значению. Значения аргументов остаются неизменными даже после вызова метода.
public class swappingExample < public static void main(String[] args) < int a = 30; int b = 45; System.out.println("Перед тем как передать, значения аргументов a = " + a + " и b = " + b); // Вызов метода передачи swapFunction(a, b); System.out.println("\nСейчас, до и после передачи значения аргументов "); System.out.println("остались неизменными, a = " + a + " и b = " + b); >public static void swapFunction(int a, int b) < System.out.println("До замены: a = " + a + " b = " + b); // Передача параметров int c = a; a = b; b = c; System.out.println("После замены: a = " + a + " b dos">Перед тем как передать, значения аргументов a = 30 и b = 45 До замены: a = 30 b = 45 После замены: a = 45 b = 30 Сейчас, до и после передачи значения аргументов остались неизменными, a = 30 и b = 45
Перегрузка методов
Перегрузка методов в Java — случай, когда в классе присутствуют два и более метода с одинаковым именем, но различными параметрами. Данный процесс отличен от переопределения методов. При переопределении методов, метод характеризуется аналогичным именем, типом, числом параметров и т.д.
Рассмотрим пример, который был представлен выше при определении минимальных чисел целочисленного типа. Так допустим, мы хотим определить минимальное число двойного типа. В данном случае будет представлена концепция перегрузки для создания двух и более методов с одинаковым именем, но различными параметрами.
Рассмотренный пример поясняет вышесказанное.
Пример
public class ExampleOverloading < public static void main(String[] args) < int a = 7; int b = 3; double c = 5.1; double d = 7.2; int result1 = minFunction(a, b); // такая же функция с другими параметрами double result2 = minFunction(c, d); System.out.println("Минимальное значение = " + result1); System.out.println("Минимальное значение dos">Минимальное значение = 3 Минимальное значение = 5.1
Методы перегрузки делают программу читаемой. Таким образом, представлены два метода с одинаковым именем, но различными параметрами. В результате чего мы получили минимальные int число и число double типа.
Использование аргументов командной строки
В ходе работы программы вам может понадобиться произвести передачу определенной информации. Это может быть сделано в Java за счет передачи аргументов командной строки в main().
В Java аргумент командной строки представляет информацию, которая напрямую следует за именем программы в командной строке при ее выполнении. Получение доступа к аргументам командной строки в java-программе не представляет сложности. Они хранятся в виде строки в массиве строк, переданном в main().
Пример
Программа ниже отображает все вызванные аргументы командной строки.
Попробуйте выполнить данную программу, как показано далее:
$java CommandLine это командная строка 300 -200
В итоге будет получен следующий результат:
args[0]: это args[1]: командная args[2]: строка args[3]: 300 args[4]: -200
Конструктор в Java
В Java конструктор инициализирует объект при его создании. Его имя аналогично имени класса, а синтаксис сходен с синтаксисом метода. Однако, в отличие от последнего, в конструкторе отсутствует возвращаемое значение.
Как правило, конструктор в Java может использоваться для присвоения исходного значения переменных экземпляра, определяемых классом, либо для выполнения каких-либо иных процедур запуска, необходимых для создания полностью сформированного объекта.
Конструкторы присутствуют во всех классах, независимо от их указания, в виду того, что Java автоматически предоставляет конструктор по умолчанию, который инициализирует все переменные членов класса до нуля. Вместе с этим, после того как вы определите собственный конструктор, конструктор по умолчанию больше не будет задействован.
Пример
В примере ниже рассмотрено использование конструктора класса без параметров.
// Простой конструктор. class MyClass < int x; // Далее следует конструктор MyClass() < x = 10; >>
Для инициализации объектов вам необходимо выполнить вызов конструктора согласно следующему примеру.
Параметризованный конструктор
Чаще всего вам может понадобиться конструктор, который принимает один и более параметров. Добавление параметров к конструктору аналогично их добавлению в метод, следует только внести их в круглые скобки после имени конструктора.
Пример
Далее рассмотрен простой пример использования конструктора с параметром.
// Простой конструктор. class MyClass < int x; // Ниже конструктор MyClass(int i) < x = i; >>
С целью инициализации объектов вам понадобится вызвать конструктор согласно следующему примеру.
Получим следующий результат:
Ключевое слово this
Ключевое слово this — используется для ссылки на текущий класс с учетом метода или конструктора экземпляра. Используя this в Java, Вы можете ссылаться на экземпляры класса, такие как конструкторы, переменные и методы.
Примечание: ключевое слово this используется только в составе методов либо конструкторов экземпляра.
Как правило, ключевое слово this в Java используется для:
- дифференцирования между переменными экземпляра и локальными переменными в случае, если у них одинаковые имена, в составе конструктора или метода.
- вызова конструктора одного типа (параметризованного конструктора либо конструктора по умолчанию) из другого в составе класса. Данный процесс также носит название явного вызова конструктора.
class Student < int age Student() < this(20); >Student(int age) < this.age = age; >>
Пример
Далее представлен пример, в котором ключевое слово this используется для доступа к экземплярам класса. Необходимо копировать и вставить данную программу в файл с названием This_Example.java.
public class This_Example < // Инициализация переменной num int num = 11; This_Example() < System.out.println("Это пример программы с ключевым словом this"); >This_Example(int num) < // Вызов конструктора по умолчанию this(); // Присвоение локальной переменной num переменной экземпляра num this.num = num; >public void greet() < System.out.println("Привет! Добро пожаловать на ProgLang!"); >public void print() < // Локальная переменная num int num = 20; // Вызов метода класса greet this.greet(); // Вывод локальной переменной. System.out.println("Значение локальной переменной num: " + num); // Вывод переменной экземпляра. System.out.println("Значение переменной экземпляра num: " + this.num); >public static void main(String[] args) < // Инициализация класса This_Example obj1 = new This_Example(); // Вызов метода print obj1.print(); // Передача нового значения переменной num через параметризованный конструктор This_Example obj2 = new This_Example(30); // Вызов снова метода print obj2.print(); >>
В итоге будет получен следующий результат:
Это пример программы с ключевым словом this Привет! Добро пожаловать на ProgLang! Значение локальной переменной num: 22 Значение переменной экземпляра num: 11 Это пример программы с ключевым словом this Привет! Добро пожаловать на ProgLang! Значение локальной переменной num: 22 Значение переменной экземпляра num: 30
Аргументы переменной (var-args)
JDK 1.5 и выше позволяет передавать методу переменное количество аргументов одного типа. Параметр в методе объявляется следующим образом:
При объявлении метода Вы указываете тип, за которым следует многоточие (. ). В методе может быть указан только один параметр переменной длины, и этот параметр должен быть последним параметром. Любые регулярные параметры должны предшествовать ему.
Пример
public class VarargsDemo < public static void main(String args[]) < // Вызов метода с переменной args printMax(27, 11, 11, 5, 77.1); printMax(new double[]); > public static void printMax(double. numbers) < if (numbers.length == 0) < System.out.println("Ни один аргумент не передается"); return; >double result = numbers[0]; for (int i = 1; i < numbers.length; i++) if (numbers[i] >result) result = numbers[i]; System.out.println("Максимальное значение " + result); > >
В итоге будет получен следующий результат:
Максимальное значение 77.1 Максимальное значение 77.0
Метод finalize()
Метод finalize() — метод, который будет вызываться непосредственно перед окончательным уничтожением объекта сборщиком мусора. (финализатором). В Java finalize() может быть использован для обеспечения чистого завершения объекта.
К примеру, мы можете использовать finalize() чтобы удостовериться в том, что открытый файл, принадлежащий данному объекту, был закрыт.
Для добавления финализатора в класс, вам просто следует определить метод finalize() в Java. Среда выполнения Java производит вызов данного метода непосредственно перед обработкой объекта данного класса.
В составе метода finalize(), вы указываете те действия, которые должны быть выполнены перед уничтожением объекта.
В общем виде метод finalize() выглядит следующим образом:
Здесь ключевое слово protected представляет спецификатор, предотвращающий доступ к finalize() посредством кода, определяемого вне его класса.
Это свидетельствует о том, что вы не можете знать как или даже когда будет производиться выполнение finalize(). К примеру, если ваша программа будет окончена до «сборки мусора», finalize() не будет выполняться.
Java вызвать метод void
Если переменные и константы хранят некоторые значения, то методы содержат собой набор операторов, которые выполняют определенные действия.
Общее определение методов выглядит следующим образом:
[модификаторы] тип_возвращаемого_значения название_метода ([параметры]) < // тело метода >
Модификаторы и параметры необязательны.
По умолчанию главный класс любой программы на Java содержит метод main, который служит точкой входа в программу:
public static void main(String[] args)
Ключевые слова public и static являются модификаторами. Далее идет тип возвращаемого значения. Ключевое слово void указывает на то, что метод ничего не возвращает.
Затем идут название метода — main и в скобках параметры метода — String[] args . И в фигурные скобки заключено тело метода — все действия, которые он выполняет.
Создадим еще несколько методов:
public class Program < public static void main (String args[])< >void hello() < System.out.println("Hello"); >void welcome() < System.out.println("Welcome to Java 10"); >>
Здесь определены два дополнительных метода: hello и welcome, каждый из которых выводит некоторую строку на консоль. Методы определяются внутри класса — в данном случае внутри класса Program, в котором определен метод main.
Но если мы скомпилируем и запустим данную программу, то мы ничего не увидим на консоли. В примере выше мы определили два метода, но мы их нигде не вызываем. По умолчанию в программе Java выполняется только метод main и все его содержимое. Поэтому, если мы хотим, чтобы другие методы тоже выполнялись, их надо вызвать в методе main.
Вызов метода осуществляется в форме:
После имени метода указываются скобки, в которых перечисляются аргументы — значения для параметров метода.
Например, определим и выполним несколько методов:
public class Program < public static void main (String args[])< hello(); welcome(); welcome(); >static void hello() < System.out.println("Hello"); >static void welcome() < System.out.println("Welcome to Java 10"); >>
В методе main вызывается один раз метод hello и два раза метод welcome. В этом и заключается одно из преимуществ методов: мы можем вынести некоторые общие действия в отдельный метод и затем вызывать многократно их в различных местах программы. Поскольку оба метода не имеют никаких параметров, то после их названия при вызове ставятся пустые скобки.
Также следует отметить, что чтобы вызвать в методе main другие методы, которые определены в одном классе с методом main, они должны иметь модификатор static .
В итоге после компиляции и выполнения программы мы увидим на консоли:
Hello Welcome to Java 10 Welcome to Java 10