Javascript と Java での変数の宣言について質問があります。
int x = 6;
Javaで、コードで変数をグローバル変数として宣言し、途中で変更するとしましょうx = 10
。x
変数はその 6 を 10 で永久に置き換えますか? Javascript では、関数内でローカルではなくグローバル変数として途中でvar area = 6
変更したとしましょう。area = 12
永久に上書きされますか?
Javascript と Java での変数の宣言について質問があります。
int x = 6;
Javaで、コードで変数をグローバル変数として宣言し、途中で変更するとしましょうx = 10
。x
変数はその 6 を 10 で永久に置き換えますか? Javascript では、関数内でローカルではなくグローバル変数として途中でvar area = 6
変更したとしましょう。area = 12
永久に上書きされますか?
int は Java および Javascript の「プリミティブ」であり、名前を付ける変数に値として格納されます。変数の int を変更すると、その変数内の値が直接変更されます。古い値はもう存在しません。(この種の動作を値型と呼びます)
ただし、変数は REFERENCE オブジェクトのみであるため、オブジェクトは異なります。また、オブジェクトが可変 (Java 配列など) か不変 (Java 文字列など) であるかに応じて、オブジェクトに対する操作は、それを参照するすべての変数が参照するようにそのオブジェクトを変更します。新しいオブジェクトを参照する変数のみが変更を参照するように変更するか、変更を含む新しいオブジェクトを作成すると、古いオブジェクトは永久に不変になります。
はい、彼らはまさにそれを行うことを意図しています。状態を維持します。変数の状態を変更したくない場合は、final
Java のコンテキストで宣言することができます。
あなたの例では、簡単な答えは「はい」です! int を使用すると、値が置き換えられます。文字列を使用している場合、これらは不変であり、次の場合を意味します。
str = "こんにちは";
その後、次のようになります。
str = "こんにちは世界";
文字列値が置き換えられるのではなく、文字列の新しいインスタンスが作成されます。実際には、違いが見られない場合があります。