在Java中this關鍵字的使用
關鍵詞:this
介紹
在學習Java中類的時候,你一定會接觸到this關鍵字。this關鍵字指向的是當前物件的引用。
詳解
首先,定義一個Person類
public class Person {
String name; //名字
//引數who是對方的名字
//成員變數name自己的名字
public void sayHello(String who) {
System.out.println(who + ",你好,我是:" + name);
}
}
再定義一個測試用例來訪問Person類
public class Demo01Person {
public static void main(String[] args) {
Person person = new Person();
//設定我自己的名字
person.name = "菜鳥";
person.sayHello("大佬");
}
}
以上的程式碼是沒有問題的。那麼,下面的程式碼改了引數名稱:
Person類
public class Person {
String name; //名字
//引數who是對方的名字
//成員變數name自己的名字
public void sayHello(String name) {
System.out.println(name + ",你好,我是:" + name);
}
這時候的輸出結果是:大佬,你好,我是:大佬。顯然,是引數的問題。
這時候,應該知道的是:
當方法的區域性變數和類的成員變數重名的時候,根據就近原則,優先使用區域性變數。如果需要訪問本類當中的成員變數,需要使用格式:
this.成員變數名
在測試用例中,我們可以看到的是,person
呼叫了sayHello()
的方法,那麼看以下通過this
來訪問成員變數的程式碼
public class Person {
String name; //名字
//引數who是對方的名字
//成員變數name自己的名字
public void sayHello(String name) {
System.out.println(name + ",你好,我是:" + this.name);
}
可以看到的輸出結果是大佬,你好,我是:菜鳥
證明
在成員方法中的person
呼叫了sayHello()
,通過person
呼叫方法,那麼person
就是this,
this.name其實就等價於person.name
接下來將進行證明:
列印出各自的person中name的地址,可以看到通過this的name和person的name,記憶體地址是相同的。
Person類程式碼
package com.itwcn.demo02;
/**
* @program: Person
* @description:
* @author: OriginalCoder
* @createtime:2020/10/27 20:54
**/
/**
* 當方法的區域性變數和類的成員變數重名的時候,根據就近原則,優先使用區域性變數
* 如果需要訪問本類當中的成員變數,需要使用格式:
* this.成員變數名
*/
/**
* 通過誰呼叫的方法,誰就是this
*/
public class Person {
String name; //名字
//引數who是對方的名字
//成員變數name自己的名字
public void sayHello(String name) {
System.out.println(name + ",你好,我是:" + this.name);
System.out.println(this);
}
//在成員方法中的person呼叫了sayHello(),通過person呼叫方法,那麼person就是this,
//this.name其實就等價於person.name
}
測試用例的程式碼:
package com.itwcn.demo02;
/**
* @program: Demo01Person
* @description:
* @author: OriginalCoder
* @createtime:2020/10/27 20:56
**/
public class Demo01Person {
public static void main(String[] args) {
Person person = new Person();
//設定我自己的名字
person.name = "菜鳥";
person.sayHello("大佬");
System.out.println(person);
}
}
相關文章
- Java中final關鍵字如何使用?Java
- java中this關鍵字Java
- java中的instanceof關鍵字Java
- java中的static關鍵字Java
- Java中final關鍵字Java
- Java中transient關鍵字的作用Java
- java中static關鍵字的作用Java
- Java中的各種關鍵字Java
- Java™ 教程(使用super關鍵字)Java
- Java中this與super關鍵字Java
- java中的static和final關鍵字Java
- Java 的 static 關鍵字Java
- 深入理解Java中的volatile關鍵字Java
- Java 中 instanceof 關鍵字 object instanceof ClassJavaObject
- js中new關鍵字的使用過程JS
- 併發系列之「Java中的synchronized關鍵字」Javasynchronized
- JAVA面試題 淺析Java中的static關鍵字Java面試題
- [java]transient關鍵字Java
- Java native關鍵字Java
- Java Final關鍵字Java
- Java關鍵字volatile的理解Java
- Java面試題:請談談Java中的volatile關鍵字?Java面試題
- Java 中的 transient 關鍵字和物件序列化Java物件
- Java 中 final 關鍵字有什麼用Java
- Java volatile關鍵字作用Java
- Java volatile關鍵字解析Java
- Java 關鍵字之 finalJava
- Java關鍵字(八)——synchronizedJavasynchronized
- 使用 Synchronized 關鍵字synchronized
- mysql 中的explain關鍵字MySqlAI
- [java基礎]之JAVA關鍵字Java
- AutoItlibrary 在 RF 和 PyCharm 使用中關鍵字不一致的問題PyCharm
- 深入瞭解 Java 的 volatile 關鍵字Java
- 被遺忘的Java關鍵字:transientJava
- 1_static關鍵字的使用
- java基礎-關鍵字finalJava
- Java併發--final關鍵字Java
- Java進階——super關鍵字Java