1 мая 2018
Тэги: Java, алгоритмы, головоломки.
Если перед вами встанет задача обменять значения двух числовых переменных a и b между собой, скорее всего, вы сделаете это так:
То есть поменять значения одновременно нельзя, ибо одно из них затрётся. Чтобы этого не произошло, мы создаём новую буферную переменную, куда и помещаем на время одно из значений.
А что, если нам нужно обменять значения числовых переменных между собой, не создавая новых переменных?
Такой вопрос любят задавать на собеседованиях, однако ограничение весьма искусственное и в современной практике не встречается. Но программисты прошлого могли на такой операции сэкономить лишний байт памяти. И прибегали они к следующему решению:
Как видите, решение носит чисто арифметический характер, а потому применимо лишь к числовым типам и не зависит от конкретного языка программирования.
Kotlin, Java, Spring, Spring Boot, Spring Data, SQL, PostgreSQL, Oracle, Linux, Hibernate, Collections, Stream API, многопоточность, файлы, Nginx, Apache, maven, gradle, JUnit, YouTube, новости, руководство, ООП, алгоритмы, головоломки, rest, GraphQL, Excel, XML, json, yaml.