2013-12-26 1 views
2

У меня есть сомнения о том, почему разработчики Java заявил, какПочему в классе Thread "public static final int MAX_PRIORITY" объявлен как int?

public static final int MAX_PRIORITY 
public static final int MIN_PRIORITY 
public static final int NORMAL_PRIORITY 

вместо того, чтобы объявить public static final byte MAX_PRIORITY. Потому что для этих переменных наибольшее значение - только 10. Поэтому я думаю, что байт достаточен для интервала int выше байта.
Любые конкретные причины этого? Может ли кто-нибудь объяснить это мне?

+0

Они, вероятно, даже не подумали об этом. – wm1sr

+1

Это не изменит ситуацию. – Maroun

+2

Ну, что, на ваш взгляд, было бы преимуществом байта? – SBI

ответ

-1

За кулисами java int (в большинстве случаев) имеет тот же размер, что и у byte (и короткого типа), поэтому это не имеет значения.

byte используется, когда логично использовать его (когда сами данные представлены в байтах, например, сырые данные) или для экономии места, когда у вас есть массив небольших чисел.

int используется разработчиками по умолчанию, если у них нет веских оснований использовать что-то еще.

+3

Вы можете поделиться некоторой информацией о том, что вы указали, пожалуйста. –

+0

проверить это сообщение: http://stackoverflow.com/questions/229886/size-of-a-byte-in-memory-java –

+0

Спасибо за обмен! Но утверждение «byte и int всегда будет таким же внутренним» всегда остается неизменным. Может варьироваться в зависимости от архитектуры процессора. –

4

Байты используют немного меньше места для хранения, но не имеют более быстрого использования, чем целое число - поскольку в принципе все 32-разрядные процессоры работают в целых числах.

Нет никакой реальной причины использовать байт по целому числу, если вы не храните массив или аналогичный им, где они могут быть упакованы в меньшее пространство.

+0

Ну, это не фундаментальный закон (и были процессоры с 16-битными целыми числами), но на практике вы абсолютно правы. Фактически использование байтов может ухудшить производительность даже на реальном оборудовании. – Voo

+0

Я начал программировать на 8-битных компьютерах, но я не знаю ни одного серьезного компьютера, использующего менее 32 в течение очень долгого времени. –

+0

Есть много встроенных устройств, работающих под управлением MIPS и co. Это на самом деле одно из первоначально предназначенных мест для Java, и я слышал, как люди программируют микроконтроллеры в java в некоторой степени. (Звучит неловко) – Voo

0

Так что если в будущем было бы желательно ввести другое значение, которое не находилось в диапазоне байтов, разработчики не смогли бы оказаться в затруднительном положении из-за предшествующего, неуместного решения, такого как тот, который кажется вам предпочтительным ,

0

Я предполагаю, что это было соглашение о коде в проекте, потому что в этом случае из-за выравнивания памяти, в результате чего его байт сохранил бы 8 байтов в архитектуре x64. Обоснованием этого может быть то, что в будущих версиях это поле может использоваться для хранения информации о состоянии другого потока.

 Смежные вопросы

  • Нет связанных вопросов^_^