Question: Coming from C++ to Java, the obvious unanswered question is why didn't Java include operator overloading?

Isn't `Complex a, b, c; a = b + c;` much simpler than `Complex a, b, c; a = b.add(c);`?

Is there a known reason for this, valid arguments for *not* allowing operator overloading? Is the reason arbitrary, or lost to time?

Answer: 
[Groovy](http://groovy.codehaus.org/) has operator overloading, and runs in the JVM. If you don't mind the performance hit (which gets smaller everyday). It's automatic based on method names. e.g., '+' calls the 'plus(argument)' method.
Saying that operator overloading leads to logical errors of type that operator does not match the operation logic, it's like saying nothing. The same type of error will occur if function name is inappropriate for operation logic - so what's the solution: drop the ability of function usage!? 
 This is a comical answer - "Inappropriate for operation logic", every parameter name, every class, function or whatever can be logicly inappropriate.
I think that this option should be available in respectable programing language, and those that think that it's unsafe - hey no bothy says you have to use it. 
Lets take the C#. They drooped the pointers but hey - there is 'unsafe code' statement - program as you like on your own risk.