Static int return java

Static int return java

public static void main(String[] args) Каждый раз пишем эту магическую строку, что бы запустить нашу программу. MAIN — обозначает точку входа в программу. Мы можем один раз написать этот метод в главном классе, например Main:

public class Main   public static void main(String[] args)   // просто тестирование  > > 

Следующим методом мы можем написать метод сложения двух целых чисел. Название метода addition мы пишем с маленькой буквы.

И тогда мы можем в нашей точке входа запустить(вызвать) метод сложения и весь наш класс тогда будет выглядеть вот так:

 public class Main   public static void main(String[] args)   addition();  >  static void addition()   int a = 4;  int b = 5;  int c = a + b;  System.out.println(c);  > > 

Создание класса #

Точно также мы можем создать совсем новый класс для вычисления целых чисел. И назвать его Calculator, и в нём написать наш метод:

public class Calculator   static void addition()   int a = 4;  int b = 5;  int c = a + b;  System.out.println(c);  > > 

Аргументы #

Мы можем сделать метод принимающим параметры(атрибуты, аргументы), например так:

 static void addition (int a, int b)

Тогда запустить этот метод в Main можно, давайте сначала подумаем как, а потом попробуем посмотреть:

Calculator.addition(a, b); //Запускать метод мы можем один или несколько раз Calculator.addition(4, 7); Calculator.addition(17, 25); 

Метод сам по себе у нас может быть нетронутым и только в месте его вызова мы “манипулируем” с аргументами.

Типы методов #

Принципиально в Java два типа методов:

  1. Исполняемые (void). Эти методы просто исполняют команды.
  2. Возвратные. Эти методы всегда что-то возвращают.

Пример метода, который возвращает значение int:

Пример метода, который возвращает int и принимает два int аргумента

public static int devide(int a, int b) < return a / b; >

Пример метода, который принимает String, а возвращает int:

public static int vornameAndName(String vorname, String name)

Очень важно понимать, что main вход в программу, с этого метода начинаются необходимые действия. Например на условной кассе в магазине в точке мейн запускается процесс подсчитывания стоимости продуктов, и после этого стоимость передаётся в метод вывода чека на печать и ещё раз на экране у кассира. Нет хороших или плохих методов, удобных или неудобных; это просто инструменты и левша может использовать другие инструменты чем правша. “Правильность” особо нигде не прописана.

Ещё один пример. Нам надо поехать в отпуск:

 public class Main   public static void main(String[] args)   weGoOnVacation();  >  static void weGoOnVacation()   // псевдометод, который описывает, что надо сделать что бы поехать в отпуск  bookFlights();  bookHotel();  packUp();  callTaxi();  excellentMood();  >  static void excellentMood()   //каждый из этих методов описывает как добиться поставленной цели. а может вызывать и другие дополнительные методы.  // например для хорошего настроения нужно отключиться от работы и улететь туда где тепло  > > 

Зарезервированные слова #

Нельзя использовать в переменных
abstract double int super
boolean else interface switch
break extends long synchronized
byte final native this
case finally new throw
catch float package throws
char for private transient*
class goto* protected try
const* if public void
continue implements return volatile
default import short while
do instanceof static

Модификаторы доступа. Private, protected, default, public #

Private — наиболее строгий модификатор доступа. Он ограничивает видимость данных и методов пределами одного класса.
Default — package visible.
Protected — package visible.
Protected data member and method are only accessible by the classes of the same package and the subclasses present in any package. You can also say that the protected access modifier is similar to default access modifier with one exception that it has visibility in sub classes.
Public — Кто угодно может этим пользоваться.

_ Class Package Subclass(same pkg) Subclass(diff pkg) World
public + + + + +
protected + + + +
no modifier + + +
private +

Модификатор static в Java #

Static показывает, что это метод или переменная класса. На данном этапе большего нам знать пока не надо.

public class HelloStatic   private static int count = 10;   public static void main(String args[])   System.out.println(count); //compile time error  > > 

