我在我的web應用程序(使用Spring和Hibernate)中實現分頁,在那裏我需要類似下面的東西。在Java中的return語句中減少(或增加)運算符
public static int deleteSingle(long totalRows, long pageSize, int currentPage)
{
return totalRows==currentPage*pageSize-pageSize ? currentPage-- : currentPage;
}
假設我從下面的某個地方調用這個方法。
deleteSingle(24, 2, 13);
利用這些參數,則滿足條件,且應返回的變量currentPage
(即13)減1的值(即12),但它不遞減的currentPage
值。在此調用之後,它返回原始值13。
我不得不改變像下面的方法,使其按預期工作。
public static int deleteSingle(long totalRows, long pageSize, int currentPage)
{
if(totalRows==currentPage*pageSize-pageSize)
{
currentPage=currentPage-1; //<-------
return currentPage; //<-------
}
else
{
return currentPage;
}
}
那麼爲什麼沒有遞減1與遞減運算符的價值 - currentPage--
?爲什麼它需要 - currentPage=currentPage-1;
在這種情況下?
但是,由於'--'或'++'什麼都不做,編譯器可能會產生警告或編譯錯誤。也許findbugs會找到它? – 2013-03-04 22:51:57
@owlstead,但運營商確實做了一些事情。但我確實相信有一個findbugs檢查,但是,操作員所做的並不總是程序員希望它做的事情。 – corsiKa 2013-03-04 22:57:56
該方法返回後如何發生遞減? – Tiny 2013-03-04 23:07:46