Techniquement, il existe une surcharge d'opérateurs dans chaque langage de programmation qui peut traiter différents types de nombres, par exemple les nombres entiers et réels. Explication : Le terme "surcharge" signifie qu'il existe simplement plusieurs implémentations pour une même fonction. Dans la plupart des langages de programmation, différentes implémentations sont fournies pour l'opérateur +, une pour les nombres entiers, une pour les nombres réels, c'est ce qu'on appelle la surcharge d'opérateurs.
Beaucoup de gens trouvent étrange que Java dispose d'une surcharge de l'opérateur + pour l'addition de chaînes de caractères, et d'un point de vue mathématique, ce serait en effet étrange, mais du point de vue du développeur d'un langage de programmation, il n'y a rien de mal à ajouter une surcharge intégrée de l'opérateur + pour d'autres classes, par exemple String. Cependant, la plupart des gens sont d'accord pour dire qu'une fois que vous ajoutez une surcharge intégrée pour + pour String, c'est généralement une bonne idée de fournir cette fonctionnalité au développeur également.
Je ne suis absolument pas d'accord avec l'idée fausse selon laquelle la surcharge des opérateurs obscurcit le code, car c'est au développeur d'en décider. C'est naïf de penser cela, et pour être tout à fait honnête, cela devient vieux.
+1 pour l'ajout de la surcharge des opérateurs en Java 8.