Дополнительные материалы #

  1. https://www.oreilly.com/library/view/think-java/9781491929551/ch04.html
  2. https://docs.oracle.com/javase/tutorial/java/javaOO/returnvalue.html
  3. https://www.baeldung.com/java-methods
  4. Ещё раз ссылка с конвенцией (договор о правописании и синтаксисе) — https://www.oracle.com/technetwork/articles/javaee/codeconventions-135099.html
  5. https://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html

Домашнее задание #

  1. Давайте попробуем написать методы для вычисления площади и периметра фигур: квадрата, прямоугольника, треугольника, круга. И один раз напишем их исполняющими, а один раз возвратными. В обоих случаях методы должны принимать необходимые данные для вычисления: как радиус, длину сторон или прочее.
  2. Давайте напишем генератор паролей. Методу передаётся длина пароля. И метод генерирует пароль используя латиницу, цифры и некоторые спецсимволы(на ваш выбор). Подсказка — использовать только те знания, которые были уже изучены. Существует как минимум два(на самом деле 222) разных подхода к решению этой проблемы. Не бойтесь пробовать.

Источник

Оператор return в Java

Java-университет

Оператор return в Java - 1

Как мы знаем, язык Java является объектно-ориентированным языком программирования. То есть базовая концепция, т.к. сказать основа основ, заключается в том, что всё есть объект. Объекты описываются при помощи классов. В свою очередь у классов есть состояние и поведение. Например, банковский счёт может иметь состояние в виде количестве денег на счету и иметь поведения увеличение и уменьшение баланса. Поведение в Java реализуется при помощи методов. То, каким образом описывать методы, приводится в самом начале пути изучения Java. Например, в официальном tutorial от Oracle: «Defining Methods». Тут можно выделить два важных аспекта:

  • Каждый метод имеет сигнатуру. Сигнатура состоит из имени метода и его входных параметров;
  • Для методов должно быть указан тип возвращаемого значения (return type);
  • Тип возвращаемого значения не входит в сигнатуру метода.

Опять же, это следствие того, что Java язык строго типизированный и компилятор хочет заранее понимать, какие типы и где используются на столько, на сколько это возможно. Опять же, чтобы уберечь нас от ошибок. В общем, всё во благо. Ну и нам это лишний раз прививает культуру обращения с данными, как мне кажется. Итак, для методов указывается тип значения. А чтобы вернуть это самое значение из методов используется ключевое слово return .

Ключевое слово оператор return в Java

Ключевое слово оператор return относится к выражениям «управления ходом выполнения», о чём указано в oracle tutorial «Control Flow Statements». О том, как нужно возвращать значения можно так же прочитать в официальном tutorial: «Returning a Value from a Method». Компилятор тщательно следит, на сколько у него хватает сил, за тем, чтобы возвращаемое из метода значение соответствовало указанному у метода типу возвращаемого значения. Воспользуемся для примера Online IDE от tutorialspoint. Посмотрим на изначальный пример:

Как мы видим, здесь выполняется main метод, который является точкой входа в программу. Строчки кода выполняются сверху вниз. Наш main метод не может возвращать значения, иначе мы получим ошибку: « Error: Main method must return a value of type void ». Поэтому, метод просто выполнит вывод на экран. Давайте теперь вынесем получение строки в отдельный метод получения сообщения:

 public class HelloWorld < public static void main(String []args) < System.out.println(getHelloMessage()); >public static String getHelloMessage() < return "Hello World"; >> 

Как мы видим, при помощи ключевого слова return мы указали возвращаемое значение, которое использовали далее в методе println . В описании (определении) метода getHelloMessage мы указали, что он вернёт нам String . Это позволяет компилятору проверить, что действия метода согласуются с тем, каким образом он объявлен. Естественно, тип возвращаемого значения, указанного в определении метода, может быть более широким чем тип возвращаемого из кода значения, т.е. главное чтобы типы приводились друг к другу. В противном случае мы получим ошибку во время компиляции: « error: incompatible types ». Кстати, наверно сразу появился вопрос: Почему return относится к операторам управления ходом выполнения программы. А потому, что он может нарушать обычный ход выполнения программы «сверху вниз». Например:

 public class HelloWorld < public static void main(String []args)< if (args.length == 0) < return; >for (String arg : args) < System.out.println(arg); >> > 

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

 public static void main(String []args)

