我在我的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