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: 
Well you can really shoot yourself in the foot with operator overloading. It's like with pointers people make stupid mistakes with them and so it was decided to take the scissors away.

At least I think that's the reason.
I'm on your side anyway. :)
**Alternatives to Native Support of Java Operator Overloading**

Since Java doesn't have operator overloading, here are some alternatives you can look into:

1. Use another language. [Groovy](https://en.wikipedia.org/wiki/Apache_Groovy), [Scala](https://en.wikipedia.org/wiki/Scala_(programming_language)), and Kotlin have operator overloading, and are based on Java.
2. Use [java-oo](https://github.com/amelentev/java-oo), a plugin that enables operator overloading in Java. Note that it is NOT platform independent. Also, it has many issues, and is not compatible with the latest releases of Java (i.e. Java 10). ([Original StackOverflow Source](https://stackoverflow.com/questions/1686699/operator-overloading-in-java/1686714))
3. Use [JNI](https://en.wikipedia.org/wiki/Java_Native_Interface), Java Native Interface, or alternatives. This allows you to write C or C++ methods for use in Java. Of course this is also NOT platform independent.

If anyone is aware of others, please comment, and I will add it to this list.