【问题标题】:What is the use of return statement in a void function [closed]void函数中return语句的用途是什么[关闭]
【发布时间】:2012-12-09 15:20:58
【问题描述】:

我是 java 新手,return; 是什么意思?像break 吗?

  public void run() {
            if(imageViewReused(photoToLoad))
                return;
            Bitmap bmp=getBitmap(photoToLoad.url);
            memoryCache.put(photoToLoad.url, bmp);
            if(imageViewReused(photoToLoad))
                return;
            BitmapDisplayer bd=new BitmapDisplayer(bmp, photoToLoad);
            Activity a=(Activity)photoToLoad.imageView.getContext();
            a.runOnUiThread(bd);
        }

如果第二个imageViewReused(photoToLoad) 返回true,BitmapDisplayer bd=new BitmapDisplayer(bmp, photoToLoad) 将不会被执行,对吧?

【问题讨论】:

  • 请去阅读一个基本的(并且免费的)java教程...
  • 只是我的编辑评论,但应避免从 void 方法中断和返回:它们通常是糟糕的代码设计。通常可以避免它们,在上面的示例中,您可以执行 if(!imaveViewReused(photoToLoad)) { ... } 之类的操作。

标签: java android return


【解决方案1】:

是的,你可以像休息一样使用它。

【讨论】:

    【解决方案2】:

    是的,return 正在中断您对同一块的下一次执行。

    更多关于returncheck this的信息

    【讨论】:

    • “是的,return 与 java 中的 break 相同” - 这根本不是真的。它们在某种意义上是相似的,但它们绝对不一样。
    【解决方案3】:

    一个函数的执行已经完成,当它涉及到 return 语句,然后它返回到它的调用代码。在你的情况下,

    如果imageViewReused(photoToLoad) 为真,那么return 之后的代码块将不会被执行。

    【讨论】:

      【解决方案4】:

      【讨论】:

      • 你可以解释它......即使是简短的!
      • void with return 语句是特例,只是为了终止执行并返回给调用者,最好你想象他留下了基础知识可能认为这只是一个特例
      【解决方案5】:

      是的,有相似之处,但也有不同

      • break - 将停止循环并切换条件。只能用于 switch 和 loop 语句
      • return - 将完成函数执行,但不会执行此关键字下面的语句。只能用于任何功能。

      return关键字在void函数中的使用

      如果你在这样的 void 函数中使用 return

      void trySomething()
      {
        Log.i("Try", "something");
      
        return;
        Log.e("Try", "something"); 
      }
      

      这个函数的执行完成了,但是下面的语句将不会被执行。

      使用 break 关键字

      对于任何循环语句

      void tryLoop()
      {
         while(true)
         {
            Log.d("Loop", "Spamming! Yeah!");
            break;
         }
      }
      

      循环将停止并继续该函数的剩余语句

      切换条件

      void trySwitch()
      { 
         int choice = 1;
         switch(choice)
         {
            case 0:
              Log.d("Choice", "is 0");
              break;
            case 1:
              Log.d("Choice", "is 1");
            case 2:
              Log.d("Choice", "is 2");
         }
      }
      

      在切换条件中使用break 也与循环相同。省略break 将继续切换条件。

      【讨论】:

        【解决方案6】:

        这里的 return 充当函数的结尾。 您可以通过将代码更改为来避免它,

         public void run() {
                if(!imageViewReused(photoToLoad))
                {
                  Bitmap bmp=getBitmap(photoToLoad.url);
                  memoryCache.put(photoToLoad.url, bmp);
                  if(!imageViewReused(photoToLoad))
                  {
                    BitmapDisplayer bd=new BitmapDisplayer(bmp, photoToLoad);
                    Activity a=(Activity)photoToLoad.imageView.getContext();
                    a.runOnUiThread(bd);
                  }
            }
        

        【讨论】:

          【解决方案7】:

          return 结束调用它时出现的方法的执行。对于 void 方法,它只是退出方法体。对于非 void 方法,它实际上返回一个值(即return X)。请注意try-finally:请记住,即使您在try 块中return 也会执行finally block

          public static void foo() {
              try {
                  return;
              } finally {
                  System.out.println("foo");
              }
          }
          
          // run foo in main
          

          This 是了解更多有关return 的良好参考。


          是不是像break

          从某种意义上说,这两个语句都“结束”了一个正在运行的进程; return 结束一个方法,break 结束一个循环。不过,重要的是要了解两者之间的区别以及何时应该使用它们。

          如果第二个imageViewReused(photoToLoad)返回trueBitmapDisplayer bd=new BitmapDisplayer(bmp, photoToLoad)就不会被执行,对吧?

          正确 - 如果该 if-statement 的主体被执行并且不会到达后续语句,则该方法将“return”。

          【讨论】:

            猜你喜欢
            • 2021-09-17
            • 2017-12-04
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2014-01-02
            • 1970-01-01
            • 2011-06-23
            相关资源
            最近更新 更多