ini adalah penunjuk implisit ke dirinya sendiri. Sederhananya, objek mana yang memanggil metode di mana ini berada, maka ini adalah objek itu.
Contoh kode: TestThis_1.java
Copy kode kodenya sebagai berikut:
/* Pertanyaan: Apa ini
* Hasil keluaran:
* A@4e44ac6a
*/
kelas publik TestThis_1 {
public static void main(String[] args) {
A aa = baru A();
System.out.println(aa.f()); //aa.f(), mengembalikan referensi (pointer) dari objek aa
}
}
kelas A {
publik A f() {
return this; //Mengembalikan referensi ke objek kelas A dari objek yang memanggil metode f()
}
}
Kegunaan umum dari ini
1. Membedakan variabel yang mempunyai nama yang sama
Contoh kode: TestThis_2.java
Copy kode kodenya sebagai berikut:
/* Penggunaan umum 1 ini: Membedakan variabel dengan nama yang sama
* Hasil keluaran:
* ini. saya = 1
* saya = 33
*/
kelas publik TestThis_2 {
public static void main(String[] args) {
A aa = baru A(33);
}
}
kelas A {
public int i = 1; //Ini adalah variabel anggota
/*Catatan: Umumnya tidak ditulis seperti ini, konstruktornya terutama untuk inisialisasi, dan ditulis seperti ini terutama untuk kemudahan pemahaman*/
public A(int i) {//Ini i adalah variabel lokal
System.out.printf("this.i = %d/n", this.i); //ini.i mengacu pada variabel anggota i dari objek itu sendiri
System.out.printf("i = %d/n", i); //i di sini adalah variabel lokal i
}
}
2. Saling memanggil antar konstruktor
Contoh kode: TestThis_3.java
Copy kode kodenya sebagai berikut:
/* Penggunaan umum dari 2 ini: saling memanggil di konstruktor */
kelas publik TestThis_3 {
public static void main(String[] args) {
}
}
kelas A {
ke dalam aku, j, k;
publik A(int i) {
ini.i = saya;
}
publik A(ke dalam saya, ke dalam j) {
/* i = 3; error Jika tidak dikomentari, kesalahan akan dilaporkan: Saat memanggil konstruktor dengan ini(...), itu hanya dapat ditempatkan di kalimat pertama
* TestThis_3.java:20: error: panggilan ke ini harus berupa pernyataan pertama di konstruktor
* ini(saya);
* ^
*1 kesalahan
*/
ini (saya);
ini.j = j;
}
publik A(ke dalam i, ke dalam j, ke dalam k) {
ini(saya, j);
ini.k = k;
}
}
Hal-hal yang perlu diperhatikan
Metode yang dimodifikasi oleh statis tidak memiliki penunjuk ini. Karena metode yang dimodifikasi oleh static bersifat publik, maka tidak dapat diketahui objek spesifik mana yang dimilikinya.
Contoh kode: TestThis_4.java
Copy kode kodenya sebagai berikut:
/*Tidak ada penunjuk ini di dalam metode statis*/
kelas publik TestThis_4 {
public static void main(String[] args) {
}
}
kelas A {
statis A f() {
kembalikan ini;
/* Pesan kesalahan: TestThis_4.java:10: error: variabel non-statis ini tidak dapat direferensikan dari konteks statis
* kembalikan ini;
* ^
*1 kesalahan
*/
}
}