Java this關鍵字

this 關鍵字有三個應用:
  1.this調用本類中的屬性,也就是類中的成員變量
  2.this調用本類中的其他方法
  3.this調用本類中的其他構造方法,調用時要放在構造方法的首行

來看下面這段代碼:
public String name;public void showName(String name) {System.out.println(name);
}

上面的代碼中有個叫name的成員變量,也有個同樣叫name的方法參數。那么showName方法會輸出參數的name還是成員變量name呢?

測試代碼:

Foo foo = new Foo();
foo.name = "張三";
foo.showName("李四");

運行結果:

李四

運行結果顯示答案是會輸出參數的name,原因是Java語法獲取變量的時候采取的是就近原則所以name代表的是離它最近的參數name。如果想要輸出成員變量name怎么辦,把參數名name改了嗎?那又得多想一個變量名多麻煩啊。還好Java提供了this關鍵字可以引用類的對象。


把上面的代碼改成:

public String name;public void showName(String name) {System.out.println("我是方法參數:" + name);System.out.println("我是類的屬性:" + this.name);
}

運行結果:

我是方法參數:李四
我是類的屬性:張三

可以看出this關鍵字代表調用改方法的對象,此時相當于對象foo。

再來看一個例子。

public Foo returnThis() {return this;
}public Foo getInstance() {return new Foo();
}

測試代碼:

Foo foo = new Foo();Foo foo2 = foo.returnThis();
Foo foo3 = foo.getInstance();
System.out.println("foo和foo2是同一對象嗎? --> " + (foo == foo2));
System.out.println("foo和foo3是同一對象嗎? --> " + (foo == foo3));

運行結果:

foo和foo2是同一對象嗎? --> true
foo和foo3是同一對象嗎? --> false

這個例子很明確的說明了“this關鍵字代表調用改方法的對象”,該例子中return this返回的是調用該方法的對象也就是foo,所以foo2和foo指向的是同一對象。而 new Foo是創建一個新的Foo對象。所以foo3和foo并不指向同一對象。

 

?

轉載于:https://www.cnblogs.com/Zombie-Xian/p/6245543.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/259798.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/259798.shtml
英文地址,請注明出處:http://en.pswp.cn/news/259798.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

linux下查看線程數的幾種方法

1、 cat /proc/${pid}/status 2、pstree -p ${pid} 3、top -p ${pid} 再按H 或者直接輸入 top -bH -d 3 -p ${pid} top -H手冊中說:-H : Threads toggle加上這個選項啟動top,top一行顯示一個線程。否則,它一行顯示一個進程。 4、ps xH手冊…

網站等保測評針對服務器,互聯互通測評知識分享之信息安全建設要點

原創 醫療測評實驗室 中國軟件評測中心 1周前醫院互聯互通測評,即國家醫療健康信息互聯互通標準化成熟度測評,近年來隨著政策的要求、需求的驅動、技術的更迭、價值的引領,越來越被業內人士接受和認可,測評熱度也水漲船高。國家衛…

樹櫻花滿樹繁花

廢話就不多說了,開始。。。 學院的櫻花開了,花開的很盛,滿樹的繁花揚張著天春的力活。 武漢三月的時候櫻花就開了,武大的學同在空間里發各種玩游的照片,真是羨煞旁人。大連的天春來得晚,但究終還是趕上了。…

pandas合并groupby_pandas實踐之GroupBy()

官網地址:https://pandas.pydata.org/docs/reference/groupby.htmlpandas中對數據進行分組操作的方法,官方有很詳細的教程。下面的案例是真實遇到的問題,看一看用pandas是如何解決的。構造數據import pandas as pdimport numpy as npdf pd.D…

自學 web 前端人怎么找工作?

1,你做過的項目可以體現你的價值。2,你的個人博客可以反映你的思考。3,你的GitHub頁面可以展示你的項目。4,你項目中的代碼可以看出你編程的風格。1,2,3,4之間有交集。當你能證明,你…

《Breakfast At Tiffanys》

"生活中似乎有些男性想象著能拯救和引導一個年輕美麗純潔善良卻迷茫的女子,有些女性也想象著能用自己的善良與包容來安慰一個才華橫溢卻飽經苦悶與貧窮的男子,老實說,這很有成就感。雖然我的語氣有些諷刺,但我相信在這些“光…

項目不需要SVN控制的時候,該怎么辦

今天要用一個項目,當項目不需要SVN控制的時候,我們一般怎么辦哪?可能很多人設置Windows顯示隱藏文件,然后將項目中的所有.svn文件刪除。下面,從網上找了個非常簡單的方法第一步:建立一個名字叫做remove-svn…

erdas遙感圖像幾何校正_定量/高光譜遙感之—光譜分析技術

