3
public class test
{
    public static void main(String[] args)
    {
        int x = 5;
        int y = 10;
        multiply(x,y);
    }
    public static void multiply(int x, int y)
    {
        int z = x*y;
        System.out.println(z);
    }
}

我是编程新手,对一些事情感到困惑。

  1. 为什么使用 void 是正确的?我认为使用 void 是为了指定不会返回任何内容,但是乘法方法返回 z。

  2. 是否所有程序都要求您完全具有“public static void main(String[] args)”?main 方法的目的到底是什么,参数“String[] args”是什么意思?如果 main 方法被删除,程序会工作吗?

谢谢你!

4

8 回答 8

7

首先,multiply 方法不返回任何内容;它打印产品,但不返回任何值。

public static void multiply(int x, int y)
    {
        int z = x*y;
        System.out.println(z); //may look like a return, but actually is a side-effect of the function.
    } //there is no return inside this block

其次,public static void main为您的程序提供一个入口点。没有它,您将无法运行您的程序。有关. _ _public static void main

这里的String[] args意思是它捕获命令行参数并将其存储为字符串数组(请参阅上面发布的同一链接,在同一部分中)。这个数组args在你的main方法中被调用(或者你叫它的任何其他东西。Oracle 引用argv作为备用名称)

System.out.print告诉程序打印一些东西到控制台,whilereturn是方法的结果。例如,如果您在print整个方法中添加了调试(一种常见做法),您会在程序运行时打印内容,但这不会影响程序返回的内容或程序的结果。

想象一个数学问题——你将你的工作“打印”到纸上的每一步,但结果——“答案”——是你最终返回的。

于 2013-03-25T03:37:52.063 回答
2
  1. 当一个方法没有返回任何东西时,你将它的返回类型指定为“void”。您的乘法方法没有返回任何内容。它的最后一行是一个打印语句,它只是在标准输出上打印其参数的值。如果该方法以“return z”行结束,那么您将无法编译具有“void”返回类型的程序。您需要将方法签名更改为 public static int multiply(int x, int y)。

  2. 所有 Java 程序都需要 public static void main(String[] args) 如果它们是可执行的。它是任何可运行 Java 程序的起点。这就是它的意思:

一个。public - 可以从任何类调用 main 方法。main 应该始终是公共的,因为它是操作系统调用的方法。

湾。static - main 方法应该是静态的,这意味着操作系统不需要形成它所属类的对象。它可以在不创建对象的情况下调用它。

C。void - main 方法不返回任何东西(尽管它可能会抛出一个被操作系统捕获的异常)

d。String[] args - 当你运行程序时,你可以从命令行传递参数。例如,如果您的程序名为 Run,您可以执行命令 java Run 3 4。在这种情况下,参数将以字符串数组的形式传递给程序 Run。您将在 args[0] 中有“3”,在 args[1] 中有“4”。

也就是说,你可以有一个没有 main 的 Java 程序,它不能运行。

我希望这会有所帮助。

于 2013-03-25T03:44:38.333 回答
1

就像其他人说的那样,乘法方法不返回任何东西。其他答案解释了为什么会这样。

但是,提及当您使用 void 时,该方法不能返回任何内容也会有所帮助。相反,如果您将方法设置为返回任何内容(而不是 void),则需要返回该类型的值。

例如:

public static void main(String[] args){

    int a;
    a = returnInt();

}//End Method

public static int returnInt(){

    int z = 5;
    return z;

}//End Method

main 方法不返回任何内容,这就是我们使用 void 的原因。returnInt 方法返回一个整数。该方法返回的整数是 z。在 main 方法中 a = returnInt(); 将 a 的值设置为从 returnInt() 返回的值,在这种情况下,a 将等于 5。

试图保持简单,希望它有意义。

于 2013-03-25T05:17:09.400 回答
1

为什么使用 void 是正确的?我认为使用 void 是为了指定不会返回任何内容,但是乘法方法返回 z。

