有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java将赋值结果返回给局部变量而不是直接返回值有什么好处吗?

我正在进行java代码检查。下面是一个函数(代码段):

String getValue() {
     String res;
     StringBuilder strBuilder = new StringBuilder();

     // More code here that sets strBuilder

     return res = strBuilder.toString();
}

首先有一个警告,表示未使用res的值。第二,我不理解回报。他们为什么不干脆return( strBuilder.toString() )。有什么好处吗


共 (6) 个答案

  1. # 1 楼答案

    只是猜测,但有些(大多数?)IDE不允许您直接检查函数返回值。使用此方案,您可以在方法的末尾放置一个断点,并将鼠标悬停在“res”上以获取返回值

  2. # 2 楼答案

    你也做不到

    String res = strBuilder.toString();
    return res ;
    

    或者直接,

    return strBuilder.toString();
    

    现在,如果你想知道你问的好处,我总是喜欢直接返回。我个人的逻辑很简单

    • 你要少写一行代码!!!(到处声明变量对我来说不是一种好感觉,而且你也不必考虑变量的名称、冲突等……这些愚蠢的事情)
    • 该值将不会存储在内存中,并等待GC收集该值。因此,内存越少,请参见
    • 快速写入变量,然后从中读取并返回。。。。。更多的读/写,不是吗

    这些事情没什么大不了的,我不得不按你的要求说

  3. # 3 楼答案

    你完全正确;分配给res没有意义return bs.toString();也会这样做


    不忽略编译器警告的p.S.+1

  4. # 4 楼答案

    res未使用,因此没有理由这样返回。您可以删除它:

    String getValue() {
         StringBuilder bs = new StringBuilder();
         //
         // More code here that sets sb
    
         return bs.toString();
    }
    
  5. # 5 楼答案

    也可以写成:

    String getValue() {
        return new StringBuilder().toString();
    }
    
  6. # 6 楼答案

    这种代码有时可能是由于调试工件的不完全删除而导致的:

    String getValue() {
    
         String res;
         StringBuilder bs = new StringBuilder();
         //
         // More code here that sets sb
    
         res = bs.toString();
         // Test and/or display res here
         return res; 
    }
    

    它显然是下一轮重构和清理的一个很好的候选者