Java 为什么main()方法没有';t抛出形式参数和实际参数不匹配错误?

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+

为什么java中的main()函数即使不涉及从命令行获取输入,也不会抛出“实际参数和形式参数不匹配错误”。这是一个示例程序,其中near()函数具有相同数量的实际参数和形式参数,并且编译时没有任何错误,而far()函数方法抛出一个参数不匹配错误,因为我在调用它时没有给出任何参数

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无法找到程序的入口点