void在void中做了什么?

Ali*_*ice 8 java void

返回类型 - 方法返回的值的数据类型,如果方法未返回值,则返回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();


    }
}
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

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

Jon*_*eet 14

你的意思是tellItLikeItIs方法?是的,您必须指定void指定该方法返回任何内容.所有方法必须指定返回类型,即使它是void.

它肯定不会返回一个字符串 - 看,在任何地方都没有返回语句.为什么你觉得它不是一个真正明确的返回一个字符串.它正在向控制台打印字符串,但这与从方法中返回一个字符串不同.


Dhr*_*ruv 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是一种将计算作为"副作用"执行的方法的典型示例.