return (int)a == a?(int)a:0; long转int的问题

为什么这个可以用return (int)a == a?(int)a:0;直接转换呢?或者有别的转换方法吗?

class Solution {
    public int reverse(int x) {
        long a = 0;
        while(x!=0){
            a = a*10+x%10;
            x = x/10;
        }   
        return (int)a == a?(int)a:0;
    }
}

 

这用到了强制类型转换的知识,它指的是将long类型强转成int类型,再则因为你方法的返回类型为int,所以return也只能返回int