2011-02-07 2 views
6
public static void main(String arg[]) 

В приведенном выше заявлении, я могу использовать int массив вместо String массива? Что произойдет, если я не помещу ничего в скобки, т. Е. Если я использую пустую скобку?ява основной вопрос

ответ

2

Я не уверен, что вы подразумеваете под Int array, но нет, вы не можете. Подпись метода должна точно соответствовать public static void main(String[] args). Единственное, что вы можете изменить, это имя аргумента. Имя метода, тип аргумента, видимость (public vs private и т. Д.) - это то, что среда выполнения использует для поиска самого метода. Если он не соответствует этой сигнатуре, это не метод точки входа и, следовательно, не будет вызываться при запуске приложения.

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

+0

By int array, я имел в виду массив целых чисел. – pradeep

+0

@rajivpradeep, я понял, что вы имели в виду, но нет, вы не можете. Это должна быть строка []. когда вы думаете об этом, что имеет смысл. Массив параметров будет предоставлен оболочкой, и он не знает, как преобразовать строки в int. Все, что он понимает, это строки. Если вам нужен массив int, вы должны преобразовать его из String в Integer с помощью 'Integer.parseInt()' –

+0

Спасибо, Крис за ур ответ. Спасибо – pradeep

1

компилятор будет принимать, но среда выполнения даст вам NoSuchMethodError

5

При компиляции кода с изменениями, которые вы упомянули, он будет успешно скомпилируется. Когда вы пытаетесь запустить, JVM проверяет основной метод с массивом String как аргументы. Поскольку нет основного метода с массивом String в качестве аргумента, ваш код не будет успешно выполнен, и он выдает NoSuchMethodError.

2

Код будет скомпилирован, но не запущен.

Причина для строки [] заключается в том, чтобы люди могли передавать параметры через командную строку.

0

Основной метод - это точка входа для приложения java. Если вы посмотрите на java language specification, он определенно заявляет:

Метод главный должен быть объявлен общественности, статична, и пустота. Он должен принять один аргумент, который представляет собой массив строк . Этот метод может быть объявлен как либо

public static void main(String[] args) 

или

public static void main(String... args) 

Строка [] массив, переданный в содержит аргументы командной строки, которые были переданы в каком бы то ни запустил приложение. Затем вы можете прочитать их и преобразовать их по мере необходимости.

0

Если вы хотите, чтобы получить номера вместо строк, использовать этот подход

public static void main(String[] args) { 

    int[] numbers = new int[args.length]; 
    for(int i = 0; i < args.length; i++) numbers[i] = Integer.parseInt(args[i]); 

} 

Обработка исключений является упражнением для читателя.

Другие ответы хорошо объясняют ваши другие проблемы «почему».

3

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

public static void main(String[] args) 

public static void main(String args[]) 
0

Нет, он выдает ошибку во время выполнения, как Главный метод не нашел в тестовом классе, пожалуйста, определить основной метод, как: государственной статической силы основных (String [] арг)

JAVA конкретнее об основной сигнатуре метода. Он рассматривает ваш метод как общий метод в классе.

+0

Что это ответ по-другому по сравнению с другими ответами уже здесь? –