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