一、對象和引用 1.對象:目前在使用new運算符在堆記憶體中開闢的記憶體空間成為對象。 2.引用:是一個變數,不一定是局部變數,好可能是成員變數,引用保存了記憶體地址,指向了堆記憶體中對象。所有訪問實例的相關數據,都需要通過“引用.”的方式訪問,因為只有通過引用才能找到對象。只有一個空的引用,訪問對象的實例 ...
一、對象和引用
1.對象:目前在使用new運算符在堆記憶體中開闢的記憶體空間成為對象。
2.引用:是一個變數,不一定是局部變數,好可能是成員變數,引用保存了記憶體地址,指向了堆記憶體中對象。所有訪問實例的相關數據,都需要通過“引用.”的方式訪問,因為只有通過引用才能找到對象。只有一個空的引用,訪問對象的實例相關的數據會出現空指針異常。
3.參數的傳遞
主要研究和學習的是方法在調用的時候,涉及到參數傳遞的問題,到底是怎麼傳遞數據的呢?
方法調用的時候,涉及到參數傳遞的問題,傳遞的時候,java只遵循一種語法機制,就是將變數中保存的“值”傳遞過去了,只不過有的時候這個值是一個基本數據類型的字面值,有的時候是另一個java對象的記憶體地址0x1234
二、this關鍵字
1.this是一個關鍵字,翻譯為“這個”
2.this是一個引用,this是一個變數,this變數中保存了記憶體地址指向了自身,this存儲在JVM堆記憶體java對象內部。
3.創建任何一個對象,每一個對象都有this。
package com.bjpowernode.java_learning; public class D40_ { public static void main(String[] args) { Customer c1 = new Customer(); c1.name = "zhangsan"; Customer c2 = new Customer(); c2.name = "" } public class Customer { String name; } }
4.沒有static關鍵字的方法被稱為“實例方法”
5.沒有static關鍵字的變數被稱為“實例方法”
6.註意:當一個行為/動作執行的過程中,是需要對象參與的,那麼這個方法一定要定義為“實例方法”,不要帶static關鍵字,
例子:
以下方法定義為實例方法,是因為每一個顧客在真正的購物的時候,最終的結果是不同的。所以這個動作在完成的時候必須有對象的參與。
package com.bjpowernode.java_learning; public class Customer{ String name; // 當張三在購物的時候,輸出”張三在購物“ // 當李四購物的時候,輸出”李四在購物“ public shopping() { System.out.println(this.mame + "在購物");//對象是有名字的,這裡的this就是代表對象名 } }
package com.bjpowernode.java_learning; public class D40_this_keyword { public static void main(String[] args) { Customer c1 = new Customer(); c1.name = "zhangsan"; Customer c2 = new Customer(); c2.name = "lisi"; c1.shopping(); c2.shopping(); } }
7.this可以出現在”實例方法”當中,this指向當前正在執行這個動作的對象。
三、源碼:
D40_this_keyword
Customer.java
地址:
https://github.com/ruigege66/Java/blob/master/D40_this_keyword
https://github.com/ruigege66/Java/blob/master/Customer.java
2.CSDN:https://blog.csdn.net/weixin_44630050(心悅君兮君不知-睿)
3.博客園:https://www.cnblogs.com/ruigege0000/
4.歡迎關註微信公眾號:傅里葉變換,個人公眾號,僅用於學習交流,後臺回覆”禮包“,獲取大數據學習資料