Это на наших лицах, и временами кажется чем угодно, но каждый, кто касался 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(), разбитая на кусочки! Наслаждаться.