Java 为什么main()方法没有';t抛出形式参数和实际参数不匹配错误?
为什么java中的main()函数即使不涉及从命令行获取输入,也不会抛出“实际参数和形式参数不匹配错误”。这是一个示例程序,其中near()函数具有相同数量的实际参数和形式参数,并且编译时没有任何错误,而far()函数方法抛出一个参数不匹配错误,因为我在调用它时没有给出任何参数Java 为什么main()方法没有';t抛出形式参数和实际参数不匹配错误?,java,Java,为什么java中的main()函数即使不涉及从命令行获取输入,也不会抛出“实际参数和形式参数不匹配错误”。这是一个示例程序,其中near()函数具有相同数量的实际参数和形式参数,并且编译时没有任何错误,而far()函数方法抛出一个参数不匹配错误,因为我在调用它时没有给出任何参数 import java.util.Scanner; import java.io.*; class Prime { void near(int x,int y) { System.out.println(x+
import java.util.Scanner;
import java.io.*;
class Prime
{
void near(int x,int y)
{
System.out.println(x+y);
}
void far(int a,int b)
{
System.out.println(a+b);
}
public static void main(String args[])
{
Prime n=new Prime();
n.near(5,4);
n.far();
}
}
C:\Users\hcl\Desktop>javac Prime.java
C:\Users\hcl\Desktop>javac Prime.java
Prime.java:20: error: method far in class Prime cannot be applied to given types
;
n.far();
^
required: int,int
found: no arguments
reason: actual and formal argument lists differ in length
1 error
main
方法将获取一个空的字符串[]
作为输入。因为这就是输入:没有
你的函数far
需要输入,所以你必须给它输入
看
参数永远不能为null。他们根本不存在-jjnguy
例如,如果在没有命令行参数的情况下运行,您将看到以下注释:
public static void main(String[] args){
if(args.length == 0){
//there is no command line input, but args still exists
}
}
main
方法将获取一个空的字符串[]
作为输入。因为这就是输入:没有
你的函数far
需要输入,所以你必须给它输入
看
参数永远不能为null。他们根本不存在-jjnguy
例如,如果在没有命令行参数的情况下运行,您将看到以下注释:
public static void main(String[] args){
if(args.length == 0){
//there is no command line input, but args still exists
}
}
首先,您混淆了运行时错误和编译时错误 您显示的错误未被“抛出”。这是一个编译错误,表明代码中有错误的方法调用 但是在任何Java代码中通常都没有调用
main
main
是程序的起点,JVM本身在运行时调用它。当源代码中没有方法调用时,将不会得到与该调用相关的编译错误
其次,当JVM调用该方法时,它总是向它传递一个字符串数组。如果命令行上没有参数,字符串数组将为空。您可以编写一个示例main
,用于打印数组的长度并亲自查看
最后,如果您没有一个完全按照规范指定的
main
方法(publicstaticvoid
,只有一个String[]
类型的参数),JVM将在您尝试调用程序时发出错误。因此,如果您尝试使用两个参数或类型为int[]
或类似的参数编写main
,您将得到一个错误。这不会是编译错误,因为在程序中使用这种方法是完全合法的。但这将是一个运行时错误——因为JVM无法找到程序的入口点。首先,您混淆了运行时错误和编译时错误
您显示的错误未被“抛出”。这是一个编译错误,表明代码中有错误的方法调用
但是在任何Java代码中通常都没有调用main
main
是程序的起点,JVM本身在运行时调用它。当源代码中没有方法调用时,将不会得到与该调用相关的编译错误
其次,当JVM调用该方法时,它总是向它传递一个字符串数组。如果命令行上没有参数,字符串数组将为空。您可以编写一个示例main
,用于打印数组的长度并亲自查看
最后,如果您没有一个完全按照规范指定的main
方法(publicstaticvoid
,只有一个String[]
类型的参数),JVM将在您尝试调用程序时发出错误。因此,如果您尝试使用两个参数或类型为int[]
或类似的参数编写main
,您将得到一个错误。这不会是编译错误,因为在程序中使用这种方法是完全合法的。但这将是一个运行时错误,因为JVM无法找到程序的入口点