Java中的void是什么意思?

8
返回类型指方法返回的值的数据类型,如果该方法不返回任何值,则为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

我错过了什么?为什么这里有一个空白?它确实返回一个字符串吗?


Java中的所有方法必须具有一个返回类型。void告诉虚拟机该特定方法不会返回任何内容。 - user800014
他们选择了void,因为它与“null”相辅相成。我更喜欢他们使用“empty”(听起来很奇怪,但如果我们使用它20或30年,就不会觉得奇怪了)。 - corsiKa
你不能在这里删除void这个单词,因为语言的结构要求如此。方法的定义需要你指定返回类型;你必须在某个地方写下它。而这就在方法名的前面。 - MC Emperor
6个回答

15

你是指 tellItLikeItIs 方法吗?是的,你需要指定void来表明该方法不会返回任何内容。即使是void,所有的方法也必须要有返回类型。

它肯定不会返回字符串——看,没有任何返回语句。不太清楚为什么您认为它是返回字符串。它在控制台中打印字符串,但这与从方法中返回一个字符串并不相同。


9
如果没有 void,那么代码将无法运行的原因是 System.out.println(String string) 方法不会返回任何内容,只是将提供的参数打印到标准输出终端(在大多数情况下是电脑监视器)。当方法返回“nothing”时,您必须通过在其签名中放置 void 关键字来指定该问题。您可以在此处查看 System.out.println 的文档:http://download.oracle.com/javase/6/docs/api/java/io/PrintStream.html#println%28java.lang.String%29。更进一步地说,println 是执行“副作用”计算的经典示例的方法之一。

1

当返回类型为void时,您的方法不会返回任何内容。

再次查看您的代码:该方法中没有返回语句。您只是将内容打印到控制台并退出。


0

Void: void 是一种类型修饰符,表示主方法不返回任何值。所有方法的参数都声明在括号内。这里的 String args[] 声明了一个名为 args 的参数,它包含一个字符串类类型的对象数组。


0

Void不返回任何内容;它告诉编译器该方法没有返回值。


0

void 表示它不返回任何东西。它不会返回一个字符串,你可以将一个字符串写入 System.out 但你并没有返回一个。

即使你只是说它不返回任何东西,你也必须指定一个方法的返回值。

从技术上讲,他们本可以设计语言,使得如果你不写返回类型,则默认返回空值,但是让你明确地写出 void 有助于确保缺少返回值是有意而非偶然的。


当你说一个方法返回空但在控制台上打印输出时,它有何不同? - Rudra

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接