java
Dalam artikel ini, kita akan mempelajari tentang kata kunci ini di Java, bagaimana dan di mana menggunakannya dengan bantuan contoh.
Di Java, kata kunci ini digunakan untuk merujuk ke objek saat ini di dalam metode atau konstruktor. Misalnya,
class Main {
int instVar;
Main(int instVar){
this.instVar = instVar;
System.out.println("this reference = " + this);
}
public static void main(String[] args) {
Main obj = new Main(8);
System.out.println("object reference = " + obj);
}
}
Keluaran :
this reference = Main@23fc625e object reference = Main@23fc625e
Pada contoh di atas, kami membuat objek bernama obj dari kelas Utama . Kami kemudian mencetak referensi ke objek obj dan this
kata kunci kelas.
Di sini, kita dapat melihat bahwa referensi dari kedua obj dan this
adalah sama. Artinya ini tidak lain adalah referensi ke objek saat ini.
Ada berbagai situasi di mana this
kata kunci yang umum digunakan.
Di Java, tidak diperbolehkan untuk mendeklarasikan dua atau lebih variabel yang memiliki nama yang sama di dalam sebuah ruang lingkup (ruang lingkup kelas atau ruang lingkup metode). Namun, variabel instan dan parameter mungkin memiliki nama yang sama. Misalnya,
class MyClass {
// instance variable
int age;
// parameter
MyClass(int age){
age = age;
}
}
Dalam program di atas, variabel instan dan parameter memiliki nama yang sama:usia. Di sini, kompiler Java bingung karena ambiguitas nama.
Dalam situasi seperti itu, kami menggunakan kata kunci ini. Misalnya,
Pertama, mari kita lihat contohnya tanpa menggunakan this
kata kunci:
class Main {
int age;
Main(int age){
age = age;
}
public static void main(String[] args) {
Main obj = new Main(8);
System.out.println("obj.age = " + obj.age);
}
}
Keluaran :
obj.age = 0
Dalam contoh di atas, kami telah melewati 8
sebagai nilai bagi konstruktor. Namun, kami mendapatkan 0
sebagai keluaran. Ini karena kompiler Java menjadi bingung karena ambiguitas dalam nama antara instance variabel dan parameter.
Sekarang, mari kita tulis ulang kode di atas menggunakan this
kata kunci.
class Main {
int age;
Main(int age){
this.age = age;
}
public static void main(String[] args) {
Main obj = new Main(8);
System.out.println("obj.age = " + obj.age);
}
}
Keluaran :
obj.age = 8
Sekarang, kita mendapatkan output yang diharapkan. Itu karena ketika konstruktor dipanggil, this
di dalam konstruktor diganti dengan objek obj yang telah disebut konstruktor. Oleh karena itu usia variabel diberi nilai 8 .
Juga, jika nama parameter dan variabel instan berbeda, kompiler secara otomatis menambahkan kata kunci ini. Misalnya, kode:
class Main {
int age;
Main(int i) {
age = i;
}
}
setara dengan:
class Main {
int age;
Main(int i) {
this.age = i;
}
}
Penggunaan umum lainnya dari this
kata kunci ada di metode setter dan getter dari sebuah kelas. Misalnya:
class Main {
String name;
// setter method
void setName( String name ) {
this.name = name;
}
// getter method
String getName(){
return this.name;
}
public static void main( String[] args ) {
Main obj = new Main();
// calling the setter and the getter method
obj.setName("Toshiba");
System.out.println("obj.name: "+obj.getName());
}
}
Keluaran :
obj.name: Toshiba
Di sini, kami telah menggunakan this
kata kunci:
Saat bekerja dengan overloading konstruktor, kita mungkin harus memanggil satu konstruktor dari konstruktor lain. Dalam kasus seperti itu, kita tidak dapat memanggil konstruktor secara eksplisit. Sebagai gantinya, kita harus menggunakan this
kata kunci.
Di sini, kami menggunakan bentuk yang berbeda dari kata kunci ini. Yaitu, this()
. Mari kita ambil contoh,
class Complex {
private int a, b;
// constructor with 2 parameters
private Complex( int i, int j ){
this.a = i;
this.b = j;
}
// constructor with single parameter
private Complex(int i){
// invokes the constructor with 2 parameters
this(i, i);
}
// constructor with no parameter
private Complex(){
// invokes the constructor with single parameter
this(0);
}
@Override
public String toString(){
return this.a + " + " + this.b + "i";
}
public static void main( String[] args ) {
// creating object of Complex class
// calls the constructor with 2 parameters
Complex c1 = new Complex(2, 3);
// calls the constructor with a single parameter
Complex c2 = new Complex(3);
// calls the constructor with no parameters
Complex c3 = new Complex();
// print objects
System.out.println(c1);
System.out.println(c2);
System.out.println(c3);
}
}
Keluaran :
2 + 3i 3 + 3i 0 + 0i
Dalam contoh di atas, kami telah menggunakan this
kata kunci,
Complex(int i, int j)
dari konstruktor Complex(int i)
Complex(int i)
dari konstruktor Complex()
Perhatikan barisnya,
System.out.println(c1);
Di sini, ketika kita mencetak objek c1 , objek diubah menjadi string. Dalam proses ini, toString()
disebut. Karena kami mengganti toString()
metode di dalam kelas kami, kami mendapatkan output sesuai dengan metode itu.
Salah satu keuntungan besar this()
adalah untuk mengurangi jumlah duplikat kode. Namun, kita harus selalu berhati-hati saat menggunakan this()
.
Ini karena memanggil konstruktor dari konstruktor lain menambah overhead dan ini adalah proses yang lambat. Keuntungan besar lainnya menggunakan this()
adalah untuk mengurangi jumlah kode duplikat.
Catatan :Memanggil satu konstruktor dari konstruktor lain disebut pemanggilan konstruktor eksplisit.
Kita bisa menggunakan this
kata kunci untuk meneruskan objek saat ini sebagai argumen ke metode. Misalnya,
class ThisExample {
// declare variables
int x;
int y;
ThisExample(int x, int y) {
// assign values of variables inside constructor
this.x = x;
this.y = y;
// value of x and y before calling add()
System.out.println("Before passing this to addTwo() method:");
System.out.println("x = " + this.x + ", y = " + this.y);
// call the add() method passing this as argument
add(this);
// value of x and y after calling add()
System.out.println("After passing this to addTwo() method:");
System.out.println("x = " + this.x + ", y = " + this.y);
}
void add(ThisExample o){
o.x += 2;
o.y += 2;
}
}
class Main {
public static void main( String[] args ) {
ThisExample obj = new ThisExample(1, -2);
}
}
Keluaran :
Before passing this to addTwo() method: x = 1, y = -2 After passing this to addTwo() method: x = 3, y = 0
Pada contoh di atas, di dalam konstruktor ThisExample()
, perhatikan barisnya,
add(this);
Di sini, kami memanggil add()
metode dengan melewatkan ini sebagai argumen. Karena kata kunci ini berisi referensi ke objek obj kelas, kita dapat mengubah nilai x dan y di dalam add()
metode.
java
Pengecualian Java Dalam tutorial ini, kita akan belajar tentang exception di Java. Kami akan membahas kesalahan, pengecualian, dan berbagai jenis pengecualian di Java. Pengecualian adalah kejadian tak terduga yang terjadi selama eksekusi program. Ini mempengaruhi aliran instruksi program yang dapat
Antarmuka Koleksi Java Dalam tutorial ini, kita akan belajar tentang antarmuka Java Collection dan subinterface-nya. Collection antarmuka adalah antarmuka akar kerangka koleksi Java. Tidak ada implementasi langsung dari antarmuka ini. Namun, ini diimplementasikan melalui subinterfacenya seperti L
Apa Kata Kunci ini di Java? kata kunci ini di Jawa adalah variabel referensi yang mengacu pada objek metode atau konstruktor saat ini. Tujuan utama menggunakan kata kunci ini di Java adalah untuk menghilangkan kebingungan antara atribut kelas dan parameter yang memiliki nama yang sama. Berikut ada
Java melempar kata kunci Kata kunci lemparan Java digunakan untuk mendeklarasikan informasi pengecualian yang mungkin terjadi selama eksekusi program. Ini memberikan informasi tentang pengecualian untuk programmer. Sebaiknya berikan kode penanganan pengecualian sehingga aliran normal eksekusi progr