2012-12-22 69 views
3

我是新來的java,return;是什麼意思?是不是像breakvoid函數中返回語句的用法

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

請去閱讀一個基本的(免費提供的)java教程... –

+0

http://stackoverflow.com/questions/744676/what-does-a-return-key-word-do-in-a- void-method-in-java – kosa

+0

只是我的編輯評論,但應該避免從無效方法中斷並返回:它們通常是糟糕的代碼設計。通常他們可以避免,在上面的例子中,你可以做一些事情,如if(!imaveViewReused(photoToLoad)){...}。 –

回答

1

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

1

是的,return是打破你的下一個同一塊的執行。

,瞭解更多有關returncheck this

+0

*「是的,'return'與java中的'break'相同」* - 這根本不是真的。它們在某種意義上是相似的,但它們絕對不一樣。 – arshajii

0

函數的執行完畢,當它涉及到return語句,然後返回到它的調用代碼。在你的情況下,

如果imageViewReused(photoToLoad)爲真,那麼在return之後的代碼塊將不會被執行。

5

是有類似性,但也有區別

  • break - 將停止循環並切換條件。只能用於開關和循環語句
  • return - 將完成功能執行,但不會執行此關鍵字下面的語句。只能用於任何功能。

用法空隙功能return關鍵字的

如果你在一個空函數使用return這樣

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

    return; 
    Log.e("Try", "something"); 
} 

這個函數的執行完成,但聲明(S )不會被執行。用法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將繼續切換條件。

0

這裏返回作爲函數的結束。 你可以通過改變你的代碼,避免它,

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結束在它被調用時出現的方法的執行。對於void方法,它只是退出方法體。對於非無效方法,實際上返回值的值(即return X)。只是要小心try-finally:請記住,即使你returntryfinally block將被執行:

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

// run foo in main 
 
foo 

This是學習更多有關return一個很好的參考。


是像break

那麼在這個意義上說,兩個陳述「結束」一個正在運行的過程; return結束一個方法並且break結束一個循環。儘管如此,瞭解兩者之間的差異以及何時應該使用這兩者之間的差異非常重要。

如果第二imageViewReused(photoToLoad)回報trueBitmapDisplayer bd=new BitmapDisplayer(bmp, photoToLoad)將不會被執行,對不對?

正確的 - 該方法將「return」如果執行該if語句來的身體,沒有後續的語句將達到。