Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中,返回语句可以出现在哪里?_Java_Return Value_Return - Fatal编程技术网

在Java中,返回语句可以出现在哪里?

在Java中,返回语句可以出现在哪里?,java,return-value,return,Java,Return Value,Return,除了在方法/构造函数体中之外 还有,构造函数是否可以返回某些内容?或者我可以只使用“return;”而不在其后使用任何表达式吗?您可以在返回类型为void的方法中使用return而不带值。在其他方法中,这是不可能的 比如说 public void test(String s) { if (s.equals("")) { return; } } 构造函数不应该在其主体中包含return语句,因为根据定义,构造函数没有返回类型 编辑:

除了在方法/构造函数体中之外


还有,构造函数是否可以返回某些内容?或者我可以只使用“
return;
”而不在其后使用任何表达式吗?

您可以在返回类型为void的方法中使用return而不带值。在其他方法中,这是不可能的

比如说

    public void test(String s) {
       if (s.equals("")) {
          return;
       }
    }
构造函数不应该在其主体中包含return语句,因为根据定义,构造函数没有返回类型


编辑:正如Jon Skeet指出的,构造函数可以有没有值的return语句,但在大多数情况下这是不使用的。

return
语句可以出现在方法或构造函数中的任何地方

return后面应该跟方法的返回类型兼容的值。若方法为void,则返回不返回任何内容


构造函数根本没有返回类型(根据定义)。因此,如果您将return语句写入构造函数,那么它后面不应该有任何值。

我不确定可以在哪里使用return语句(或者规范确切说明了什么)。它们在方法中最常用于返回值(或结束没有返回值的方法)

构造函数不能返回任何值。调用构造函数将让VM为您正在创建的对象的大小分配内存,然后调用对象中的相应构造函数,这与调用方法的过程不同。可以使用return语句,但不能从构造函数本身返回任何值

为了从构造函数“返回”信息(更恰当地说,指出构造过程中出现了错误),可以使用异常

在Java中,返回语句可以出现在哪里?除了在方法/构造函数体中之外

仅在构造函数或方法中:

JLS-

return语句将控制权返回给方法(§8.4,§15.12)或构造函数(§8.8,§15.9)的调用方


还有,构造函数是否可以返回某些内容

没有

JLS-

带有表达式的返回语句必须包含在方法声明中,该声明声明声明返回值(§8.4),否则会发生编译时错误


或者我只能使用“return;”而后面没有任何表达式

JLS-

不带表达式的返回语句必须包含在使用关键字void声明的方法体中,以不返回任何值(§8.4)、或构造函数体中(§8.8)


这一问题以及其他许多语言律师问题的真相来源是,在本案中:

return语句将控制权返回给方法调用方(§8.4,§15.12)或构造函数(§8.8,§15.9)

返回语句:
返回表达式PT

不带表达式的return语句必须包含在使用关键字void声明的方法体中,以不返回任何值(§8.4),或包含在构造函数体中(§8.8)。如果实例初始值设定项或静态初始值设定项中出现return语句,则会发生编译时错误(§8.7)。不带表达式的return语句尝试将控制传递给包含它的方法或构造函数的调用方

准确地说,没有表达式的return语句总是突然完成,原因是没有值的return语句


请注意,这明确地要求您可以在构造函数中使用return语句,但它确实将其限制为构造函数和方法。

我更喜欢在方法中只有一个return语句,而在构造函数中没有return语句。与此最佳实践相比,多接受一个缩进级别通常是一件微不足道的事情。它通常使代码更具可读性。如果我有一个局部变量作为最终返回的值,它通常会让我有可能将该变量声明为final,这样我就可以绝对确保该变量只被赋值一次。这通常会让您了解算法的实际复杂性。然而,我确实利用了在一个方法中有几个throws语句。另外,我更喜欢合同设计,在方法开始时检查先决条件,并在javadoc中说明。

您具体在做什么?你问了一些奇怪的“语言法”问题,这让我很好奇:-)因为前几天我误解了其中一个,所以我不会被吸引去回答另一个问题只是在试验这种语言。看看什么是可能的,什么是不可能的。:)@biziclop-在我看来,最好给出一个“无关”的答案,而不是根本不回答,因为“无关”的答案可能会得到正确的答案,但“不回答”永远不会随时可以错误地回答我的问题。我从不投反对票,你不投。但我被弄得像个白痴,只是因为我不相信我读的东西确实是问题所在没有冒犯的意思,当然我会尝试回答问题,我只是需要更加谨慎。你可以在构造函数中使用return语句,没有问题。出于“提前退出”的原因,这样做是完全合理的,尽管相对较少。这就是为什么构造函数一般不应该有返回语句,但可以有;)JLS确实是第一个应该咨询的地方+1有趣的是,由于
return
完成得很突然,如果将
return
放入
finally
块中,则从相应的
try
块中抛出的任何异常或返回的值都将消失而不留痕迹。@biziclop:interest。。。这似乎是一种“消除”异常的快速方法。“我必须试一下。”约翰·阿塞姆普托斯在实践中恰恰相反。如果你