multiply方法不返回z。但是,你是void对的,实际上是用来指定什么都不返回。

是否所有程序都要求您完全具有“public static void main(String[] args)”?main 方法的目的到底是什么,参数“String[] args”是什么意思?如果 main 方法被删除,程序会工作吗?

是的,所有程序都必须有一个main看起来像public static void main(String[] args).

于 2013-03-25T03:40:03.840 回答
0

void 类是一个不可实例化的类,它包含对表示基本 Java 类型 void 的 Class 对象的引用。Main 方法是开始执行任何 java 程序的方法。主方法声明如下所示

公共静态无效主要(字符串参数[]){}

该方法是公共的,因为 JVM 可以访问它来开始执行程序。

它是静态的,因为它可以在没有对象实例的情况下执行。你可能知道你需要一个对象实例来调用任何方法。因此,如果 main 方法不是静态的,则无法在没有对象的情况下开始执行类。

它只返回一个 void,因为一旦主方法执行结束,程序就会终止。所以不能有Main方法可以返回的数据

最后一个参数是 String args[]。这用于表示用户可以选择在命令行中向 java 程序输入参数。我们可以同时使用 String[] args 或 String args[]。Java 编译器将接受这两种形式。

于 2013-03-25T04:02:15.023 回答
0

public表示该方法是可见的,并且可以从其他类型的其他对象中调用。其他替代方案是私有的、受保护的、包的和包私有的。有关更多详细信息,请参见此处。

static意味着该方法与类相关联,而不是与该类的特定实例(对象)相关联。这意味着您可以在不创建类的对象的情况下调用静态方法。

void表示该方法没有返回值。如果该方法返回 anint你会写 int 而不是void.

这三者的组合最常见于main大多数教程将包含的方法。

归功于马克·拜尔斯

于 2013-03-25T03:39:59.353 回答
0

您示例中的multiply()方法不会将值返回z给调用方法,而是输出z(例如,将其打印到屏幕上)。

如您所说,voidtype 关键字意味着该方法不会返回值。像这样的方法旨在“只是做某事”。在 的情况下main(),该方法将不会返回值,因为没有调用方法可以将其返回到 - 这就是您的程序开始的地方。

好的,从技术上讲,最后的评论是不准确的;实际上可以让你的 main 向启动程序的操作系统或进程返回一个值,但并不总是需要这样做——尤其是对于更简单的基于控制台的程序,比如你将在你编写时编写的那些程序。刚刚开始!:)

于 2013-03-25T03:44:21.727 回答
0

为什么使用 void 是正确的?我认为使用 void 是为了指定不会返回任何内容,但是乘法方法返回 z。

您的multiply方法是正确的,void因为它什么都不返回,它只是打印到控制台。
返回某些东西意味着将结果提供给程序以供进一步计算。

例如,您返回结果的方法如下所示:

public static int multiply(int x, int y)
{
    int z = x*y;            //multipling x and y
    System.out.println(z);  //printing the restult to the console
    return z;               //returning the result to the programm
}

这种“新”方法可以像这样使用,例如:

public static void main(String[] args)
{
    int x = 5;
    int y = 10;
    int result = multiply(x,y);  //storing the returnen value of multiply in result 
    int a = result + 2;          //adding 2 to the result and storing it in a
    System.out.println(a);       //printing a to the console
}

输出:
50
52

是否所有程序都要求您完全具有“public static void main(String[] args)”?main 方法的目的到底是什么,参数“String[] args”是什么意思?如果 main 方法被删除,程序会工作吗?

此方法为您的程序设置了一个起点。这意味着执行程序的第一件事就是这个方法,删除它会使程序无法运行。
String[] args代表您可以在从操作系统启动之前给您的程序的命令行参数(例如,OS = Windows)所有单词的确切用途在此处的其他答案中得到了很好的解释。

于 2018-07-25T18:06:43.930 回答