我在Web应用程序(使用Spring和Hibernate)中实现分页,需要类似以下内容。

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


那么为什么不使用减量运算符-currentPage--将值减1?为什么需要-在这种情况下currentPage=currentPage-1;

最佳答案

在您的return语句中,它使用currentPage--导致返回后的递减。您希望--currentPage在返回之前进行递减。就个人而言,使用类似这样的复杂语句,您可能还是希望出于可读性的考虑而将其分解,但这是优先考虑的问题。

(从技术上讲,它在读取后会递减。当它递减时,return语句会发生变化,这没有什么特别的。)

如果由我决定,我的爱好是这样做:

public static int deleteSingle(long totalRows, long pageSize, int currentPage)
{
    if(totalRows==currentPage*pageSize-pageSize)
    {
        currentPage--;
    }
    return currentPage;

}

关于java - Java的return语句中的减量(或增量)运算符,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15212591/

10-13 23:38