3

我是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)则不会执行,对吗?

4

7 回答 7

5

是的,有相似之处,但也有区别

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

void函数中关键字的使用return

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

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将继续切换条件。

于 2012-12-22T06:32:27.520 回答
1

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

于 2012-12-22T05:44:35.377 回答
1

是的,return是打破你对同一块的下一次执行。

有关return 检查此的更多信息

于 2012-12-22T05:46:58.513 回答
1

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

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

// run foo in main

是了解更多关于return.


是这样的break吗?

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

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

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

于 2012-12-22T10:41:23.563 回答
0

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

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

于 2012-12-22T05:54:24.347 回答
0

这里 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);
          }
    }
于 2012-12-22T10:18:42.000 回答
-1

Return 语句跳过函数范围的剩余执行。

值得一读:

  1. returnhttp ://docs.oracle.com/javase/tutorial/java/javaOO/returnvalue.html
  2. breakhttp ://docs.oracle.com/javase/tutorial/java/nutsandbolts/branch.html
于 2012-12-22T06:23:37.960 回答