Что делает void в Java? - PullRequest
       16

Что делает void в Java?

8 голосов
/ 10 сентября 2011

Тип возврата - тип данных значения, возвращаемого методом, или void, если метод не возвращает значение.

http://download.oracle.com/javase/tutorial/java/javaOO/methods.html

Хорошо, тогда .. Вот мой вопрос:

public class EnumTest {
    Day day;

    public EnumTest(Day day) {
        this.day = day;
    }

    public void tellItLikeItIs() {
        switch (day) {
            case MONDAY: System.out.println("Mondays are bad.");
                         break;

            case FRIDAY: System.out.println("Fridays are better.");
                         break;

            case SATURDAY:
            case SUNDAY: System.out.println("Weekends are best.");
                         break;

            default:     System.out.println("Midweek days are so-so.");
                         break;
        }
    }

    public static void main(String[] args) {
        EnumTest firstDay = new EnumTest(Day.MONDAY);
        firstDay.tellItLikeItIs();
        EnumTest thirdDay = new EnumTest(Day.WEDNESDAY);
        thirdDay.tellItLikeItIs();
        EnumTest fifthDay = new EnumTest(Day.FRIDAY);
        fifthDay.tellItLikeItIs();
        EnumTest sixthDay = new EnumTest(Day.SATURDAY);
        sixthDay.tellItLikeItIs();
        EnumTest seventhDay = new EnumTest(Day.SUNDAY);
        seventhDay.tellItLikeItIs();


    }
}

http://download.oracle.com/javase/tutorial/java/javaOO/enum.html

Приведенный выше код не работает без void.

Exception in thread "main" java.lang.Error: Unresolved compilation problems: 
    The method tellItLikeItIs() is undefined for the type EnumTest

Что я пропустилиз?Почему там пустота?И он возвращает строку?

Ответы [ 6 ]

14 голосов
/ 10 сентября 2011

Вы имеете в виду метод tellItLikeItIs? Да, вы должны указать void, чтобы указать, что метод не ничего не возвращает. Все методы имеют для указания типа возвращаемого значения, даже если это void.

Это определенно не возвращает строку - смотрите, нигде нет операторов возврата. Не совсем понятно, почему вы думаете, возвращает строку. выводит на консоль строки, но это не то же самое, что возвращать один из метода.

9 голосов
/ 10 сентября 2011

Причина, по которой код не будет работать без void, заключается в том, что метод System.out.println(String string) ничего не возвращает и просто печатает предоставленные аргументы на стандартный выходной терминал, который в большинстве случаев является монитором компьютера.Когда метод возвращает «ничто», вы должны указать это, поместив ключевое слово void в его подпись.

Документацию по System.out.println можно посмотреть здесь:

http://download.oracle.com/javase/6/docs/api/java/io/PrintStream.html#println%28java.lang.String%29

Для дальнейшего решения проблемы println является классическим примером метода, который выполняет вычисления как «побочный эффект».

0 голосов
/ 24 декабря 2015

Void: модификатор типа void утверждает, что метод main не возвращает никакого значения. Все параметры метода объявлены в скобках. Здесь String args [] объявляет параметр с именем args, который содержит массив объектов строки типа класса.

0 голосов
/ 10 сентября 2011

Когда тип возвращаемого значения void, ваш метод ничего не возвращает.

Посмотрите еще раз на ваш код: в этом методе нет возврата. Вы печатаете на консоль и выходите.

0 голосов
/ 10 сентября 2011

void означает, что ничего не возвращается.Он не возвращает строку, вы записываете строку в System.out, но не возвращаете ее.

Вы должны указать, что возвращает метод, даже если вы просто говорите, что он ничего не возвращает.

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

0 голосов
/ 10 сентября 2011

Void ничего не возвращает; он сообщает компилятору, что метод не имеет возвращаемого значения.

...