Question: ![http://farm4.static.flickr.com/3338/4564960137_0d3c09192d_o.png](https://i.stack.imgur.com/Y2gpf.png)

can we change text in this lightbox

want to change "This site requires that you Connect with Facebook." and "Connect with Facebook to Continue"

Answer: 
This is a late party chime-in but the reason is pretty simple: 

The bytecode operands do need explicit casts (`L2I`) and longs need 2 stack positions compared to 1 for int, char, short, byte [casting from byte to int doesn't need a bytecode instruction]. After the mod operation the result takes 2 positions on the top of stack.

*edit:* Also, I forgot to mention Java doesn't have division/remainder of 64b/32b. There are only 64->64bit operations, i.e. `LDIV` and `LREM`.
> 
> does any one know why Java has a longer type for % than needed?
> 
> 
> 

I don't know for sure. Maybe to make it work exactly the same way as the other multiplicative operators: `*` and `\`. In the [JLS](http://java.sun.com/docs/books/jls/third_edition/html/expressions.html#15.17) `The type of a multiplicative expression is the promoted type of its operands.` Adding an exception to `long % int` would be confusing.