オブジェクトやあみんな、私はJavaのprogramming.Iに新しいですが、Javaクラスを試してみましたし、私がやったことは、私はインスタンス変数xを作成し、コピーし、そのxの値がyのしていることです。 次に、引数として値またはxを取るコンストラクタを定義します。私はyの値を印刷しようとすると、 は、今ではしながら、0として値を与えるか、問題が起きているのはなぜそれが5 を与えるxは?我々は唯一のすべてのインスタンスフィールドが作成され、新しいキーワードやコンストラクタを使用する場合 はので、私はそう私は感じて、我々は唯一のすべてのインスタンスフィールドが作成され、新しいキーワードやコンストラクタを使用する場合、我々はJavaクラスは、動的なメモリ割り当て
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package test;
/**
*
* @author Mridul
*/
public class Test {
int x;
int y=x;
Test(int a)
{
x=a;
}
void print()
{
System.out.println(x);
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
Test ob=new Test(5);
ob.print();
System.out.println(ob.y);
// TODO code application logic here
}
}
Output
5
0
を使用した後のように感じます使用後のように
Test ob=new Test(5);
クラス内のすべてのコード(x、y = x)のみを実行する必要があり、問題を作成してはいけません。 あなたがTest
の新しいインスタンスを作成すると、これは(順番に)何が起こっている
'' x = a'は* copy *の一種です。 'a'の変更は' = 'の後に' x'に反映されません( 'int x;'は 'int x = 0') –
ですが、出力ではx = 5、y = 0となります –
...インスタンスフィールドの初期化は_before_コンストラクタ文を実行するためです。 – Seelenvirtuose