2016-10-10 161 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

如果您有命名冲突,最好的解决方案是使用更具描述性的变量名称。

在你的情况下,使用nameOfThing1nameOfThing2为了区分它们。但在大多数情况下,当某个“名称”是一个数字时,通常称为“id”。

根据情况,另一种策略是重构代码,以使变量不在同一时间范围内。您可以使用{ }声明一个块,以便为每个变量创建一个单独的作用域。

0

假设我有一个名为NAME的int,并且我需要删除它,以创建一个具有相同名称的String。将NAME = null删除int?

不会。它会给你一个编译错误。

如果不行,那么如何删除一个变量?

你不行。变量不能被删除。 (除此之外:如果可以更改变量名称与其声明类型之间的绑定,则Java的静态类型将会中断如果您(实际)删除了原始变量,那么这不会太糟糕,但它会无论如何...你不能)

一个解决方案是声明一个不同的变量与不同的变量名称。使用更好的变量名将有所帮助。

或者,您可以使用块范围来管理(本地)变量的范围/生存期。例如:

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

请注意,您只能对局部变量执行此操作。


如果您担心同时有多个变量的“效率开销”,请不要。如果存在显着的效率问题,JIT编译器应该能够处理它。 (如果不是现在,那么在将来的Java发行版中。)