Как отметил Дьякобсон, ответом является квалифицированное «да». По большей части, разработчикам Java не нужно беспокоиться о зависимостях платформы. Однако вы можете столкнуться с проблемами, когда имеете дело с API, которые обрабатывают традиционные функции ОС и платформы.
Например, при работе с файловым вводом-выводом легко сделать вашу платформу кода зависимой, игнорируя различия между разделителями файлов и путей на разных платформах (т. Е. Используя '\'
, а не File.separator
).
Нет, Java не поддерживает перегрузку определяемого пользователем оператора. Единственный аспект Java, который приближается к «пользовательской» перегрузке операторов, - это обработка + для строк, что приводит либо к конкатенации констант во время компиляции, либо к конкатенации во время выполнения с использованием StringBuilder / StringBuffer. Однако вы не можете определить свои собственные операторы, которые действуют таким же образом.
Для Java-подобного (и основанного на JVM) языка, который поддерживает перегрузку операторов, вы можете посмотреть Groovy . В качестве альтернативы вам может повезти с плагином для компилятора Java .
Перегрузка операторов используется в Java для конкатенации типа String:
String concat = "one" + "two";
Однако вы не можете определять свои собственные перегрузки операторов.
В дополнение ко всем людям, указывающим, что +
перегружен для строк, -
также перегружен как для операций с плавающей запятой, так и для целочисленных операций, так как равны *
и /
.
[править]
%
также перегружен для операций с плавающей запятой, что может быть сюрпризом для тех, кто работает с C или C ++.
Java не допускает перегрузки операторов. Предпочтительный подход - определить метод в вашем классе для выполнения действия: a.add (b)
вместо a + b
. Вы можете увидеть сводку других битов Java, исключенных из C-подобных языков, здесь: Функции, удаленные из C и C ++
Вы не можете сделать это самостоятельно, поскольку Java не допускает перегрузки операторов.
Однако за одно исключение. + и + = перегружены для объектов String.