2016-10-10 10 views
-4

array1に要素を追加する必要があるとします。私が取ったアプローチは、array1を削除するよりも、for loopを使用してarray1をにコピーし、array1より1つ多くの要素で、再度宣言しました。そしてarray2array1にコピーし、新しい要素をarray1に初期化するよりも、しかし、私はarrayを削除する方法がないと推測しているので、その宣言の後にどのようにしてarrayに要素を追加できますか?要素を配列に追加する方法は?

+2

変数を「削除」することはできませんが、範囲外になる可能性があります。また、たとえ可能であっても、変数の型を変更する必要はありません。あなたの質問は、[XY問題](http://mywiki.wooledge.org/XyProblem)の匂いがあります。ここでは、最良の解決策が全く異なるアプローチを使用することで特定のコード問題を解決する方法を尋ねます。現在解決しようとしている方法ではなく、解決しようとしている全体的な問題を教えてください。 –

+0

また、あなたはそれが保持する値または参照と変数を混同しています。 –

+0

@HovercraftFullOfEels私の言葉を私の質問にさせてください.. – Eddie

答えて

0

名前の競合がある場合は、よりわかりやすい変数名を使用することをお勧めします。

あなたの場合は、区別するためにnameOfThing1またはnameOfThing2を使用してください。しかし、ほとんどの場合、「名前」が数字であるとき、それは通常「ID」と呼ばれます。

状況によっては、コードが再構成され、変数が同時にスコープに含まれないようにすることもできます。各変数に個別のスコープを作成するには、{ }を使用してブロックを宣言できます。

0

NAMEという名前のintがあり、それを削除して同じ名前のStringを作成する必要があるとします。 NAME = nullはintを削除しますか?

いいえ、コンパイルエラーが発生します。

もしそうでない場合、どのように変数を削除できますか?

できません。変数は削除できません。

(別名:変数の名前とその宣言された型の間のバインディングを変更することができれば、Javaの静的型付けは壊れてしまう)元の変数を削除してもとにかく...することはできません)

1つの解決策は、別の変数名で異なる変数を宣言することです。より良い変数名を使用すると役立ちます。

また、ブロックスコープを使用して(ローカル)変数の有効範囲/有効期間を管理することもできます。たとえば、次のようになります。

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

ローカル変数でのみ行うことができます。


複数の変数を同時に持つことの「効率のオーバーヘッド」が心配されている場合は、そうしないでください。重要な効率の問題がある場合は、JITコンパイラーがそれに対処できなければなりません。 (現時点ではない場合、将来のJavaリリースでは)

関連する問題