Метод Java - это комбинация некоторых утверждений для выполнения операции. Например, когда вы вызовуте метод System.out.println, система фактически выполнит многие операторы для вывода информации на консоли.
Теперь вы узнаете, как создавать свои собственные методы. Они могут иметь возвращаемые значения или нет возвращаемых значений, могут иметь параметры или отсутствие параметров. Методы перегрузки должны использовать одно и то же имя метода и использовать абстрактные методы в программировании.
Метод создания
Давайте используем следующий пример, чтобы объяснить синтаксис метода:
public static int funcname (int a, int b) {// body}Здесь
Методы также содержат процедуры или функции.
Определение метода включает в себя заголовок метода и тело метода. Как показано ниже:
модификатор returntype nameofmethod (список параметров) {// body метод}Приведенный выше синтаксис включает
Пример
Это метод max (), определенный выше, который принимает два параметра Num1 и Num2, чтобы вернуть максимальное значение между ними.
/** Фрагмент возвращает минимум между двумя числами*/public static int minfunction (int n1, int n2) {int min; if (n1> n2) min = n2; иначе min = n1; вернуть мин; } Метод вызов
Чтобы использовать метод, метод должен быть вызван. Есть два способа вызвать метод, один имеет возвратное значение, а другой не имеет возврата.
Вызов метода очень просто. Когда программа должна вызвать метод, программа управления переносится на вызываемый метод. Метод вернет двум условиям абоненту:
Возьмите метод, который возвращает void в качестве оператора вызова, позвольте мне увидеть следующий пример:
System.out.println ("wiki.jikexueyuan.com!");Возвратное значение этого метода можно понять по следующему примеру:
int result = sum (6, 9);
Пример
В следующем примере показано, как определить метод и как его назвать:
открытый класс exampleminnumber {public static void main (string [] args) {int a = 11; int b = 6; int c = minfunction (a, b); System.out.println ("Минимальное значение =" + c); } / ** Возвращает минимум два числа* / public static int minfunction (int n1, int n2) {int min; if (n1> n2) min = n2; иначе min = n1; вернуть мин; }}Будут даны следующие результаты
Минимальное значение = 6
Ключевое слово void
Ключевое слово позволяет нам создавать метод без возвращаемого значения. Здесь мы создаем метод void MethodRankPoints в следующем примере. Этот метод не имеет типа возвращаемого значения. Вызов метода void должен объявлять методики -точки (255,7); Заявление Java заканчивается полуколоном, как показано ниже:
public class examplevoid {public static void main (string [] args) {methodrankpoints (255.7); } public static void methodrankpoints (двойные точки) {if (точки> = 202,5) {System.out.println ("Rank: A1"); } else if (points> = 122.4) {System.out.println ("Rank: a2"); } else {System.out.println ("Rank: A3"); }}}Это даст следующие результаты:
Ранг: A1
Передайте параметры по значениям
Параметры должны передаваться при вызове функции. И их порядок должен быть таким же, как и порядок параметров, когда они были созданы. Параметры могут быть переданы значениями или ссылками.
Передача параметров с помощью значений означает вызов параметра метода, переданный параметру через значение параметра.
Пример
Следующая программа приводит пример, чтобы показать, что параметры передаются значениями. Значение параметра не изменится после вызова метода.
public Class ShappingExample {public static void main (string [] args) {int a = 30; int b = 45; System.out.println ("Перед обменом, a =" + a + "и b =" + b); // Призывая метод свопа (A, B); System.out.println ("/n ** Теперь, до и после обменения значениями будут такими же здесь **:"); System.out.println ("После обмена, a =" + a + "и b Is" + b); } public static void swapfunction (int a, int b) {System.out.println («Перед обменом (внутри), a =" + a + "b =" + b); // обмен n1 с n2 int c = a; a = b; b = c; System.out.println ("После обмена (внутри), a =" + a + "b =" + b); }}Это даст следующие результаты:
Перед обменом a = 30 и b = 45 -й замена (внутри), a = 30 b = 45 после обмена (внутри), a = 45 b = 30 ** Теперь, до и после обменения значениями здесь **: после обмена a = 30 и b - 45.
Метод перегрузка
Когда метод имеет два или более методов, их имена одинаковы, но параметры различны, он называется перегрузкой метода. Это отличается от покрытия. Переопределение относится к количеству методов с тем же именем, типом и параметрами.
Давайте рассмотрим предыдущий пример поиска минимального целого числа. Если мы попросим найти наименьшее число в типе с плавающей запятой, нам необходимо использовать перегрузку метода для создания двух или более методов с одним именем функции, но разными параметрами.
Объясняются следующие примеры:
public class exampleoverloading {public static void main (string [] args) {int a = 11; int b = 6; двойной c = 7,3; Double D = 9,4; int result1 = minfunction (a, b); // одинаковое имя функции с разными параметрами двойной результат2 = minfunction (c, d); System.out.println ("Минимальное значение =" + result1); System.out.println ("Минимальное значение =" + result2); } // для целочисленного общественного статического minfunction (int n1, int n2) {int min; if (n1> n2) min = n2; иначе min = n1; вернуть мин; } // для двойной публичной статической двойной минфункции (Double N1, Double N2) {Double Min; if (n1> n2) min = n2; иначе min = n1; вернуть мин; }}Это даст следующие результаты:
Минимальное значение = 6 минимальное значение = 7,3
Методы перегрузки облегчают чтение программы. Здесь два метода имеют одинаковое имя, но разные параметры. Генерирует минимальное количество целых чисел и типов с плавающей запятой в результате работы программы.
Используйте параметры командной строки
Иногда вы хотите передать параметры до запуска программы. Это может быть достигнуто путем передачи параметров командной строки к основной функции.
В командной строке, когда вы хотите выполнить файл программы, параметр командной строки появляется сразу после имени файла. Очень легко принять параметры командной строки в программах Java. Они передаются в основную функциональную массив персонажей.
Пример
В следующем примере показана программа, которая выводит все параметры командной строки:
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 Это командная строка 200 -100
Это даст следующие результаты:
args [0]: thisargs [1]: Isargs [2]: AARGS [3]: Commandargs [4]: Lineargs [5]: 200Args [6]: -100
Конструктор
Вот простой пример использования конструкторов:
// простой конструктор.class myclass {int x; // следующее приведено конструктор myClass () {x = 10; }}Вы можете создать создание объекта, вызывая конструктор:
открытый класс consemo {public static void main (string args []) {myclass t1 = new myclass (); Myclass t2 = new myclass (); System.out.println (t1.x + "" + t2.x); }}Как правило, вам нужно использовать конструктор, чтобы принять один или несколько параметров. Передача параметра такая же, как и параметр прохождения обычного метода, представленного выше, который должен перечислить список параметров после имени конструктора.
Пример
Вот простой пример использования конструкторов:
// простой конструктор.class myclass {int x; // следующее приведено конструктор myclass (int i) {x = i; }}Вы можете создать создание объекта, вызывая конструктор:
открытый класс consemo {public static void main (string args []) {myclass t1 = new myclass (10); MyClass T2 = новый MyClass (20); System.out.println (t1.x + "" + t2.x); }}Это даст следующие результаты:
10 20
Параметры переменной длины
JDK1.5 может позволить вам передавать параметры переменной длины того же типа. Объявить это, используя следующий метод:
Typename ... Parametername
При объявлении метода необходимо указать тип параметра перед эллипсисом, и может быть только один параметр переменной длины, а параметр переменной длины должен быть последним из всех параметров.
Пример
открытый класс varargsdemo {public static void main (string args []) {// метод вызова с переменной args printmax (34, 3, 3, 2, 56.5); printmax (new Double [] {1, 2, 3}); } public static void printmax (двойной ... номеры) {if (number.length == 0) {System.out.println ("Нет аргументации"); возвращаться; } Double Result = numbers [0]; для (int i = 1; i <nfuls.length; i ++) if (numbers [i]> result) result = numbers [i]; System.out.println («максимальное значение - + результат); }}Это даст следующие результаты:
Максимальное значение составляет 56,5 максимального значения 3,0
infintize () метод
Вы можете определить метод, который будет вызван только до того, как будет уничтожен коллекционером мусора. Этот метод называется методом anpinalize (), который также можно использовать для обеспечения очистки объекта.
Например, вы можете использовать Finalize (), чтобы убедиться, что файл, открытый объектом, был закрыт.
Чтобы добавить финализатор в класс, вам просто нужно определить метод infintize (). Когда Java хочет переработать объект этого класса, метод будет вызван.
В методе Finalize () вы указате какое -то поведение, которое должно быть сделано до уничтожения объекта.
Метод infintize () обычно похож на следующее:
Защищенная void inpintize () {// код завершения здесь}Здесь, защищенное ключевым словом, состоит в том, чтобы гарантировать, что код вне класса не может получить доступ к методу infintize ().
Это означает, что вы не можете знать, когда выполняется Finalize (). Например, если ваша программа заканчивается до того, как произойдет сборщик мусора, метод infintize () не будет выполнен.
Общие методы:
Общие методы Java широко используются, когда метод возвращает значение, которое является объектом класса контейнера.
Общедоступный статический список
Вообще говоря, при написании общего метода Java тип возврата и по крайней мере один тип параметра должен быть общим, а тип должен быть одинаковым. Если только один из типов возвращаемого значения или тип параметров использует общий, использование этого общего метода будет значительно ограничено, в основном до того же уровня, как если бы вы не использовали генерики.
Следующее в основном представляет использование двух очень похожих общих методов Java и различий между ними.
Первый тип:
public static <t Extends Commonservice> t getService (class <t> clazz) {t service = (t) ServiceMap.get (clazz.getName ()); if (service == null) {service = (t) ServiceLocator.getService (clazz.getName ()); ServiceMap.put (clazz.getName (), Service); } вернуть службу; } Второй тип:
public static <t> t getservice (class <? Extends Commonservice> clazz) {t service = (t) ServiceMap.get (clazz.getName ()); if (service == null) {service = (t) ServiceLocator.getService (clazz.getName ()); ServiceMap.put (clazz.getName (), Service); } вернуть службу; } Вот класс, где находится общий метод:
Public Abstract Class Commonservice {Private Static Hashmap <String, Commonservice> ServiceMap = new Hashmap <String, Commonservice> (); // Вот определение общего метода. Полем } Эти два общих метода имеют только сигнатуры разных методов, а тела методов точно одинаковы. Так в чем же разница?
Давайте использовать их, и вы узнаете разницу.
Используйте первый общий метод:
открытый класс main {public static void main (string [] args) {noticeservice noticeservice = commonservice.getService (noticeservice.class); // правильно использовать первый общий метод без компиляции ошибок. Noticeservice noticeservice = commonservice.getService (userservice.class); // Если вы неправильно используете первый общий метод, возникнет ошибка компиляции. }} Используйте второй общий метод:
открытый класс main {public static void main (string [] args) {noticeservice noticeservice = commonservice.getService (noticeservice.class); // правильно использовать второй общий метод, во время выполнения не будет никаких ошибок компиляции, логика верна, и не будет исключения во время выполнения. Noticeservice noticeservice = commonservice.getService (userservice.class); // Если вы неправильно используете второй общий метод, не будет ошибок компиляции, но логика неверна, и исключение будет происходить во время выполнения, что опасно! }}Теперь я знаю разницу между этими двумя чрезвычайно похожими общими методами?