Есть один «грязный хак» для обхода такого. Например, для целей отладки или ещё почему-то. Выше указанный код можно починить обернув return в if блок:

Оператор Return при обработке ошибок

Есть одно очень хитрое обстоятельство – мы можем использовать return совместно с обработкой ошибок. Сразу хочется сказать, что использование return в catch блоке это очень и очень плохой тон, поэтому стоит этого избегать. Но нам ведь нужен пример? Вот он:

 public class HelloWorld < public static void main(String []args) < System.out.println("Value is: " + getIntValue()); >public static int getIntValue() < int value = 1; try < System.out.println("Something terrible happens"); throw new Exception(); >catch (Exception e) < System.out.println("Catched value: " + value); return value; >finally < value++; System.out.println("New value: " + value); >> > 

На первый взгляд кажется, что должно вернуться 2, ведь finally выполняется всегда. Но нет, значение будет 1, а изменение переменной в finally будет проигнорировано. Более того, если бы value содержала бы объект и мы в finally сказали бы value = null , то из catch вернулась бы всё равно ссылка на объект, а не null . А вот из блока finally оператор return сработал бы правильно. Коллеги за такой подарок явно не скажут спасибо.

void.class

Ну и напоследок. Можно написать странную конструкцию вида void.class . Казалось бы, зачем и в чём смысл? На самом деле, в различных фрэймворках и хитрых случаях, когда используется Java Reflection API, это может очень понадобится. Например, можно проверять, какой тип возвращает метод:

 import java.lang.reflect.Method; public class HelloWorld < public void getVoidValue() < >public static void main(String[] args) < for (Method method : HelloWorld.class.getDeclaredMethods()) < System.out.println(method.getReturnType() == void.class); >> > 

Это может быть полезно в тестовых фрэймворках, где необходимо подменять реальный код методов. Но для этого нужно понимать, как этот метод себя ведёт (т.е. какие типы возвращает). Есть ещё второй способ реализации метода main из кода выше:

 public static void main (String[] args) < for (Method method : HelloWorld.class.getDeclaredMethods()) < System.out.println(method.getReturnType() == Void.TYPE); >> 

Довольно интересное обсуждение разницы между ними можно прочитать на stackoverflow: What is the difference between java.lang.Void and void? #Viacheslav

Источник

Returning Values From Methods (Java)

As my Java adventure continues I look today at returning values from methods. So far the methods I have discussed have completed a task but have not returned any values to the main method.

The previous methods have been defined as:

public static void methodName()

Methods in Java

I’ve put the word void in bold because this is the key to getting methods to return a value. The word void means “empty” and because it has been used Java is not expecting anything to return from the method.

To change the method from a void to a return the word void should be replaced with int, double, or char – readers of my variables post will notice that these are types of variables Java uses.

public static int returnNumber()

Java Return Method

The above example will return the integer 4 to the main method. The below methods so various examples of the returns including how values can be passed into a method and a new value returned (see addNumbers on the below image).

Examples of method returns method returns in action

public class methodReturn   public static void main(String[] args)  System.out.println(returnNumber());  System.out.println(returnLetter());  System.out.println(returnDouble());  System.out.println(addNumbers(3,3));  >  public static int returnNumber()  return(4);  >  public static char returnLetter()  return('g');  >  public static double returnDouble()  return(10.5);  >  public static int addNumbers(int num1, int num2)  int sum = num1 + num2;  return(sum);  > >

When Java hits the return keyword it exits out of the method and returns back to main void.

Whilst discussing Java, today I completed the “DEV276x: Learn to Program in Java” course offered by edX and Microsoft. I enjoyed the course as it had material to read, videos to watch, practical projects and 3 exams (pass mark is 70%).

Источник

Читайте также:  Can you run it java plugin
Оцените статью