2015-01-20 2 views
3

В чем преимущество объявления массива с использованием константы в Java? Например,В чем преимущество объявления размера массива с использованием константы

private static final int CAPACITY = 2; 
private int[] items = new int[CAPACITY]; 

Какова разница между выше кодом и:

private int[] items = new int[2]; 

Примечание: Длина массива не может быть изменен, как только он объявлен. Почему я должен использовать константу?

+2

Возможный дубликат [Что такое магическое число, и почему это плохо?] (Http://stackoverflow.com/questions/47882/what-is-a-magic-number-and-why-is-it -bad) – Raedwald

ответ

9

Потому что если CAPACITY используется где-то еще, и в будущем вы решите что CAPACITY должно быть 4, вам не нужно менять его повсюду.

  • улучшает читаемость кода
  • легче поддерживать

Сравнить:

for(int i=0;i<2;i++) 

в

for(int i=0;i<CAPACITY;i++) 

void магические числа в коде, когда вы можете.

Многие классы Java используют константы, Integer, Character и другие классы.

+1

Вместо этого вы можете использовать длину массива (для цикла 'for'). Но я согласен с другими моментами. – Tom

+1

@Tom Я бы сказал, что вместо этого вы здесь используете длину, но я бы ее написал: '(для int i = 0, n = items.length; i Alnitak

+0

Это было только для примера, могут быть более четкие примеры. – Maroun

7
  1. вы можете использовать эту константу для некоторого другого массива
  2. , чтобы разъяснить, почему эта длина, как: STUDENTS_MAX_SIZE = 1000
3

Разница заключается в том, если константа названа в любом значимое имя, например:

private int[] items = new int[DEFAULT_CART_ITEM_AMOUNT]; 

и/или когда константа используется где-то еще, например:

for(var i = 0; i < DEFAULT_CART_ITEM_AMOUNT; ++i) doSth(); 
3

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

Его также можно использовать, чтобы указать семантический смысл на номер.

2

Насколько я понимаю, вопрос в том, «Что такое использование констант?»

  1. держать код чистый
  2. легкость изменения постоянной во время разработки

и т.д.

+1

константы очень редко сохраняют память – Alnitak

+0

, но если вы добавите жесткое кодирование одной и той же вещи в нескольких местах, это будет стоить вам памяти, не так ли? – Keshava

+2

@Keshava Нет, тот же байт-код будет сгенерирован. – Maroun

0

Вы не должны, как правило, нужна постоянная для длины массива, потому что в основном есть два сценария:

  1. Количество предметов в магазине заранее известно и очень просто, например: int[] monthlyRevenues = new int[12]; Есть 12 месяцев, было бы глупо делать static final int NUMBER_OF_MONTHS = 12;

  2. размере предметов для хранения не известны заранее, в этом случае, вероятно, лучше использовать другую коллекцию, как List.

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

1

Основная причина - читаемость и ремонтопригодность. Использование числовых литералов делает код более трудным для чтения, понимания и редактирования.

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

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

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