2016-10-10 4 views
-4

Предположим, мне нужно добавить элемент в мой array1. Подход, который я взял, заключался в том, чтобы скопировать array1 в array2 с использованием for loop, чем удалить array1, и повторно объявить array1, с еще одним элементом, чем предыдущий array1. И скопируйте array2 в array1, а затем инициализируйте новый элемент в array1. Но я предполагаю, что нет способа удалить array, так как я могу добавить элемент в array после его объявления.Как добавить элемент в массив?

+2

Вы не можете «удалить» переменные (но они могут выйти из области видимости). И вы не хотите менять тип переменной, даже если бы могли. Ваш вопрос пахнет проблемой [XY] (http://mywiki.wooledge.org/XyProblem), где вы спрашиваете, как решить конкретную проблему с кодом, когда лучшим решением является использование совершенно другого подхода. Лучше, чтобы вы рассказали нам общую проблему, которую пытаетесь решить, а не то, как вы сейчас пытаетесь ее решить. –

+0

Также вы смешиваете переменную со значением или ссылкой, которую она удерживает. –

+0

@HovercraftFullOfEels позвольте мне переформулировать мой вопрос .. – Eddie

ответ

0

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

В вашем случае используйте nameOfThing1 или nameOfThing2, чтобы их отличить. В большинстве случаев, когда что-то «имя» является числом, его обычно называют «id».

В зависимости от ситуации другая стратегия заключается в том, чтобы перестроить ваш код, чтобы переменные не были в области одновременно. Вы можете объявить блок, используя { }, чтобы сделать отдельную область для каждой переменной.

0

Предположим, у меня есть int named NAME, и мне нужно удалить его, чтобы создать строку с тем же именем. Будет ли NAME = null удалять int?

Нет. Это даст вам ошибку компиляции.

Если это не так, то как вы можете удалить переменную?

Вы не можете. Переменные не могут быть удалены.

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

Одним из решений является объявление другой переменной с другим именем переменной. Использование лучших имен переменных поможет.

В качестве альтернативы, вы можете использовать масштаб области, чтобы управлять областью действия/временем жизни (локальной) переменной. Например:

public void doIt() { 
    int a = 1; 
    { 
     String a = "hey"; // compilation error 
     int b = 2; 
    } 
    String b = "bee";  // OK 
} 

Обратите внимание, что вы можете сделать это только с помощью локальных переменных.

Если вы беспокоитесь о «накладных расходах на эффективность» при наличии нескольких переменных одновременно, не делайте этого. Если есть значительная проблема с точки зрения эффективности, компилятор JIT должен иметь возможность справиться с этим. (Если не сейчас, то в будущей версии Java.)

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