я имел сомнения,выражения - Compile или время выполнения явление
Любая операция присваивания выражение время компиляции или выполнения явление?
e.g Foo f=new Bar();
Спасибо.
я имел сомнения,выражения - Compile или время выполнения явление
Любая операция присваивания выражение время компиляции или выполнения явление?
e.g Foo f=new Bar();
Спасибо.
Его среда
Foo f
будет ссылкой Object
созданной среды исполнения Bar
во время выполнения.
Есть проверка времени компиляции. Bar
должен быть Foo
для этого скомпилировать успешно
Если вы собираете следующее:
int x = 34 + 45;
то выражение, которое вы назначаете будут оценены во время компиляции, потому что она включает в себя только постоянные основные типы. В большинстве других случаев, включая ваш пример, выражение будет оцениваться во время выполнения.
Я не знаю, что именно вы сомневаетесь, но я думаю, что во время компиляции текстовое представление программы переводится в понятную машиной форму (в случае Java это был бы байт-код Java). То же самое происходит с такими операциями, как присвоения. Во время выполнения такие операции выполняются. Поэтому, чтобы точно ответить на ваш вопрос, операция присваивания является как компиляцией, так и временем выполнения (определенные действия выполняются в обоих случаях - в случае компиляции они выполняются компилятором Java и во время выполнения, выполняемым JVM).
Например,
class Foo { }
class Bar { }
Foo f = new Bar();
Этот код будет отвергнут компилятором. Он будет кричать на вас, что вы пытаетесь присвоить несовместимые типы.
Его оба.
времени компиляции - задание анализируются во время компиляции для совместимости типа, для инъекции коды, чтобы сделать преобразование/бокс/распаковку и т.д. Даже некоторые анализы потока могут повлиять на назначение, например, переменная, и ее назначение можно полностью оптимизировать.
Время выполнения - фактическое присвоение значения, то есть изменение битов в ячейке памяти переменной, конечно, происходит во время выполнения.
Ok. Спасибо Джигару! – Anonymous
Добро пожаловать :) –