![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
polosatij |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1143 Регистрация: 22.2.2004 Где: Stuttgart<-> ;Karlsruhe, Germany Репутация: 1 Всего: 8 |
встретился недавно со следующей делемой.. как вы думаете, что выдаст данный код?
все те, кто подумал, что код данный выдаст 10 не прошли этот тест. ![]() ![]() правильный результат: 10.0 ![]() теперь хотелось бы узнать, почему это так.. посмотрев в байт код.. хм.. и действительно, после того как .... => integer будет сконвертирован в float. почему это так? я бы тоже хотел знать ответ на данный вопрос. сейчас я готовлюсь к сдаче scjp и подобные вопросы меня просто убивают.. посему, никто не мог бы подсказать какой путёвой книги по Java 1.5 Compiler? кинуть линком или путёвой документацией на подобную "идеотскую" тему? ![]() |
|||
|
||||
Antropoid |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 786 Регистрация: 1.6.2006 Где: &Ukraine==Ode ssa Репутация: 2 Всего: 16 |
Ашо странного? Нет, я ответа не знал, но вроде все логично: рано или поздно JVM начнет сравнивать целое и дробное, для этого приведет целое к дробному, сравнит дробное с дробным и возвратит дробный результат...
-------------------- ![]() Задыхаясь от восторга заниматься чепухой. |
|||
|
||||
polosatij |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1143 Регистрация: 22.2.2004 Где: Stuttgart<-> ;Karlsruhe, Germany Репутация: 1 Всего: 8 |
я что-то не очень понимаю, зачем ей сравнивать целое и дробное??.. может ты мне можешь объяснить? ![]() |
|||
|
||||
_Michael |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 375 Регистрация: 23.6.2007 Где: з полонини Репутация: 2 Всего: 6 |
polosatij, здесь вот очень много таких различных особенностей и казусов.
![]()
Че то я не очень понимаю. Ведь b = true; значить создается new Integer(10) а к new Float(100) даже не доходит. разве не так? ![]() Это сообщение отредактировал(а) _Michael - 15.8.2007, 13:24 -------------------- ...не убивайся ни о чем - все временно, хоть ночь темна но светлым днем беременна... Саади |
|||
|
||||
Antropoid |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 786 Регистрация: 1.6.2006 Где: &Ukraine==Ode ssa Репутация: 2 Всего: 16 |
Думаю потому, что ? : - тернарная операция и ее операнды(до : и после) должны быть одной масти.
-------------------- ![]() Задыхаясь от восторга заниматься чепухой. |
|||
|
||||
polosatij |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1143 Регистрация: 22.2.2004 Где: Stuttgart<-> ;Karlsruhe, Germany Репутация: 1 Всего: 8 |
если это так.. то почему данный пример:
не конвертирует Integer в String, если посмотреть в байткод? ![]() ![]() |
||||
|
|||||
_Y_ |
|
||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1651 Регистрация: 27.11.2006 Репутация: 5 Всего: 34 |
Пожалуй, собака именно здесь. Ведь на печать выводится не
Понятное дело, что правая сторона присвоения возвращает определенный тип. Но это все, естественно, ИМХО -------------------- Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:) |
||||||
|
|||||||
polosatij |
|
||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1143 Регистрация: 22.2.2004 Где: Stuttgart<-> ;Karlsruhe, Germany Репутация: 1 Всего: 8 |
вот мне, например, не понятное дело.. посмотрим такой пример:
и что ты хочешь сказать, Integer теперь String? ![]() Добавлено через 2 минуты и 45 секунд
спасибо, но я имел ввиду не примеры.. а примеры с конкретными темами в одной книге ![]() |
||||||
|
|||||||
AlexeyVorotnikov |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 658 Регистрация: 18.6.2007 Где: Москва Репутация: 10 Всего: 18 |
Нет, Integer теперь Object. -------------------- RTFM! Три источника и три составные части Java: The Java Language Specification, Java Platform API Specification, The Java Virtual Machine Specification |
||||
|
|||||
polosatij |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1143 Регистрация: 22.2.2004 Где: Stuttgart<-> ;Karlsruhe, Germany Репутация: 1 Всего: 8 |
мы не после объявления говорим, а про конвертацию переменных: new Integer(10) : "hi"; ![]() |
|||
|
||||
Antropoid |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 786 Регистрация: 1.6.2006 Где: &Ukraine==Ode ssa Репутация: 2 Всего: 16 |
ИМХО да, это правило только для Number -------------------- ![]() Задыхаясь от восторга заниматься чепухой. |
|||
|
||||
polosatij |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1143 Регистрация: 22.2.2004 Где: Stuttgart<-> ;Karlsruhe, Germany Репутация: 1 Всего: 8 |
ню так, а где почитать про такие правила? ![]() |
|||
|
||||
AlexeyVorotnikov |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 658 Регистрация: 18.6.2007 Где: Москва Репутация: 10 Всего: 18 |
Java Language Specification, CHAPTER 15 Expressions, 15.25 Conditional Operator ? :
-------------------- RTFM! Три источника и три составные части Java: The Java Language Specification, Java Platform API Specification, The Java Virtual Machine Specification |
|||
|
||||
polosatij |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1143 Регистрация: 22.2.2004 Где: Stuttgart<-> ;Karlsruhe, Germany Репутация: 1 Всего: 8 |
AlexeyVorotnikov,
ты забыл линк ![]() ![]() |
|||
|
||||
ekr |
|
|||
![]() ...и это пройдет... ![]() ![]() Профиль Группа: Участник Сообщений: 359 Регистрация: 6.5.2007 Где: Moscow, RU Репутация: 3 Всего: 19 |
Книгу с такими вопросами для подготовки к экзамену sj5cp выложил на своем блоге и на http://courses.4shared.com в разделе books/sj5cp. Там в архиве есть и программа-тестер. |
|||
|
||||
AlexeyVorotnikov |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 658 Регистрация: 18.6.2007 Где: Москва Репутация: 10 Всего: 18 |
-------------------- RTFM! Три источника и три составные части Java: The Java Language Specification, Java Platform API Specification, The Java Virtual Machine Specification |
|||
|
||||
Bozo |
|
||||
Новичок Профиль Группа: Участник Сообщений: 32 Регистрация: 5.4.2006 Репутация: нет Всего: нет |
Наверное потому что javac компилит println в http://java.sun.com/j2se/1.5.0/docs/api/ja...#println(float), а потом уже конвертирует Integer в float. А почему она выбирает println(float) при компиляции, а не два варианта (println(int) и println(float))? Тот же результат, если строку заменить на
А что там, в байткоде? |
||||
|
|||||
UnicornMirage |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 138 Регистрация: 15.11.2005 Репутация: 1 Всего: 1 |
это называется неявным преобразованием расширения типа. В любом выражении результат выражения приводится к самому "широкому" типу по иерархии типов. В данном случае при работе с числовыми типами, приведение расширится до float, а при работе с ссылочными типами, - к Object.
|
|||
|
||||
COVD |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1655 Регистрация: 26.7.2005 Репутация: 17 Всего: 43 |
Вот наличие таких дурацких вопросов и отталкивает от этих сертификаций. По сути, это ненужное знание. Оно плохо вписывается в логику языка, раз приходится так долго искать обьяснения такому поведению.
|
|||
|
||||
AlexeyVorotnikov |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 658 Регистрация: 18.6.2007 Где: Москва Репутация: 10 Всего: 18 |
Если плохо знаешь логику языка, то такие знания и будут плохо вписываться.
-------------------- RTFM! Три источника и три составные части Java: The Java Language Specification, Java Platform API Specification, The Java Virtual Machine Specification |
|||
|
||||
Maksym |
|
|||
![]() . ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1456 Регистрация: 19.8.2005 Где: Odessa, Black Sea Репутация: 14 Всего: 62 |
COVD
Согласен в том, что большАя часть сертификационных вопросов тестирует не те знания и навыки, которые нужны рынку (работодателю). А для общего развития, чем не интересная задачка... ![]() |
|||
|
||||
SoulKeeper |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 375 Регистрация: 14.1.2007 Где: Ukraine, Lviv. Репутация: 11 Всего: 15 |
Такие вещи еше Brainbench любит... А вообще сорри за поднятие трупа, не удержался
![]() Т.к. в работе оно встречается раз в пятилетку. Это сообщение отредактировал(а) SoulKeeper - 28.7.2008, 13:38 |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |