Public void java что это
#6. Вводный курс по JAVA. Методы
Методы в Java
Методы в Java — это законченная последовательность действий (инструкций), направленных на решение отдельной задачи. По сути, это функции (они же процедуры, подпрограммы) более ранних, не ООП языков. Только эти функции являются членами классов и для различия с обычными функциями, согласно терминологии объектно-ориентированного программирования, называются методами.
Методы определяются всегда внутри классов:
Если тип возвращаемого значения не void, в теле метода должен быть хотя бы один оператор
return выражение;
где тип выражения должен совпадать с типом возвращаемого значения. Этот оператор возвращает результат вычисления выражения в точку вызова метода.
Если тип возвращаемого значения – void, возврат из метода выполняется либо после выполнения последнего оператора тела метода, либо в результате выполнения оператора
return;
(таких операторов в теле метода может быть несколько).
Пример объявления метода, возвращающего значение типа int – сумму двух своих параметров типа int:
В отличие от языка C, в котором тип параметра, задаваемого при вызове, приводится к типу параметра в объявлении функции, тип задаваемого параметра в Java должен строго соответствовать типу параметра в объявлении метода, поэтому вызов метода sum(1.5, 8) приведет к ошибке при компиляции программы.
Не статические методы
Не статические методы в Java используются чаще, чем статические методы. Эти методы могут принадлежать любому объекту, экземпляру класса, а не всему классу.
Не статические методы могут получать доступ и изменять поля объекта.
Методы
Содержание
Метод в Java — это комплекс выражений, совокупность которых позволяет выполнить определенную операцию. Так, например, при вызове метода System.out.println(), система выполняет ряд команд для выведения сообщения на консоль.
На данном этапе вы освоите технику создания собственных методов с либо без возвращаемых значений, вызова методов с указанием либо без указания параметров, и выделения методов при разработке программы.
Создание метода
Ниже рассмотрен пример, иллюстрирующий синтаксис метода, как в Java создать метод.
Синтаксис
Определение метода представлено заголовком и телом метода. То же самое мы можем наблюдать в следующем синтаксисе создания метода.
Синтаксис
Приведенный выше синтаксис включает:
Пример
Далее представлен исходный код рассмотренного выше метода, именуемого 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
Прежде всего, в этой главе мы напишем, оттранслируем, и запустим каноническую программу «Hello World». После этого мы рассмотрим все существенные лексические элементы, воспринимаемые Java-транслятором: пробелы, комментарии, ключевые слова, идентификаторы, литералы, операторы и разделители. К концу главы вы получите достаточно информации для того чтобы самостоятельно ориентироваться в хорошей Java-программе.
Hello World
Итак, вот ваша первая Java-программа:
Транслятор создаст файл HelloWorld.class с независимым от процессора байт-кодом нашего примера. Для того, чтобы исполнить полученный код, необходимо иметь среду времени выполнения языка Java (в нашем случае это программа java), в которую надо загрузить новый класс для исполнения. Подчеркнем, что указывается имя класса, а не имя файла, в котором этот класс содержится.
Полезного сделано мало, однако мы убедились, что установленный Java-транслятор и среда времени выполнения работают.
Шаг за шагом
Строка 1
В этой строке использовано зарезервированное слово class. Оно говорит транслятору, что мы собираемся описать новый класс. Полное описание класса располагается между открывающей фигурной скобкой в первой строке и парной ей закрывающей фигурной скобкой в строке 5. Фигурные скобки в Java используются точно так же, как в языках С и С++.
Строка 2
Такая, на первый взгляд, чрезмерно сложная строка примера является следствием важного требования, заложенного при разработке языка Java. Дело в том, что в Java отсутствуют глобальные функции. Поскольку подобные строки будут встречаться в большинстве примеров первой части книги, давайте пристальнее рассмотрим каждый элемент второй строки.
public
static
Наконец, мы добрались до имени метода main. Здесь нет ничего необычного, просто все существующие реализации Java-интерпретаторов, получив команду интерпретировать класс, начинают свою работу с вызова метода main. Java-транслятор может оттранслировать класс, в котором нет метода main. А вот Java-интерпретатор запускать классы без метода main не умеет.
Все параметры, которые нужно передать методу, указываются внутри пары круглых скобок в виде списка элементов, разделенных символами «;» (точка с запятой). Каждый элемент списка параметров состоит из разделенных пробелом типа и идентификатора. Даже если у метода нет параметров, после его имени все равно нужно поставить пару круглых скобок. В примере, который мы сейчас обсуждаем, у метода main только один параметр, правда довольно сложного типа.
Строка 3
В этой строке выполняется метод println объекта out. Объект out объявлен в классе OutputStream и статически инициализируется в классе System. В главах 9 и 13 у вас будет шанс познакомиться с нюансами работы классов String и OutputStream.
Закрывающей фигурной скобкой в строке 4 заканчивается объявление метода main, а такая же скобка в строке 5 завершает объявление класса HelloWorld.
Лексические основы
Пробелы
Комментарии
Хотя комментарии никак не влияют на исполняемый код программы, при правильном использовании они оказываются весьма существенной частью исходного текста. Существует три разновидности комментариев: комментарии в одной строке, комментарии в нескольких строках и, наконец, комментарии для документирования. Комментарии, занимающие одну строку, начинаются с символов // и заканчиваются в конце строки. Такой стиль комментирования полезен для размещения кратких пояснений к отдельным строкам кода:
Для более подробных пояснений вы можете воспользоваться комментариями, размещенными на нескольких строках, начав текст комментариев символами /* и закончив символами */ При этом весь текст между этими парами символов будет расценен как комментарий и транслятор его проигнорирует.
Зарезервированные ключевые слова
abstract | boolean | break | byte | byvalue |
case | cast | catch | char | class |
const | continue | default | do | double |
else | extends | false | final | finally |
float | for | future | generic | goto |
if | implements | import | inner | instanceof |
int | interface | long | native | new |
null | operator | outer | package | private |
protected | public | rest | return | short |
static | super | switch | syncronized | this |
throw | throws | transient | true | try |
var | void | volatile | while |
Отметим, что слова byvalue, cast, const, future, generic, goto, inner, operator, outer, rest, var зарезервированы в Java, но пока не используются Кроме этого, в Java есть зарезервированные имена методов (эти методы наследуются каждым классом, их нельзя использовать, за исключением случаев явного переопределения методов класса Object).
clone | equals | finalize | getClass | hashCode |
notify | notifyAll | toString | wait |
Идентификаторы
Литералы
Константы в Java задаются их литеральным представлением. Целые числа, числа с плавающей точкой, логические значения, символы и строки можно располагать в любом месте исходного кода. Типы будут рассмотрены в главе 4.
Целые литералы
Литералы с плавающей точкой
Логические литералы
Символьные литералы
Управляющая последовательность | Описание |
\ddd | Восьмеричный символ (ddd) |
\uxxxx | Шестнадцатиричный символ UNICODE (xxxx) |
\’ | Апостроф |
\» | Кавычка |
\\ | Обратная косая черта |
\r | Возврат каретки (carriage return) |
\n | Перевод строки (line feed, new line) |
\f | Перевод страницы (form feed) |
\t | Горизонтальная табуляция (tab) |
\b | Возврат на шаг (backspace) |
Строчные литералы
Операторы
Разделители
Символы | Название | Для чего применяются |
( ) | круглые скобки | Выделяют списки параметров в объявлении и вызове метода, также используются для задания приоритета операций в выражениях, выделения выражений в операторах управления выполнением программы, и в операторах приведения типов. |
фигурные скобки | Содержат значения автоматически инициализируемых массивов, также используются для ограничения блока кода в классах, методах и локальных областях видимости. | |
[ ] | квадратные скобки | Используются в объявлениях массивов и при доступе к отдельным элементам массива. |
; | точка с запятой | Разделяет операторы. |
, | запятая | Разделяет идентификаторы в объявлениях переменных, также используется для связи операторов в заголовке цикла for. |
. | точка | Отделяет имена пакетов от имен подпакетов и классов, также используется для отделения имени переменной или метода от имени переменной. |
Переменные
Объявление переменной
Основная форма объявления переменной такова:
Объявляет три целых переменных а, b, с.
Объявляет еще три целых переменных, инициализирует d и f.
Инициализирует z. double pi = 3. 14159;
Объявляет число пи (не очень точное, но все таки пи).
Переменная х получает значение ‘х’.
В приведенном ниже примере создаются три переменные, соответствующие сторонам прямоугольного треугольника, а затем c помощью теоремы Пифагора вычисляется длина гипотенузы, в данном случае числа 5, величины гипотенузы классического прямоугольного треугольника со сторонами 3-4-5.
Ваш первый шаг
Мы уже многого достигли: сначала написали небольшую программу на языке Java и подробно рассмотрели, из чего она состоит (блоки кода, комментарии). Мы познакомились со списком ключевых слов и операторов, чье назначение будет подробно объяснено в дальнейших главах. Теперь вы в состоянии самостоятельно различать основные части любой Java-программы и готовы к тому, чтобы приступить к чтению главы 4, в которой подробно рассматриваются простые типы данных.
Void и др.
— Привет, Амиго! И снова маленькая и интересная тема. Тип Void.
— А зачем может понадобиться такой тип? Ну, c void-то понятно. Чтобы привести к общему знаменателю функции и процедуры. Теперь у нас нет процедур, зато есть функции, которые возвращают void (ничего).
— Ага. А ты помнишь, недавно Элли тебе рассказывала про интерфейс-шаблон Callable?
— А что туда нужно передать в качестве типа-параметра тоже помнишь?
— Ага. А если тебе нужно, чтобы метод call возвращал значение int? Как тогда?
— Теперь я знаю, что для этого есть autoboxing. Я просто передам Integer, и все будет работать как часы:
— Отлично. А если метод ничего не должен возвращать?
— Я понял твою мысль. Тогда мы используем Void как аналог void?
— А не проще сделать просто Object и возвращать null.
— Иногда, но не всегда.
Ты знаешь, что там имелся в виду void, а ты написал Object, но другой программист может этого и не знать и будет думать, а почему это ты возвращаешь null.
Или код, вызывающий этот метод будет ожидать значения в качестве результата.
А когда написано Void то всем сразу понятно, что это – обертка над void, хотя возвращать null все же придётся.
— Гм. Действительно, метод, который всегда возвращает null, внушает некоторые сомнения. А метод, который объявлен Void, может это делать без лишних пояснений.
Читабельность кода — прежде всего. Мне нравится Java!
— Отлично. Рада, что тебе понравилось. На сегодня закончим.
Модуль 3. Урок 1. Основы использования и создания методов в классах. — Введение в Java
Внимание! Перед тем как нажать кнопу «далее» внимательно изучите текстовый материал и полезные ссылки!
Объявление метода
Логично, что для появления такого члена класса как метод — его нужно объявить.
Метод не является объектом в java сам по себе. Он всегда привязан к конкретному классу или объекту этого класса.
Метод объявляется всегда внутри тела класса. То есть между открывающей и закрывающей скобками класса. Желательно это делать после объявления всех полей класса.
Метод не может быть объявлен:
Исключение составляют анонимные классы. Но об этом будет отдельный урок.
Объявление метода состоит из:
Что означают все эти слова в объявлении метода?
Разберем этот вопрос на примере метода, с которого начинается каждая программа:
public — это модификатор доступа (видимости). Конкретно public говорит, что этот метод доступен любому внешнему классу или программе.
Более детально о модификаторах доступа расскажем в пятом модуле.
static — это модификатор, отвечающий за уровень метода. Если есть такой модификатор — метод находится на уровне класса, а не объекта. Если нет модификатора static — метод уровня объекта!
Детально эта тема будет рассмотрена буквально через урок.
void — конкретно это ключевое слово говорит, что метод ничего не возвращает. На его месте может быть любой тип из мира java — такой тип и должен возвращать метод.
Что может возвращать метод:
(String[] args) — в круглых скобках перечислены аргументы данного метода. Их может и не быть вовсе в каком-то методе, а в каком-то и десяток набежать.
Как вызвать метод?
Разберем на примере следующего класса:
Для начала создадим объект и ссылку на него: Car car = new Car(); // именно car с маленькой буквы, в данном примере, является ссылкой
Если метод не статический, то для обращения к нему нужно:
Вот так это выглядит в коде:
Если метод статический, то его можно вызвать как через объект так и через имя класса:
Детальнее об этом в уроке про уровни методов.
ключевое слово this
Это ссылка на текущий объект(инстанс). Рассмотрим на примере:
Не стесняйтесь копировать и экспериментировать с кодом локально у себя! И используйте вот этот визуализатор. Он показывает результаты работы отдельных выражений в коде.
Немного модифицированный пример из видео
На наш взгляд этот пример помогает уловить суть происходящего в коде на уроке. Не стесняйтесь тестировать и играться с этим кодом самостоятельно:
Как читать UML-диаграммы (методы)
С индикаторами модификаторов доступа Вы уже должны быть знакомы:
С методами почти тот же подход, только слов больше.
Например, если в диаграмме написано:
Полезные ссылки
Открыть доступ
Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно.