Java類(lèi)中this關(guān)鍵字與static關(guān)鍵字的用法解析
前言
今天給大家總結(jié)介紹一下Java類(lèi)中this關(guān)鍵字和static關(guān)鍵字的用法。
this關(guān)鍵字用法:
- this.屬性可以調(diào)用類(lèi)中的成員變量
- this()可以調(diào)用類(lèi)中的構(gòu)造方法
1:修飾屬性,表示調(diào)用類(lèi)中的成員變量。
代碼示例:
public class Student { public String name; public int age; public String school; public Student(String name, int age, String school) { this.name = name; this.age = age; this.school = school; } }
因?yàn)槌绦虻木徒ヅ湓瓌t,編譯器會(huì)從調(diào)用代碼處的最近位置查找有無(wú)匹配的變量或者方法,若找到直接使用最近的變量或方法。所以如果上述代碼中的帶參構(gòu)造方法不使用this的話我們?cè)谑褂迷摌?gòu)造方法時(shí)會(huì)遇到無(wú)法賦值的問(wèn)題。
2:this修飾方法
this可用于構(gòu)造函數(shù)之間的相互調(diào)用,可以減少構(gòu)造函數(shù)代碼的耦合性,使代碼看起來(lái)更加整潔(不寫(xiě)重復(fù)代碼很重要)。
未使用this前:
public class Student { public String name; public int age; public String school; public Student() { } public Student(String name, int age) { this.name = name; this.age = age; } public Student(String name, int age, String school) { this.name = name; this.age = age; this.school = school; } }
使用this后:
public class Student { public String name; public int age; public String school; public Student() { } public Student(String name, int age) { this(); this.name = name; this.age = age; } public Student(String name, int age, String school) { this(name,age); this.school = school; } }
PS:
- 1.this調(diào)用構(gòu)造方法必須放在當(dāng)前構(gòu)造方法的首行調(diào)用,否則會(huì)報(bào)錯(cuò)。
- 2.對(duì)構(gòu)造方法的調(diào)用不能成"環(huán)”必須線性調(diào)用,否則會(huì)陷入調(diào)用死循環(huán)。
3:this表示當(dāng)前對(duì)象的引用
當(dāng)前是通過(guò)哪個(gè)對(duì)象調(diào)用的屬性或者方法,this就指代哪一個(gè)對(duì)象。
代碼示例:
public class Student { public String name; public int age; public String school; public void show(){ System.out.println(this); } public static void main(String[] args) { Student stu1 = new Student(); stu1.show(); System.out.println(stu1); System.out.println("————————————"); Student stu2 = new Student(); stu2.show(); System.out.println(stu2); System.out.println("————————————"); Student stu3 = new Student(); stu3.show(); System.out.println(stu3); } }
輸出結(jié)果:
static關(guān)鍵字用法:
在Java的類(lèi)中,若static修飾類(lèi)中屬性,稱之為類(lèi)的靜態(tài)屬性/類(lèi)屬性,它和具體的對(duì)象無(wú)關(guān),該屬性存儲(chǔ)在JVM的方法區(qū)(不同于堆區(qū)和棧區(qū)的另一個(gè)區(qū)域),類(lèi)中的所有對(duì)象共享同一個(gè)方法區(qū)(類(lèi)中的常量和靜態(tài)變量?jī)?chǔ)存在方法區(qū)中),直接使用類(lèi)名稱來(lái)訪問(wèn)靜態(tài)變量,不推薦使用某個(gè)對(duì)象來(lái)訪問(wèn)。
只要類(lèi)一定義,JVM就會(huì)為static修飾的類(lèi)屬性分配空間,它和類(lèi)是綁定的,使用static修飾變量的好處是當(dāng)我們需要修改一個(gè)值時(shí)可以更加方便,比如學(xué)生類(lèi)中的學(xué)校屬性,若學(xué)校改名字了,我們沒(méi)有使用static修飾,那么我們就要給每個(gè)學(xué)生丟修改一次,但是使用了static則只需要修改一次。
相關(guān)問(wèn)題:Java方法中是否可以定義靜態(tài)變量?
解答:靜態(tài)變量,當(dāng)類(lèi)定義時(shí)和類(lèi)一塊加載到內(nèi)存中了,而調(diào)用方法至少是在類(lèi)定義之后才能調(diào)用的,先后順序不一樣,就是說(shuō)還沒(méi)調(diào)用方法便已經(jīng)執(zhí)行了方法里面的定義變量,這是不合理的。
到此這篇關(guān)于Java類(lèi)中this關(guān)鍵字與static關(guān)鍵字的用法解析的文章就介紹到這了,更多相關(guān)Java類(lèi)this關(guān)鍵字與static關(guān)鍵字內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java實(shí)現(xiàn)求數(shù)組最長(zhǎng)子序列算法示例
這篇文章主要介紹了Java實(shí)現(xiàn)求數(shù)組最長(zhǎng)子序列算法,涉及java針對(duì)數(shù)組的遞歸遍歷、判斷相關(guān)操作技巧,需要的朋友可以參考下2018-07-07Java中生成隨機(jī)數(shù)的實(shí)現(xiàn)方法總結(jié)
這篇文章主要介紹了Java中生成隨機(jī)數(shù)的實(shí)現(xiàn)方法總結(jié),其中多線程并發(fā)的實(shí)現(xiàn)方式尤為exciting,需要的朋友可以參考下2015-11-11Java fastjson解析json字符串實(shí)現(xiàn)過(guò)程解析
這篇文章主要介紹了Java fastjson解析json字符串實(shí)現(xiàn)過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-10-10Springboot中MyBatisplus使用IPage和Page分頁(yè)的實(shí)例代碼
這篇文章主要介紹了Springboot中MyBatisplus使用IPage和Page分頁(yè),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-12-12JAVA 筆記 ClassLoader.getResourceAsStream() 與 Class.getResourc
這篇文章主要介紹了JAVA 筆記 ClassLoader.getResourceAsStream() 與 Class.getResourceAsStream()的區(qū)別,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-07-07如何用Dos命令運(yùn)行Java版HelloWorld你知道嗎
這篇文章主要介紹了在dos窗口中編譯和運(yùn)行java文件的方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-08-08Java之next()、nextLine()區(qū)別及問(wèn)題解決
這篇文章主要介紹了Java之next()、nextLine()區(qū)別及問(wèn)題解決,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-08-08Spring?AOP?創(chuàng)建代理對(duì)象詳情
這篇文章介紹了Spring?AOP?創(chuàng)建代理對(duì)象詳情,主要介紹AOP?創(chuàng)建代理對(duì)象和上下文相關(guān)的內(nèi)容,下文分享具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-05-05