Eric Sosman <(E-Mail Removed)> writes:

>This "overload" is feeble at best: "+" is overloaded six ways,

>"-" five, "*", "/", "%", "++", "--", "<", "<=", ">", and ">=" four

>each. "==" and "!=" and "=" and "." and "instanceof" are overloaded

>to an infinite degree (countable, I think). So what?
The JLS 3 defines »overloading« for methods in 8.4.9 and 9.4.2

and for constructors in 8.8.8. So one cannot derive from the

JLS that any operator in Java is overloaded at all.

One also might define it semantically as »having several

different meanings (depending on the static argument type)

when expressed in the English language«.

Then, »+« has two overloads »plus« and »concatenated with«,

but one might get by with counting only one overload »plus«

when one can mentally subsume string concatenation under the

English conjunction of »plus«.

»+« for strings has something natural, given then it makes

»length« to be similar to a kind of

http://en.wikipedia.org/wiki/Ring_homomorphism
(not precisly), given that

length( s + s1 )= length( s )+ length( s1 ),

length( s + "" )= length( s )+ 0,

and, with Perl's »x« operator (written as »*« below), for

an int value i, even

length( s + s + ... + s [i times] )= length( s * i )

length( s + s1 * i )= length( s )+ length( s1 )* i,

length(( s + s1 )* i )=( length( s )+ length( s1 ))* i

length( "" * i )= 0 * i, and possibly more

hold.