this とは自分のインスタンスを明示的に指定するものです。自分のクラスにあるメソッドや変数に「this」をつけることによって明示的に呼び出すことが出来ます。同名のローカル変数とインスタンス変数が存在した場合、何も指定しないでその変数を呼び出すとローカル変数の方が優先されます。そこで、自分のクラスのメンバーであるメソッドや変数を指定するために「this」を使うことが゙出来ます。
以下が、this の記述例になります。
this.メソッド名();
this.変数名;
以下が this を使い自分のクラス中からメソッドを呼び出すプログラムの例です。
public class ThisTest { public static void main(String[] args) { new ThisTest(); } public ThisTest() { //test1メソッドの呼び出し this.test1(); //test2メソッドの呼び出し this.test2(); } public void test1() { System.out.println("test1メソッドです。"); } public void test2() { System.out.println("test2メソッドです。"); } }
以下が実行結果になります。
test1メソッドです。
test2メソッドです。
同名のインスタンス変数とローカル変数が存在するクラスのプログラムの例です。
public class ThisTest { public String str = "インスタンス変数です。"; public static void main(String[] args) { new ThisTest(); } public ThisTest() { String str = "ローカル変数です。"; //インスタンス変数の呼び出し System.out.println(this.str); //ローカル変数の呼び出し System.out.println(str); } }
以下が実行結果です。
インスタンス変数です。
ローカル変数です。
上記の プログラムの実行結果をみてもわかるように、「this」を記述した変数はインスタンス変数が呼ばれ、何も記述しない変数はローカル変数が呼び出されていることがわかります。
上記のプログラムの例では、自分のクラスのメソッドを呼ぶときに「this」をつけていましたが、この「this」は記述しないことも出来ます。以下が、そのプログラムの例です。
public class ThisTest { public static void main(String[] args) { new ThisTest(); } public ThisTest() { //test1メソッドの呼び出し test1(); //test2メソッドの呼び出し test2(); } public void test1() { System.out.println("test1メソッドです。"); } public void test2() { System.out.println("test2メソッドです。"); } }
以上のように記述しても「this」を記述したプログラムの例と同じような実行結果が得られます。