Это на наших лицах, и временами кажется чем угодно, но каждый, кто касался Java, смотрел на это и был сбит с толку: я имею в виду метод MAIN. Что такое «public static void main(String[] args)»? Что ж, я собираюсь разобрать это для всех новичков, изучающих Java, которые просто чувствуют потребность в знании, и для всех, кто смотрел на это и задавался тем же вопросом.

public
Первое слово строки довольно легко объяснить. «Общедоступный» в настройках Java — это специальное слово, которое указывает на доступность блока кода, с которым вы имеете дело. Что я имею в виду? Ну, это проще всего продемонстрировать с альтернативой public, которая является private.

Допустим, мы создаем отдельный класс объектов Java с именем Car и даем ему частную переменную с именем driver_keys, общедоступную переменную с именем driver_name и метод с именем change_keys. Конструктор может создавать ключи и имя для автомобиля.

class Car
{
  public String driver_name;
  private int driver_keys;

  public Car(String name, int k)
  {
    driver_name = name;
    driver_keys = k;
  }

  //ignore the static void here for now c:
  public static void change_keys(int k)
  {
    driver_keys = k;
  }
}

Теперь мы импортируем этот класс в наш основной класс (класс с main) и создаем экземпляр объекта Car. Теперь мы можем что-то делать, а что-то нет. Под этим я подразумеваю, допустим, мы хотим получить доступ и изменить имя_драйвера. Мы можем напрямую перейти к нашему объекту автомобиля, сделать .driver_name = «независимо», и бум, имя водителя этого автомобиля было изменено! Но что произойдет, если мы попытаемся сделать то же самое с driver_keys? Нам отказывают! Это потому, что public — это то, что позволяет другим сценариям и программам напрямую взаимодействовать с тем, что имеет префикс this! У нас даже могут быть приватные методы и классы, недоступные другим программам. Однако, если мы используем общедоступный метод change_keys(6), мы можем изменить ключи на 6 для этого объекта автомобиля. Это связано с тем, что change_keys является общедоступным методом, т. е. доступным за пределами программы автомобиля, то есть внутри программы автомобиля, и, таким образом, может изменить внутреннюю работу автомобиля.

Car Honda = new Car("Johnny Guitar", 12); //name , keys 
Honda.driver_name = "Celeby"; 
//^ This'll work! We can access it because it is public.

Honda.driver_keys = 17;
//This will NOT work, because driver_keys is a private variable.

Honda.change_keys(6);
//Now the value is set to 6 c:

Причина очень проста: безопасность и гарантия от несанкционированного доступа, а также улучшение махинаций программы. Сохраняя определенные переменные закрытыми, программисты могут быть уверены, что другие не возятся и не возятся с ними через соседние программы таким образом, что это либо ухудшит работу, либо непреднамеренным образом, и это поможет поддерживать определенный уровень безопасности внутри код.

static
Следующее ключевое слово, которое мы рассматриваем, — «static». Итак, что означает статика? Что оно делает? В частности, для функции main() она немного особенная, но она делает так, что виртуальная машина Java, механизм, который переводит наш код в 1 и 0 для любой машины, на которой мы находимся, может вызывать ее без необходимо создать экземпляр основного объекта. Это связано с тем, что статические методы просто не нужно создавать. Если бы у нас был импортированный объект класса Calculator с нестатической функцией суммирования, нам нужно было бы создать объект Calculator для выполнения этой функции. Однако, если у нас есть статическаяфункция суммы, нам не нужно создавать экземпляр объекта Calculator, мы можем просто вызвать Calculator.sum(numbers).

class Calculator
{
  //I explain this below! :)
  public static double PI;
  public static double e;

  public int normalSum(int a, int b) {/* code goes here */}
  //this would only be accessible if I created a calculator object!
  //meanwhile...
  
  public static int globalSum(int a, int b) {/* same code goes here */}
  //This method I could access by just calling Calculator.globalSum(a,b)
  //from main without ever having to instantiate the object itself!
}

Еще одна, возможно, более глубокая особенность статики заключается в том, что даже когда вы создаете несколько объектов, если они имеют статическую переменную, есть только 1 экземпляр этой статической переменной. между ними всеми. Допустим, для этого нам нужно объявить специальные числа PI и e, но мы не хотим объявлять их отдельно для каждого калькулятора, который мы делаем! Вместо этого мы делаем статическийдвойной PI и статическийдвойной e и присваиваем им их значение. . Это означает, что даже если у нас есть несколько калькуляторов, все они будут иметь статическую переменную PI в классе, а также статическую переменную e и любые другие пользовательские статические переменные. И мы можем получить доступ к PI и e без создания каких-либо объектов калькулятора. Это означает, что также очень важно, что изменение ЛЮБЫХ статических переменных изменит эту переменную для ВСЕХ объектов, которые ее используют! Очень мощный и очень полезный.

void
Void — это самое простое объяснение чего бы то ни было в Java: оно просто ничего не возвращает. Таким образом, он не возвращает ни целое число, ни строку, ни объект, ничего подобного в конце метода. Важно признать, что main() — это, в конце концов, метод, который компилятор специально распознает, поэтому вы можете думать о нем как о методе с ключевыми словами, если вы действительно этого хотите, который всегда вызывается родительской программой, независимо от того, какие другие методы может существовать и не быть там. И поэтому ему нужен возвращаемый тип. Но хватит об этом.

main
Это просто имя, которое было назначено для обозначения точки входа в программу, больше нечего об этом рассказывать!

(String[] args)
Теперь мы подошли к самой пикантной части, которая, по крайней мере, для меня, новичка в Java много лет назад, действительно сбила меня с толку и заставила задуматься. в то время как для правильного разбора. Сначала я разберу компоненты, а затем проследю за их назначением. Это заключено в круглые скобки функции main(), которая, как мы обсуждали, является методом. Это означает, что String[] args — это аргумент, вставленный в main(), который можно свободно использовать. String[] просто означает массив строк, а аргументы – это имя-заполнитель для любого аргумента, который будет вставлен как массив строк. Но это, очевидно, не решает самого главного вопроса: Как кто-то вообще передает эти аргументы в main? Какой в ​​этом смысл, если ты ничего не можешь для этого сделать?

И большое открытие: это для командной строки!

Ага! Суть параметров метода main в том, что массив строк можно передать в метод main прямо из командной строки. Причина разделения строки на массивы заключается в том, что компилятор может разделить переданные вами аргументы на отдельные слова для простоты обработки. Как видите, после того, как я запустил java _my_file.java, все, что после этого, — это просто еда на тарелке главного пользователя (например, массив строк). И вот каким простым должен быть код, чтобы сделать это самостоятельно!

public static void main(String[] args)
    {
        int i = 0;
//Enhanced for loop! You can do it with anything though!
        for(String word: args) 
            System.out.println((i++) + "th index word: " + word);
        // :)
    }

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

И это каждая часть метода main(), разбитая на кусочки! Наслаждаться.