Прошивка Android 4.4.2 Bluetooth продолжаю отключаться

Это возможно из-за того, как JVM работает внутри и как была разработана Java.

После компиляции вашего кода созданный файл .class будет содержать представление вашего байт-кода вашего кода. Файл класса - это не что иное, как куча байтов, структурированных в определенном порядке, которые могут быть интерпретированы JVM.

В структуре файла класса вы сможете найти что-то, называемое Constant Pool, которое является не чем иным, как символической справочной таблицей, используемой JVM при загрузке классов. Ваши конечные переменные будут найдены здесь, будут ли они инициализированы или нет как литералы.

Итак, теперь, когда вы это знаете, давайте перейдем и подумаем о том, что означает последний модификатор, это означает не что иное, как способ сообщить JVM, что в этом случае переменной будет присвоено значение, и после этого , операция повторного присваивания этой переменной не будет разрешена, так как документация по языку Java, конечной переменной может присваиваться значение один раз и только один раз.

Теперь, когда у вас есть этот фон, чтобы ответить на ваш вопрос напрямую:

Независимо от того, является ли ваша переменная объектом или примитивным типом, значение для конечной переменной, которая не является член класса (значение не является статическим) будет автоматически задано JVM с использованием значения в пуле постоянной среды выполнения для вашего объекта. Или, если эта переменная не инициализирована в объявлении, тогда она должна быть задана при запуске конструктора. Все это возможно, потому что Java был разработан таким образом, чтобы предоставить программистам некоторую гибкость при назначении переменных, чтобы избежать жесткого кодирования и обеспечить способ назначения объектов конечным ссылкам.

Как последний совет, остановитесь считая конечные переменные константами в C ++. Они могут казаться похожими, но это не так, они обрабатываются совершенно по-разному.

0
задан user3201419 25 February 2015 в 16:21
поделиться