The Oracle/Sun Java VMs cache/intern the first few (starting from 0) java.lang.Integer values, so those are referentially point to the same values and the == returns true for them. I guess 140 is beyond that limit.
You can use either (c_col1 != null && c_col1.equals(c_col2)) || (c_col1 == null && c_col2 == null) or (c_col1 == null && c_col2 == null) || (c_col1 != null && c_col2 != null && c_col1.intValue() == c_col2.intValue())) conditions. (If you know these cannot be missing, c_col1.equals(c_col2) or c_col1.intValue() == c_col2.intValue() would be enough.)