It is not logical but numerical operator in this case. Indeed,
System.out.println( 4 || 7);
does not even compile.
Gooc old C does not have a logical (boolean) type, it uses integers on the syntax level too. C++ has the "bool" type, but it maintains the logical <-> integer conversion.
In java the logical type is separated from the integral ones; there is no boolean -> integer conversion.
For convenience however single & and | can be applied to booleans.