Progress-servis55.ru

Новости из мира ПК
2 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Функции в java

18. Java — Методы

Метод в Java — это комплекс выражений, совокупность которых позволяет выполнить определенную операцию. Так, например, при вызове метода System.out.println(), система выполняет ряд команд для выведения сообщения на консоль.

На данном этапе вы освоите технику создания собственных методов с либо без возвращаемых значений, вызова методов с указанием либо без указания параметров, и выделения методов при разработке программы.

Содержание

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

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

Синтаксис

  • public static — модификатор;
  • int — возвращаемый тип;
  • methodName — имя метода;
  • a, b — формальные параметры;
  • int a, int b — перечень параметров.

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

Синтаксис

Приведенный выше синтаксис включает:

  • modifier – определяет тип доступа для метода и возможность его использования.
  • returnType – метод может возвратить значение.
  • nameOfMethod – указывает имя метода. Сигнатура метода включает имя метода и перечень параметров.
  • Parameter List – перечень параметров представлен типом, порядком и количеством параметров метода. Данная опция задается произвольно, в методе может присутствовать нулевой параметр.
  • method body – тело метода определяет метод работы с командами.

Пример

Далее представлен исходный код рассмотренного выше метода, именуемого max(). Данный метод использует два параметра num1 и num2 и возвращает больший из двух.

Вызов метода

Перед использованием метода его необходимо вызвать. Существует два способа для вызова метода в Java, т.е. метод производит возврат значения либо не производит (отсутствует возвращающее значение).

Алгоритм вызова метода достаточно прост. Когда программа производит в Java вызов метода, программное управление передается вызванному методу. Данный вызванный метод затем возвращает управление вызывающему клиенту в двух случаях, если:

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

Метод возврата типа void производит вызов команды. Рассмотрим пример:

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

Пример ниже демонстрирует способ определения и вызова метода в Java.

Пример

В итоге будет получен следующий результат:

Ключевое слово void

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

Пример

В итоге будет получен следующий результат:

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

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

В Java передача параметров по значению обозначает вызов метода с параметром. За счет этого производится передача значения аргумента параметру.

Пример

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

Получим следующий результат:

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

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

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

Рассмотренный пример поясняет вышесказанное.

Пример

В итоге будет получен следующий результат:

Методы перегрузки делают программу читаемой. Таким образом, представлены два метода с одинаковым именем, но различными параметрами. В результате чего мы получили минимальные int число и число double типа.

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

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

В Java аргумент командной строки представляет информацию, которая напрямую следует за именем программы в командной строке при ее выполнении. Получение доступа к аргументам командной строки в java-программе не представляет сложности. Они хранятся в виде строки в массиве строк, переданном в main().

Пример

Программа ниже отображает все вызванные аргументы командной строки.

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

В итоге будет получен следующий результат:

Конструктор в Java

В Java конструктор инициализирует объект при его создании. Его имя аналогично имени класса, а синтаксис сходен с синтаксисом метода. Однако, в отличие от последнего, в конструкторе отсутствует возвращаемое значение.

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

Конструкторы присутствуют во всех классах, независимо от их указания, в виду того, что Java автоматически предоставляет конструктор по умолчанию, который инициализирует все переменные членов класса до нуля. Вместе с этим, после того как вы определите собственный конструктор, конструктор по умолчанию больше не будет задействован.

Пример

В примере ниже рассмотрено использование конструктора класса без параметров.

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

Читать еще:  Можно ли восстановить удаленные сообщения в почте

Параметризованный конструктор

Чаще всего вам может понадобиться конструктор, который принимает один и более параметров. Добавление параметров к конструктору аналогично их добавлению в метод, следует только внести их в круглые скобки после имени конструктора.

Пример

Далее рассмотрен простой пример использования конструктора с параметром.

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

Получим следующий результат:

Ключевое слово this

Ключевое слово this — используется для ссылки на текущий класс с учетом метода или конструктора экземпляра. Используя this в Java, Вы можете ссылаться на экземпляры класса, такие как конструкторы, переменные и методы.

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