文章轉載自微信公眾號CSDN,作者冰清-小魔魚,版權歸原作者及刊載媒體所有。在定量遙感或者高光譜遙感中,信息提取主要用到光譜/波譜分析技術。本專題對光譜/波譜分析中涉及的流程及一些技術進行講解,包括以下內容:基本概…

Zipkin-1.19.0學習系列1:java范例

2019獨角獸企業重金招聘Python工程師標準>>> 官網地址: https://github.com/openzipkin/zipkin http://zipkin.io/ https://www.oschina.net/p/zipkin 截止到2017/1/4為止,最新版本為: Zipkin 1.19 下載地址: https://github.com/openzipkin/zipkin/arc…

PageRank算法

1. PageRank算法概述 PageRank,即網頁排名,又稱網頁級別、Google左側排名或佩奇排名。 是Google創始人拉里佩奇和謝爾蓋布林于1997年構建早期的搜索系統原型時提出的鏈接分析算法,自從Google在商業上獲得空前的成功后,該算法也成為其他搜索引…

linux中_在 Linux 桌面中開始使用 Lumina | Linux 中國

本文是 24 天 Linux 桌面特別系列的一部分。Lumina 桌面是讓你使用快速、合理的基于 Fluxbox 桌面的捷徑,它具有你無法缺少的所有功能。-- Seth Kenlon多年來,有一個名為 PC-BSD 的基于 FreeBSD 的桌面操作系統(OS)。它旨在作為一個常規使用的系統&#…

彈體飛行姿態仿真軟件程序代寫

題目彈體飛行姿態仿真軟件畢業設計的任務和要求(1)掌握查閱參考文獻的方法 (2)對彈體飛行運行學模型有所研究 (3)在給定初始俯仰角、加速度、彈體質量等參數的前提下,完成彈體飛行軌跡的繪制及不…

Asp.net中實現同一用戶名同時登陸,注銷先前用戶(轉)

Web 項目中經常遇到的問題就是同一用戶名多次登陸的問題,相應的解決辦法也很多,總結起來不外乎這幾種解決辦法:將登陸后的用戶名放到數據庫表中;登陸后的用 戶名放到Session中;登陸后的用戶名放到Application中&#x…

hdu 2612 Find a way (廣搜)

Problem DescriptionPass a year learning in Hangzhou, yifenfei arrival hometown Ningbo at finally. Leave Ningbo one year, yifenfei have many people to meet. Especially a good friend Merceki.Yifenfei’s home is at the countryside, but Merceki’s home is in t…

使用Notepad++開發C#,一個復雜點的csscript腳本

使用Notepad開發C#,一個復雜點的csscript腳本: 12345678910111213141516171819//css_dir ....lib;//css_ref Geb.Image.dll;//css_ref Geb.Image.ShapeAnalysis.dll;//css_ref Geb.Utils.dll;//css_ref Geb.Utils.WinForm.dll;//css_co /unsafe; using S…

正則表達式里轉義字符_五分鐘搞定正則表達式,如果沒搞定,再加兩分鐘

五分鐘搞定正則表達式,如果沒搞定,再加兩分鐘【這是 ZY 第 18 篇原創文章】 文章概覽一、正則表達式介紹正則表達式,又稱規則表達式。(英語:Regular Expression,在代碼中常簡寫為regex、regexp或RE&#xf…

百度富文本編輯器,改變圖片上傳存儲路徑

我用的是最新版! 找到以下2個關鍵文件: YourPath.../Ueditor/php/config.json YourPath.../Ueditor/php/Uploader.class.php config.json找到如下代碼: "imagePathFormat": "...(這里不用管)",//找到imagePathFormat所在…

如何手動給Docker容器設置靜態IP

2019獨角獸企業重金招聘Python工程師標準>>> 要點: 1.首先需要在宿主機上虛擬出來一個真實可用橋接網卡比如br0 2.docker啟動的時候默認使用br0進行橋接網絡 3.創建docker容器的時候使用--netnone模式 4.手動為每個創建的容器生成靜態ip。但是ip每次在重…

獲取滾動條寬度代碼(記錄)

1.創建一個嵌套節點&#xff0c;讓外層節點產生滾動條。 2.用offsetWidth - clientWidth 即可獲得滾動條寬度。 為了避免頁面抖動&#xff0c;可以設置外層元素position:absolute和visibility:hidden 代碼如下&#xff1a; 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHT…

的函數原型_JS基礎函數、對象和原型、原型鏈的關系

JS的原型、原型鏈一直是比較難理解的內容&#xff0c;不少初學者甚至有一定經驗的老鳥都不一定能完全說清楚&#xff0c;更多的"很可能"是一知半解&#xff0c;而這部分內容又是JS的核心內容&#xff0c;想要技術進階的話肯定不能對這個概念一知半解&#xff0c;碰到…