Как стать автором
Обновить

Комментарии 23

НЛО прилетело и опубликовало эту надпись здесь
Наверное пока что нет. Т.к. сейчас куда проще будет подготовится к 7-ке, с учетом множества подобных материалов. А потом можно будет сдать относительно простой тест по апгрейду с 7 на 8, где поидее должны быть вопросы только по нововведениям. Что Вас будет ждать в «чистом» тесте к 8 версии — сейчас предположить трудно. Плюс учтите что новые тесты скорее всего появится только через несколько месяцев после выхода самой Java 8.
Релиз Java 8 передвинут на март 2014 года: habrahabr.ru/post/177251/
Но x instanceof SomeInterface компилируется.


Забавно. Не знал. Может встречали еще объяснение почему разное поведение для классов и интерфейсов?
Как понимаю, это так, поскольку наследник класса может реализовать этот интерфейс в будущем.
В каком будущем? И как будущее влияет на момент компиляции?
Если
class A {}
interface C {}
class B extends A implements C {}
A a=new B();

Здесь a instanceof C истинно.
Именно так, впредь буду внимательнее, спасибо!
Логично, спасибо.
вот провалил тест

Сдавал давным-давно Programmer-а под 1.4, еще Sun-овский. Судя по всему, у Sun-а было как-то попроще. У нас в компании человек 10-15 сдавали, насколько я помню, никто не провалил. Радовались не столько тому, что вообще сдали, а скорее баллами мерились. Я и еще один программист, как более опытные набрали больше всех, кажется по 88 из 100. Когда готовился прошелся вскользь по русскоязычному руководству по подготовке и погонял тесты, чересчур никто не перенапрягался. Тогда год-два опыта программирования на Java было достаточно, чтобы вообще без подготовки сдать с вероятностью процентов 70-80. Теперь, видимо, другие времена…
выучите регулярные выражения
Насколько я помню, этого не было раньше, но могу и ошибаться, времени много прошло.
нету теории паттернов (а Oracle эту тему как оказалось очень любит — разбирайтесь досконально)
Вот этого для Programmer-а точно не было, а вот когда на Developer сдавал, там пришлось голову поломать, особенно с учетом моего любительского английского… Да и вообще, при подготовке на Developer-а реально много времени и сил угробил, англоязычное руководство по подготовке от корки до корки прочел. И все равно на экзамене все 2 часа со вздыбленной от ужаса холкой сидел, еле сдал. Когда в конце смотрел разбивку баллов по темам, то некоторые были 100%, а некоторые 0%!
Конечно не мне сравнивать, но судя по тому что народ писал про предыдущие версии Java на экзаменах, раньше всё действительно было проще. Регулярки — да, однозначно перегиб по сложности (но благо я их еще ранее изучил). Может сейчас слишком много индусов с китайцами сдавать стало, что они теперь так режут новых «бойцов»?)).
Вы сдавали 1Z0-803 для сдачи 1Z0-804? А то судя по сайту оракла надо сначала сдать на Associate.
Да, тоже сдавал. Правда не знаю, нужен ли он для сертификата Java Professional.
На самом деле никто не запрещает сначала сдать 1Z0-804. Просто сертификат по OCPJP 7 вы не поолучите, пока не сдадите и 1Z0-803 тоже. В книжке «Oracle Certified Professional Java SE 7 Programmer Exams 1Z0-804 and 1Z0-805» так написано.
Передача параметров по ссылке и по значению. Важно помнить, что в Java параметры в процедуры передаются по значению только для простых типов (int, float, ...), их обёрток (Int, Float, ...) и для String. Это означает, что изменение значения параметра внутри процедуры не затронет переданную извне переменную. Для всех остальных — работает передача по ссылке (классов, массивов и др.). Т.е изменения внутри процедуры сохраняются в переданном извне объекте. Явно задать как передавать параметр — по ссылке или по значению — нельзя.

А я всегда думал что в java всё передаётся по значению. Только для объектов по значению передаётся ссылка.
Если понимать передачу по значению как невозможность поменять содержимое объекта переданного в метод, то тут тоже напутано. Значение Integer, Float,...String нельзя поменять не по этому, а потому что отсутствует api для изменения их внутреннего состояния. Если подсунуть в bootstrap java пропатченные String, Integer с добавленными методами меняющими внутреннее состояние, то ещё как можно будет изменять их внутри метода.
Да, дабы не вводить людей в заблуждение этот абзац надо бы в статье полностью переписать. Причины и следствия перевернуты с ног на голову.
Поправил, спасибо. До таких тонкостей пока не добрался. Интересно, а почему нет API изменения состояния?
Потому что иммутабельность это круто. Это позволяет писать более надёжные программы. А иногда это даёт бонусы в производительности (хотя и не часто, обычно наоборот). В частности немутабельность String позволяет реализовать быстрый substring, без аллокации и копирования нового массива символов. А иммутабельность Integer позволяет создать кеш объектов Integer для некоторого диапазона [-N, +N] и не порождать новые объекты при автобоксинге.
С substring можно напороться на неприятный подводный камень — если исходные строки большие и их много, а из них выбирается и используется лишь малая подстрока, то память всё равно будет занята на всю исходную строку.
А в java 7 substring() стал работать через копирование и аллокацию нового массива :)
Inner classes — вложенные классы.

Тут не совсем верно. Все эти виды есть Nested classes.
Inner classes — это все кроме static member classes. JLS 8.1.3

И обязательно разберитесь со всеми нюансами интерфейса Closeable и его использование в «try-with-resource»

В try-with-resources должен быть AutoCloseable. JLS 14.20.3
Исправил, спасибо.
Хочется поделиться впечатлениями по свежесданному экзамену Java OCP 1z0-804 (сдавал сегодня в центре NVision на м.Медведково). Готовился достаточно плотно, прочитал годную книжку OCA/OCP Java SE 7 Programmer I & II Study Guide (Exams 1Z0-803 & 1Z0-804) от Kathy Sierra и Bert Bates. Здорово помогли купленные тесты Entuware и амазоновский же сборник тестов Java Practice Questions: Oracle Certified Professional, Java SE 7 Programmer (OCPJP) от Esteban Herrera. Был немало «впечатлен» результатом — 66%. Извольте готовиться к вопросам из серии:
Как заполучить объект Console?
-System.console()
-System.getConsole()
или
Как получить Locale?
-Locale.getInstance()
-Locale.getInstance(«ru»)
-Locale.getLocaleInstance()
ну и проверку знаний вами содержимого enum, например, мегапопулярного OpenOption.
В какой-то момент меня взяло сомнение в годности тестов Entuware — думал, вряд ли будут настолько втупую проверять константы всяких там FileResult, WatchEvent.Kind и наименования методов, — и бросил их гонять. Хорошо что перестал уже после изрядного количества этих «тупых» вопросов — многое успело осесть и пригодилось(!).
Крайне желательно подтянуть аглицкий — огульное жонглирование иногда очень обтекаемыми фразами вокруг вполне конкретных понятий и терминов реально раздражало. Очень напрягали вопросы по преобразованию в boolean из других типов в контексте Format, ResultSet, JDBC. Следует ожидать вопросов на буквально ювелирное владение generics: объектные ссылки, передача параметров в метод и возврат из метода. Не забыть поперчить все это raw type.
Думали ли вы когда-нибудь о synchronized в интерфейсе? А в методах enum?
Шутки в сторону %username%, здесь спрашивают за серьезное и если компиллятор недостаточно встроился в твою многострадальную голову за время подготовки, тебя ждут неприятности.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории