Pull to refresh

Comments 28

Ответил только на второй. Нет, Java я не знаю.
К большому счастью для окружающих я не босс. Иначе бы с радостью уволил за применение кода из этих примеров.

С одной стороны — хорошо наизусть помнить все подобные трюки, с другой стороны есть компилятор, IDE и тесты.
А кто предлагает ТАК писать? Я бы и сам уволил за такое ))

Данный топик скорее just for fun чем для использования в реальной работе. Хотя, как я писал в первой статье, практически весь экзамен Oracle certified professional java programmer состоит из таких заданий, так что иногда такие знания полезны.
Да, готовились — знаем. Просто нужен дисклэймер, а то мало ли кто чего подумает :)

Есть еще «Java Puzzlers» — такого же рода книжка, только еще более забавная.
Там вообще пипец Т_т «cafebabe» =)
Я вот уже на большую часть не могу правильно ответить, с одной стороны из-за невнимательности — лень вчитываться долго, а с другой стороны — всё позабывал, хотя сдавал на SCJP всего полгода назад. Ненужные знания вообще быстро забываются, а это по большей части не особо нужные знания, хотя ими можно классно повыпендриваться :)
Если кого-то интересуют такие вот штуки, советую почитать «Java Puzzlers».
www.javapuzzlers.com/
Впрочем, уж насколько я люблю всякие необычные штуки, но все эти знания уж слишком непрактичны.
а не было бы интересно в топике только вопросы оставить, а мы бы тут в комментах отвечали, не? а то никакой интриги
Учиться, учиться и еще раз учиться… Правда, в этот раз получше получилось.
Я знаю Java плохонько, да и три года на ней ничего не писал. Да и в документацию лезть было облом. Так что — 3/7.
Хм, на мой вкус прошлый раз было намного сложнее — этот тест 6/7.
Тока с (b2 != b1 = !b2) не угадал с приоритетом.
Мнемоника для запоминания приоритета: while ((line = in.readLine()) != null)
Тут просто ) Достаточно включить логику.
Сам посуди: когда ты пишешь код a =…, ожидается, что все, что написано справа, присвоится переменной a. Следовательно, присваивание всегда идет последним. А, стало быть, присвоить что-либо выражению нельзя, т.к. это не L-value.
Я ожидал какого-то подвоха.
В Java этого, к счастью, меньше, чем, скажем, в Си. Все-таки спецификация языка очень строгая.
UFO just landed and posted this here
Почитайте Джоэля Спольски «О программировании». Вот там действительно о программировании с юмором.
Проверка того на сколько хорошо компилятор Java скопировался в твой мозг :)
До теста (даже после первого топика) я был уверен, что хоть чуть-чуть знаю Java.
Сейчас ответил только на 2 вопроса и понял, что Java не знаю.
Правильно ответил на 2 вопроса. Еще раз убедился, что нужно писать код максимально просто и понятно, а за подобные извращения жестко бить по рукам. :-)
Тест явно проще предыдущего. 5/7. На знал тонкостей Thread'ов и не ожидал такого ответа в вопросе про интерфейсы. Как показало последующее расследование — в интерфейсах все поля являются финальными; это меня и запутало :-)
Такие статьи лишь подтверждают слабую интуитивность кода на Java.
интуиция — одна из тех способностей, которая подвержена развитию
6 из 7 — на 5-й неверный ответ дал )
Надо еще раз исходники основный классов Java полистать )
> Как правило, множественные операции присваивания рассчитываются справа налево. Но индексы — исключение. В данном случае сначала будет вычислен индекс (arr[0]), и только потом переменной i присвоится новое значение.

Действительно ли тут «исключение»? Может, просто у операции взятия индекса приоритет выше, чем у присваивания, поэтому она выполняется первой?
Sign up to leave a comment.

Articles