Как правило, ключевое слово this в Java используется для:

  • дифференцирования между переменными экземпляра и локальными переменными в случае, если у них одинаковые имена, в составе конструктора или метода.
  • вызова конструктора одного типа (параметризованного конструктора либо конструктора по умолчанию) из другого в составе класса. Данный процесс также носит название явного вызова конструктора.

Пример

Далее представлен пример, в котором ключевое слово this используется для доступа к экземплярам класса. Необходимо копировать и вставить данную программу в файл с названием This_Example.java.

В итоге будет получен следующий результат:

Аргументы переменной (var-args)

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

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

Пример

В итоге будет получен следующий результат:

Метод finalize()

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

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

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

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

В общем виде метод finalize() выглядит следующим образом:

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

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

Функции в java

В уроке 8 мы затронули логические операторы, они нам были необходимы для формирования логического выражения в условиях if. Этот урок будет посвящен математике в Java, и поэтому мы рассмотрим подробнее арифметические операторы и частично возможности класса Math.

Но для начала, выясним, что же такое операторы. Операторы это специальные символы, отвечающие за ту или иную операцию, например сложение, умножение, сравнение. Все операторы в Java можно разбить на 4 класса — арифметические, битовые, операторы сравнения и логические.

Арифметические операторы в Java

Для стандартных арифметических операций, таких как сложение, вычитание, умножение, деление в Java используются традиционные символы, к которым мы привыкли со школы:

Примечание: при операции деления, если оба аргумента являются целыми числами, то в результате получим целое число. Дробная часть, если такая имеется, отбросится. Если хотим получить число с дробной частью, то нужно, чтобы один из аргументов был типа double. Это можно указать в самом выражении при помощи добавления после числа .0 или .d. Пример:

В Java также имеется специальный оператор %, обозначающий остаток от делния.

Пример использования: дан массив целых чисел, вывести на консоль только те числа, которые делятся на 3.

Операции с присваиванием

Рассмотрим задачу вывода на экран 10 первых четных чисел чисел

мы можем записать сокращенно

+= это оператор сложения с присваиванием. Подобные операторы есть для всех основных 5 операций, рассмотренных выше

Пример использования: Найти факториал числа 7.

Инкрементирование и декрементирование

Инкремент, обозначается ++ и увеличивает значение переменной на единицу. Декремент обозначается — и уменьшает значение на единицу. С инкрементом и декрементом мы часто встречаемся в цикле for.

Инкремент и декремент бывают двух форм

Различие префиксной и постфиксной формы проявляется только тогда, когда эти операции присутствуют в выражениях. Если форма префиксная, то сначала произойдет увеличение (или уменьшение) переменной на единицу, а потом с новым значением будет произведены дальнейшие вычисления. Если форма постфиксная, то расчет выражения будет происходить со старым значением переменной, а переменная увеличится (или уменьшится) на единицу после вычисления выражения. Пример

В первом случае сначала переменная a увеличится на 1, потом произойдет вычисление всего выражения. Во втором случае произойдет вычисление выражения при старом значении b = 3, и после вычисления b увеличится на 1, на результат в postfix это уже не повлияет.

Если вы поняли принцип работы постфиксного и префиксного инкремента/декремента, то предлагаю решить в уме такую задачу:

Вопрос: чему в итоге равны x и y? После того, как вы сделали предположение, проверьте его в java.

Читать еще:  Как восстановить базу 1с из sql бэкапа

Задача со зведочкой. Дан код:

Какие числа будут выведены на экран? Почему? Разобраться самостоятельно.

Примечание: инкремент и декремент применяются только к переменной. Выражение вида 7++ считается недопустимым.

Математические функции и константы (класс Math)

Для решения задач нередко требуется использование математических функций. В Java такие функции включены в класс Math. Для того, чтобы использовать методы класса Math, нужно подключить его в начале .java файла с вашим кодом.

Методы в Java

Привет! Это статья про основу основ Java и программирования вообще — про методы. В данной статье мы поэтапно объясним что такое методы в Java и зачем они нужны на конкретном примере. А в конце статьи Вы найдете ссылку на задачи, чтоб закрепить полученные знания на практике 😉

Что такое метод?

Любой код на Java, который Вы откроете, будет состоять из методов. Можно сказать, это строительные «блоки», из которых состоит программа:

Метод в двух словах

Если Вы видите в программе какое-то слово, а затем круглые скобки — значит это метод:

