当前位置: 首页 > 面试题库 >

为什么没有必要将方法的返回值分配给变量?

韦睿
2023-03-14
问题内容

public class ReturnTest
{
public static void main(String[] args)
{
ReturnTest rt = new ReturnTest();
rt.show();
}

    public String show()
    {
        return "Hello";
    }
}

在上面的代码中,该show()方法返回一个String未被
任何变量捕获的值。编译器和JVM均不会引发任何警告,
错误或异常。对于原始返回类型也是如此。
为什么?

编译器不应该确保此方法
不会丢失任何重要值吗?

我该如何从外壳修复此问题?


问题答案:

这是语言的设计。

在许多情况下,方法返回的值是您不需要关心的。例如StringBuilder.append()返回对象本身。

的确,在某些情况下,重要的返回值可能会丢失。对于例如,InputStream.skip(long n)返回字节数跳过。并
read返回读取的字节数。有一些工具
(Checkstyle,FindBugs)可以检测到此类错误。但是语言本身并不要求检查返回值。即使这样做,程序也可以选择忽略该值。



 类似资料:
  • 问题内容: 我一直在使用IIFE中和,并一直在使用的结构如下: 方法1: 但是,我经常看到以下情况,其中将变量分配给 方法2: 注意: 此问题 不是 关于此模式是什么或IIFE是什么。这与为什么要 在IIFE上 使用返回变量及其与Angular实践的关系有关。 在Angular方法1中工作正常,但是在我看到的许多原始JS示例中,都使用了方法2。我的假设是,封装在其中的任何内容都可以通过它进行调用。

  • 问题内容: 浏览Java API源代码时,我经常看到方法参数已重新分配给局部变量。为什么要这样做? 这在java.util.HashMap中 问题答案: 这是线程安全性/更好性能的规则。在易失。如果将变量分配给局部变量,它将变为局部堆栈变量,该变量自动是线程安全的。而且,修改局部堆栈变量不会强制“先发生”,因此在使用它时不会产生同步损失(与之不同的是,每次读/写操作都会导致易失性,这会花费您获取/

  • 问题内容: 我有一个Python函数fooPy(),它返回一些值。(int / double或string) 我想使用此值并在shell脚本中分配它。例如,以下是python函数: 在shell脚本中,我尝试了以下操作,但是它们都不起作用。 问题答案: 您可以在Python中打印您的值,如下所示: 并在您的shell脚本中: 确保不要在shell脚本中的空格周围。

  • 问题内容: 在Go中,如何将函数调用返回的值分配给指针? 考虑下面的示例,注意返回一个值(不是指针): 这些都失败了: 是否确实需要局部变量?那不会招致不必要的复制吗? 问题答案: 根据规范,必须使用局部变量。 要获取值的地址,调用函数必须将返回值复制到可寻址的内存中。有副本,但这不是多余的。 Go程序通常使用值。 有时在应用程序想要区分无值和其他时间值的情况下使用A。在SQL NULL和有效时间

  • 问题内容: 我发现以下陈述: ](https://addyosmani.com/backbone-fundamentals/#getting-set-up) 另外,我读到:该属性等效于,并且等效于。在TodoView示例的render方法中,我们看到用于设置元素的HTML,并用于查找类“edit”的子元素。 问题答案: 和之间有什么区别? 该视图属性 可以从DOM选择器字符串或Element解析;

  • 问题内容: 有关语法的简单问题。为什么限制这样的表达式: 并只允许以下内容: ? 问题答案: 这是因为方法引用或lambda表达式的目标类型应该是功能接口。仅基于此,运行时将创建提供给定功能接口的实现的类的实例。将lambda或方法引用视为概念。将其分配给功能接口类型将赋予其具体含义。 此外,特定的lambda或方法引用可以具有多个功能接口作为其目标类型。例如,考虑以下lamda: 这个lambd