java初学者"Hello World"

use*_*378 -3 java methods static static-methods

我正在努力学习Java.

我不明白为什么这段代码不起作用.

它不会Hello Worldtest()函数输出" " .

我究竟做错了什么?

public class Main {

    public test(args) {
        System.out.println(args);
    }

    public static void main(String[] args) {
        test('Hello World');
    }
}
Run Code Online (Sandbox Code Playgroud)

Mic*_*rry 15

首先:

public test(args) {
    System.out.println(args);
}
Run Code Online (Sandbox Code Playgroud)

你需要一个带参数的类型 - Java是一种强类型语言,因此你总是需要指定一个类型.至于这里的类型,System.out.println()实际上可以采取任何东西,所以你可以将类型设置为String,Object或任何你喜欢的东西(因为Object有一个toString()方法,它有很多重载来处理所有的原语.)记住这是不寻常的,但是你遇到的大部分方法都只是采取特定类型的东西!

既然你只是在这里调用main方法的test,而你正在向它传递一个字符串,你也可以将args的类型设置为String.

第二个问题是没有指定返回类型.您始终需要指定返回类型,在这种情况下,不会返回任何内容,因此类型为void.如果你不这样做,那么编译器无法知道你所写的是一个方法还是一个构造函数.

第三个问题是test是一个实例方法,但你是静态调用它.test()也需要是静态的,否则它属于Main的实例,而不属于Main类.为什么这很重要?好吧,可能有数千个Main实例,那么该方法应该运行什么实例?编译器无法知道.

下一个:

public static void main(String[] args) {
    test('Hello World');
}
Run Code Online (Sandbox Code Playgroud)

你在这里传递一个字符串,需要用双引号.Java以不同的方式处理引号,单引号用于单字符文字,双引号用于字符串.所以你永远不能把这个字符串用这样的单引号括起来,它必须加倍.

把它们放在一起:

public class Main {

    public static void test(String args) { //Add return type and parameter type, make test static
        System.out.println(args);
    }

    public static void main(String[] args) {
        test("Hello World"); //Change single quotes to double quotes
    }
}
Run Code Online (Sandbox Code Playgroud)