слово()

Например — это названия 4 методов:

println()

hasNextInt()

getNumber()

main()

Зачем же они нужны?

Давайте поясним на примере. Представьте, что мы пишем программу-калькулятор.

В упрощенном виде программа-калькулятор должна выполнять 4 базовые операции: сложение, вычитание, умножение и деление. Поэтому, если бы мы писали программу-калькулятор, мы бы попросили пользователя:

1. Ввести 2 числа

2. Ввести операцию: «+» для сложения, «-» для вычитания, «*» для умножение и «/» для деления

Поэтому мы бы написали следующий код:

Обратите внимание: этот только часть кода программы, а именно главный метод main. Если Вы попытаетесь запустить данный код у себя на компьютере, получите ошибку. Полную версию кода мы покажем ниже.

Что мы тут видим? На самом деле, в каждой строчке выполняется метод:

Все, что подчеркнуто — методы. И да-да, main — это тоже метод! Если записать схематически, то получим:

Что делают все эти методы? Какая логика этого кода?

Давайте объясним это так. Каждый метод отвечает за какое-то действие:

Два типа методов

В коде Вы можете увидеть:

  • методы, которые Вы уже знаете:
  • методы, которые видите впервые — эти методы мы написали сами:

Таким образом, все виды методов в Java можно поделить на две категории:

1. Стандартные, то есть написанные в стандартных библиотеках Java. Просто берешь нужный метод и используешь.

2. Пользовательские, то есть методы, которые Вы сами написали.

Как методы располагаются в программе

Мы уже говорили, что метод — это «строительный блок» программы. Как же они располагаются в программе?

Схематически это можно показать так:

Но выше, когда мы показывали код программы калькулятор, у нас был только один метод — main(). Как мы писали, это была только часть кода. Давайте теперь покажем весь — только не пугайтесь 🙂

Много? Давайте представим этот код схематически:

А теперь на пару секунд отойдем от нашего примера и посмотрим, как строится каждый конкретный метод.

Как же строится метод?

Давайте посмотрим на самый простой метод:

Тааак, что мы тут имеем? Если присмотреться, мы видим знакомые слова — int, метод println(). Из незнакомого только слово void, с ним мы разберемся чуть позже:

Отлично! Половина есть 🙂 Так что же все это значит?

Как Вы могли догадаться, myMethod — это название метода.

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

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

Таким образом для того, чтобы метод выполнился, ему нужно в скобочках записать число (в терминологии методов это называется «передать значение в метод») типа int. Таким образом оно автоматически подставится в переменную х и будет доступно внутри метода. Кстати, то, что метод принимает, в данном случае int x, называется параметром метода.

То, что записано перед названием метода, то есть перед myMethod , это то, что метод возвращает.

Что значит возвращает? «Возвращает» — это значит, что после того, как метод выполнился, мы можем получить определенное число, строчку или другое значение, которое нужно использовать в том месте, где метод вызван.

Таким образом, как видите, перед значением, которое нужно вернуть, пишется специальное слово return. Обратите внимание, что значение, которое возвращает метод, должно быть того же типа, который записан перед названием метода. В нашем случае double. Собственно говоря, поэтому мы считываем с консоли именно nextDouble().

А что же такое за слово void, которое записано в предыдущем примере перед названием метода? Перед названием метода записывается слово void (с англ. «пустота»), если метод не должен ничего возвращать. То есть метод выполнил код, а в место, где он вызван, он ничего не возвращает. Примером такого метода может быть метод println(), который мы используем в System.out.println(). Все, что нужно от метода, — это вывести в консоль значение. И все. Мы же ничему не присваиваем System.out.println() ? Нет. Таким образом можно отличать методы, которые что-то возвращают и «войдовские» методы:

  • если вызов метода мы чему-то присваиваем — метод возвращает определенное значение
  • если же просто вызываем метод в отдельной строчке — этот метод «войдовский»
Читать еще:  Как восстановить wifi на ноутбуке windows 7

Ок, это уяснили. Вернемся к нашему простому примеру.

То есть я — метод с названием myMethod(). Я принимаю на вход какое-то число x, которое обязательно должно быть integer.

Принимать метод может и несколько переменных или другими словами параметров, но возвращать — только одну:

