2014-10-28 3 views
0

Я хочу спросить о наличии каких-либо воздействий (таких как производительность) между этими двумя типами кодов.Дополнительная переменная или существующая переменная

Метод 1:

Object object = new Object();  // Different variables 
Object object2 = new Object(); 
. 
. 
. 

Метод 2:

Object object = new Object(); 
. 
. 
object = new Object();   // Reuse the same variable 
. 

Является ли это просто разные по стилю кодирования или какие-либо другие причины, такие как резерв памяти, более высокую производительность?

+4

Голосовать за стиль кодирования ... – MadProgrammer

+1

В обоих случаях вы создаете 2 экземпляра, не было бы влияния на производительность, которое стоит заботиться о ссылках. –

+0

Одна ссылка, указывающая на два разных 'объекта'. –

ответ

0

В методе 1 вы создаете две ссылки и задаете два разных объекта. Оба объекта не имеют права на сборщик мусора.

В методе2 вы создаете одну ссылку и назначаете новый объект, а затем снова создаете новый объект и назначаете его в ссылку. Теперь у вашего первого объекта нет ссылки, поэтому он имеет право на сборщик мусора.

Удачи !!!

0

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

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

0

WheWhen вы

Object object = new Object();  // Different variables 
Object object2 = new Object(); 

Вы создаете два объекта, где объект и object2 ссылки на них. Здесь вы намерены использовать оба объекта одновременно.

Когда вы

Object object = new Object(); 
. 
. 
object = new Object();   // Reuse the same variable 

Здесь еще вы создаете два объекта, но как только вы делаете объект = новый Object() второй раз, первый объект имеет право на GC при условии его не более не используется нигде.

Итак, каким образом вы должны идти, зависит от требований. Но с точки зрения производительности я не вижу большого влияния, кроме как во втором случае, первый объект имеет право на GC , если вы еще не передали ссылку на объект в другом месте.

0

При повторном использовании существующей переменной (как в вашем втором примере) вы потеряли бы ссылку на первый созданный объект. Если никакая другая переменная не ссылается на нее, это будет мусор, собранный JVM.

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