use*_*378 -3 java methods static static-methods
我正在努力学习Java.
我不明白为什么这段代码不起作用.
它不会Hello World从test()函数输出" " .
我究竟做错了什么?
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)