Если Вы хотите передать несколько параметров методу — пишите их через запятую:

Как видите, мы передали методу myMethod() 3 параметра:

  • int x — то есть какое-то число x, которое обязательно должно быть integer
  • String s — какую-то строку (слово или фразу)
  • long l — какое-то число l, которое должно быть long типа

Помимо параметров, есть еще такое понятие как «тело метода». С этим все просто: все, что написано в фигурных скобках <> — это тело метода. То есть это код, который должен выполнять метод. В данном примере в теле метода только 1 строчка кода:

  • System.out.println(«You enterеd number » + x);

А значит метод myMehod() всего-навсего выводит в консоль введенное пользователем число.

На практике

Теперь давайте вернемся к нашему примеру — к огромному устрашающему куску кода, который мы показали чуть выше в этой статье Сейчас мы с Вами разберем по частям из чего состоит этот «устрашающий код» и тогда он покажется совсем не страшным.

Что делает каждый метод?

Начнем с метода main(), который задает общую логику нашей программы:

Создание (определение) функции

Пора научиться создавать собственные функции! Код, в котором создаётся функция, называется определением функции.

Вот простейший пример функции, которая печатает в консоль ‘“Hello world!”‘ (напомним, это побочный эффект):

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

В примере выше функция просто печатает в консоль и ничего не должна возвращать, поэтому тип возвращаемого значения — void.

В заголовке функции сначала идут модификаторы, определяющие, на каких условиях она доступна для вызова. static означает, что функция не пользуется членами того класса, к которому относится (напомним, в Java всякая функция относится к какому-то классу, но классы мы в этом курсе не изучаем).

Чтобы Java-приложение могло работать, в каком-то его классе обязательно нужно объявить такую функцию main, как мы делали ранее во всех примерах:

Именно эта функция и будет вызвана при запуске приложения, поэтому в ней мы и писали код, который хотели выполнить. В примерах мы объявляли эту функцию в классе App.

Создадим нашу первую функцию. У неё будет одна задача: выводить на экран текст Today is: December 5 .

Нужно назвать функцию так, чтобы из названия была понятна её задача. Давайте дадим ей имя showDate :

В нашей функции только две строчки кода, но их может быть сколько угодно. Функции можно считать программами внутри программ.

Вот полная программа, c определением функции и вызовом:

В ней не только функция main, но и showDate описана в классе App, поэтому функция showDate вызывается выражением App.showDate — но на самом деле если обе функции описаны в одном и том же классе, как здесь, то одна из них может вызывать другую без указания имени класса: не App.showDate(), а просто showDate().

Мы могли бы использовать подобную функцию на сайте или в какой-нибудь программе, чтобы выводить текущую дату на экран. Но в текущем виде функция не справится с задачей, ведь она всегда выводит Today is: December 5 .

Давайте улучшим функцию так, чтобы она принимала дату в качестве аргумента и выводила её на экран.

Определим и вызовем нашу обновленную функцию:

Теперь понятно, зачем нужны были круглые скобки после имени функции: в них можно указать аргументы. Теперь наша функция принимает один аргумент — date , имеющий тип String (так называется в Java тип, соответствующий строке текста).

Заметьте: мы не создаём переменную date , но используем её в теле функции. Java работает так: переменная сама создаётся при вызове и указанное значение (в нашем примере — ‘January 29’ ) записывается в эту переменную.

Аргументы можно называть как угодно, их имена имеют смысл исключительно в теле функции.

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

Полный пример определения функции с несколькими аргументами и её вызова:

Главное — помнить про порядок: в каком порядке аргументы стоят при определении функции, в таком же порядке они должны передаваться при вызове.

Задание

Реализуйте функцию printJaimesLine , которая принимает один аргумент — строку, и выводит реплику на экран в формате JAIME: переданная_строка .

Как назвать переменную, которая будет аргументом — решайте сами.

Наша система содержит код, скрытый от вас. В этом упражнении скрыт вызов функции printJaimesLine . Так мы проверяем ваше решение.

Вам не нужно самостоятельно вызывать функцию, только определить её. Но для наглядности — вот как наша система вызывает её:

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

Ссылка на основную публикацию
Adblock
detector