2013-03-25 4 views
3
public class test 
{ 
    public static void main(String[] args) 
    { 
     int x = 5; 
     int y = 10; 
     multiply(x,y); 
    } 
    public static void multiply(int x, int y) 
    { 
     int z = x*y; 
     System.out.println(z); 
    } 
} 

Я новичок в программировании, и я смущен несколькими вещами.Какова цель пустоты?

  1. Почему правильно использовать пустоту? Я думал, что void используется, чтобы указать, что ничего не будет возвращено, но метод multiply возвращает z.

  2. Все программы требуют, чтобы у вас была точно «public static void main (String [] args)»? Какова цель основного метода и какие параметры «String [] args» означают? Будет ли программа работать, если основной метод был удален?

Thank you!

+0

String [] args - это массив строк, которые передаются через командную строку при вызове программы. В этом случае аргументы не используются, вы можете себе представить, используя вашу программу с чем-то вроде 'java myprogram.java 123 1 5 3' в командной строке. – dwjohnston

+0

Хороший вопрос, кстати. Я вспоминаю такие вещи, когда я начинал программировать. – dwjohnston

+0

Ответы ниже ответили на вопрос. Если это не займет слишком много времени, выберите наилучший ответ и нажмите галочку в ответ или иначе укажите, почему ответы не ответили на вопрос. –

ответ

6

Во-первых, метод умножения ничего не возвращает; он печатает продукт, но не возвращает никакого значения.

public static void multiply(int x, int y) 
    { 
     int z = x*y; 
     System.out.println(z); //may look like a return, but actually is a side-effect of the function. 
    } //there is no return inside this block 

Во-вторых, public static void main обеспечивает точку входа в вашу программу. Без этого вы не сможете запустить свою программу. Обратитесь к Java documentation за дополнительной информацией об использовании public static void main.

Здесь String[] args здесь означает, что он захватывает аргументы командной строки и сохраняет его как массив строк (см. Ту же ссылку, опубликованную выше, в том же разделе). Этот массив называется args внутри main метода (или то, что вы называете это. Oracle приводит argv в качестве альтернативного имени)

System.out.print говорит, что программа напечатает что-то на консоль, в то время как return является результатом метода. Например, если вы добавили print по всему методу для отладки (обычная практика), вы печатаете вещи во время работы программы, но это не влияет на то, что возвращает программа, или результат программы.

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

+0

Возможно, было бы хорошо упомянуть, что даже в методе void вы можете выдавать возврат, что приведет к завершению метода, но не даст никаких результатов. –

+0

Java-документ Oracle, похоже, не согласен. http://docs.oracle.com/javase/tutorial/java/javaOO/returnvalue.html –

+0

Бьюсь об заклад, вы не читали документацию, которую вы сами разместили, потому что она так говорит в первых абзацах «Любой метод, объявленный void, не возвращает значение. Он не должен содержать оператор return, но он может это сделать.В таком случае оператор возврата может использоваться для отделения от блока потока управления и выхода из метода и просто используется следующим образом: return; ". –

0

public означает, что метод виден и может быть вызван из других объектов других типов. Другие альтернативы являются частными, защищенными, пакетными и частными. Подробнее см. Здесь.

static означает, что метод связан с классом, а не с конкретным экземпляром (объектом) этого класса. Это означает, что вы можете вызвать статический метод, не создавая объект класса.

void означает, что метод не имеет возвращаемого значения. Если метод возвратил int, вы должны написать int вместо void.

Комбинация всех трех из них наиболее часто встречается в методе main, который будет включать большинство учебных пособий.

кредиты Марк Bayres

0

Почему правильно использовать пустоты? Я думал, что void используется, чтобы указать, что ничего не будет возвращено, но метод multiply возвращает z.

Нет

multiply метод не возвращает z. Тем не менее, вы правы, void фактически используется, чтобы указать, что ничего не будет возвращено.

Нужно ли всем программам, что у вас есть "public static void main (String [] args)"? Какова цель основного метода и какие параметры «String [] args» означают? Будет ли программа работать, если основной метод был удален?

да, все программы должны иметь main функцию, которая выглядит как public static void main(String[] args).

0

multiply() метод в вашем примере не возвращает значение z к вызывающему методу, скорее это выводит значение z (например, выводит на экран).

Как вы сказали, ключевое слово типа void означает, что метод не вернет значение. Подобные методы предназначены для «просто сделать что-то». В случае main() метод не вернет значение, потому что для его возврата нет вызывающего метода - именно там начинается ваша программа.

ОК, технически, этот последний комментарий не является точным; на самом деле можно вернуть основную прибыль в операционную систему или процесс, запускающий программу, но это не всегда необходимо делать - особенно для более простых консольных программ, подобных тем, которые вы будете писать, просто начинайте! :)

1
  1. Если метод не возвращает ничего, то указать его тип возвращаемого значения, как «пустота». Ваш метод умножения ничего не возвращает. Последняя строка - это оператор печати, который просто печатает значение своих аргументов на стандартном выходе. Если метод завершился линией «return z», то вы не сможете скомпилировать программу с типом возврата «void». Вам нужно будет изменить сигнатуру метода на public static int multiply (int x, int y).

  2. Все программы Java требуют публичного static void main (String [] args), если они должны быть исполняемыми. Это отправная точка любой исполняемой Java-программы. Вот что это означает:

a. public - основной метод может быть вызван из любого класса. main всегда должен быть общедоступным, потому что это метод, вызываемый операционной системой.

b. static - основной метод должен быть статическим, что означает, что операционной системе не нужно создавать объект класса, к которому он принадлежит. Он может назвать это без создания объекта.

c. void - основной метод ничего не возвращает (хотя он может выбросить исключение, которое улавливается операционной системой)

d. String [] args - при запуске программы вы можете передавать аргументы из командной строки. Например, если ваша программа называется «Выполнить», вы можете выполнить команду java Run 3 4. В этом случае аргументы будут переданы программе «Выполнить» в виде массива строк. У вас будет «3» в args [0] и «4» в args [1].

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

Я надеюсь, что это поможет.

0

Класс Void - это неиспользуемый класс, который содержит ссылку на объект класса, представляющий примитивный Java-тип void. , а метод Main - метод, в котором начинается выполнение любой Java-программы. Основная декларация методы выглядит так

государственного статического силы основного (арг String []) {}

метод является публичным, поскольку он будет доступен для виртуальной машины Java, чтобы начать выполнение программы.

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

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

Последний параметр - String args []. Это используется для обозначения того, что пользователь может выбрать ввод параметров в программу java в командной строке. Мы можем использовать как String [] args, так и String args []. Компилятор Java принимает обе формы.

0

Как и другие, метод умножения НЕ возвращает ничего. Другие ответы объяснили, почему это так.

Однако было бы полезно упомянуть, что, когда вы используете void, этот метод ничего не может вернуть. В противоположность этому, если вы установите метод для возврата чего-либо (не для void), вы должны вернуть этот тип значения.

Например:

public static void main(String[] args){ 

    int a; 
    a = returnInt(); 

}//End Method 

public static int returnInt(){ 

    int z = 5; 
    return z; 

}//End Method 

Основной метод не возвращает ничего, поэтому мы используем ничтожным. Метод returnInt возвращает целое число. Целое число, возвращаемое методом, равно z. В основном методе, где a = returnInt(); который устанавливает значение a в значение, возвращенное из returnInt(), в этом случае a будет равно 5.

Пробовал держать его простым, надеясь, что это имеет смысл.

Смежные вопросы