void函数中的return语句有什么用[关闭]

问题描述 投票:0回答:7

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 android return
7个回答
5
投票

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

  • break
    - 将停止循环并切换条件。只能用于 switch 和循环语句
  • 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
将继续切换条件。


1
投票

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


1
投票

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

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

// run foo in main

是了解更多关于

return
的很好的参考。


是不是像

break

从某种意义上说,这两个语句都“结束”了一个正在运行的进程;

return
结束方法,
break
结束循环。尽管如此,了解两者之间的差异以及何时应使用它们非常重要。

如果第二个

imageViewReused(photoToLoad)
返回
true
BitmapDisplayer bd=new BitmapDisplayer(bmp, photoToLoad)
就不会被执行,对吧?

正确 - 如果执行该

return
语句的主体并且不会到达后续语句,则该方法将“
if
”。


1
投票

是的,

return
会破坏您下一次执行同一块。

了解更多信息

return
查看此


0
投票

函数执行到return语句时就结束了,然后返回到调用代码。就你而言,

如果

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


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);
          }
    }

-1
投票

Return 语句会跳过函数作用域的剩余执行。

值得一读:

  1. return
    http://docs.oracle.com/javase/tutorial/java/javaOO/returnvalue.html
  2. break
    http://docs.oracle.com/javase/tutorial/java/nutsandbolts/branch.html
© www.soinside.com 2019 - 2024. All rights reserved.