亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

首頁 Java Java入門 javathis關(guān)鍵字有什麼用法

javathis關(guān)鍵字有什麼用法

Oct 19, 2020 pm 03:03 PM
java this

java中this關(guān)鍵字的用法:1、呼叫本類別中的屬性,即類別中的成員變數(shù);2、呼叫本類別中的其它方法;3、呼叫本類別中的其它建構(gòu)方法,呼叫時需要放在構(gòu)造方法的首行。

javathis關(guān)鍵字有什麼用法

this關(guān)鍵字主要有三個應(yīng)用:

this呼叫本類別中的屬性,也就是類別中的成員變數(shù);

this呼叫本類別中的其他方法;

this呼叫本類別中的其他建構(gòu)方法,呼叫時要放在建構(gòu)方法的首行。

呼叫成員變數(shù)

(推薦教學(xué):java課程

結(jié)合程式碼來說,會更具體一點。參考下面這段程式碼:

public class Student{
    String name;
    private void SetName(String name){
        this.name = name;
    }
}

這段程式碼中,建立了一個類別Student,有成員變數(shù)name與成員方法SetName(String name),由於成員方法接收的形參名稱與成員變數(shù)相同,都是name,所以,這裡可以使用this關(guān)鍵字來呼叫本類中的成員變數(shù)。其作用可以簡單的這麼理解:this關(guān)鍵字就是呼叫本類別中的成員變數(shù)。

但是這樣簡單的理解並不準確,this其實是當(dāng)前類別物件的引用,透過目前這個類別實例化的物件的引用來存取物件的成員變數(shù)。

注意:

this關(guān)鍵字存取類別的成員變數(shù)和成員函數(shù)時不受存取權(quán)限的控制,可以存取本類別中所有的成員變數(shù)和方法,包括private的成員變量和方法。也可以透過this訪問本類的static成員,不過由於static成員可以透過類別名稱直接訪問,如果透過this來存取會有「The static field ××× should be accessed in a static way」的警告訊息。不能在類別的static成員或static區(qū)塊中使用this。

呼叫成員方法

可參考如下程式碼:

package Test;

public class ThisTest {
    String name;

    private void setName(String name) {
        this.name = name;
        System.out.println("setName: " + this.name);
    }

    private void thisTest(String name) {
        this.setName(name);
        System.out.println("thisTest: " + this.name);
    }

    public static void main(String[] args) {
        ThisTest tt = new ThisTest();

        tt.setName("Yida");
        tt.thisTest("Jenny");

    }
}

這段程式碼中,首先創(chuàng)建了Test類,該類別與之前的沒什麼區(qū)別,只是增加了一個成員方法thisTest(),在這個成員方法中,透過this關(guān)鍵字呼叫了先前的成員函數(shù)setName(),程式運行結(jié)果如下所示:

setName: Yida
setName: Jenny
thisTest: Jenny

呼叫建構(gòu)方法

建構(gòu)方法是一個類別的物件在透過new關(guān)鍵字建立時自動呼叫的,在程式中不能向呼叫其他方法一樣透過方法名稱(也就是類別名稱)來呼叫。但如果一個類別有多個建構(gòu)方法,可以在一個建構(gòu)方法中透過this(paras…)來呼叫其他的建構(gòu)方法。

使用this來呼叫其他建構(gòu)方法有以下幾個限制:

#只能在建構(gòu)方法中透過this來呼叫其他建構(gòu)方法,在普通方法中不能使用。

不能透過this遞歸呼叫建構(gòu)方法,也就是不能在一個建構(gòu)方法中透過this直接或間接呼叫該建構(gòu)方法本身。

透過this呼叫其他建構(gòu)方法必須放在建構(gòu)方法的第一行中執(zhí)行。

由於super呼叫父類別的建構(gòu)子也必須放在建構(gòu)方法的第一行中執(zhí)行,因此,透過this和super呼叫建構(gòu)方法不能同時出現(xiàn)一個建構(gòu)方法中。也不能在一個構(gòu)造方法中多次呼叫不同的構(gòu)造方法。

以下程式碼是錯誤的,因為透過this關(guān)鍵字,形成了遞歸呼叫:

//錯誤的示例?。?!
class test {
    test() {
        this(1);
    }
    test(int a){
        this();
    }
    tes int b) {
        this(1, 2);
    }
}

正確的使用如下所示:

public class Student { //定義一個類,類的名字為student。 
    public Student() { //定義一個方法,名字與類相同故為構(gòu)造方法
        this(“Hello!”);
    }
    public Student(String name) { //定義一個帶形式參數(shù)的構(gòu)造方法
    }
}

傳回物件的值

this關(guān)鍵字除了可以引用變數(shù)或成員方法之外,還有一個重大的作用就是傳回類別的引用。如在程式碼中,可以使用return this,來傳回某個類別的引用。此時這個this關(guān)鍵字就代表類別的名稱。如程式碼在上面student類別中,那麼程式碼代表的意思就是return student??梢?,這個this關(guān)鍵字除了可以引用變數(shù)或成員方法之外,還可以作為類別的回傳值,這才是this關(guān)鍵字最引人注目的地方。

相關(guān)推薦:java入門

以上是javathis關(guān)鍵字有什麼用法的詳細內(nèi)容。更多資訊請關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願投稿,版權(quán)歸原作者所有。本站不承擔(dān)相應(yīng)的法律責(zé)任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請聯(lián)絡(luò)admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅(qū)動的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Laravel 教程
1597
29
PHP教程
1488
72
VSCODE設(shè)置。 JSON位置 VSCODE設(shè)置。 JSON位置 Aug 01, 2025 am 06:12 AM

settings.json文件位於用戶級或工作區(qū)級路徑,用於自定義VSCode設(shè)置。 1.用戶級路徑:Windows為C:\Users\\AppData\Roaming\Code\User\settings.json,macOS為/Users//Library/ApplicationSupport/Code/User/settings.json,Linux為/home//.config/Code/User/settings.json;2.工作區(qū)級路徑:項目根目錄下的.vscode/settings

如何使用JDBC處理Java的交易? 如何使用JDBC處理Java的交易? Aug 02, 2025 pm 12:29 PM

要正確處理JDBC事務(wù),必須先關(guān)閉自動提交模式,再執(zhí)行多個操作,最後根據(jù)結(jié)果提交或回滾;1.調(diào)用conn.setAutoCommit(false)以開始事務(wù);2.執(zhí)行多個SQL操作,如INSERT和UPDATE;3.若所有操作成功則調(diào)用conn.commit(),若發(fā)生異常則調(diào)用conn.rollback()確保數(shù)據(jù)一致性;同時應(yīng)使用try-with-resources管理資源,妥善處理異常並關(guān)閉連接,避免連接洩漏;此外建議使用連接池、設(shè)置保存點實現(xiàn)部分回滾,並保持事務(wù)盡可能短以提升性能。

Python Itertools組合示例 Python Itertools組合示例 Jul 31, 2025 am 09:53 AM

itertools.combinations用於生成從可迭代對像中選取指定數(shù)量元素的所有不重複組合(順序無關(guān)),其用法包括:1.從列表中選2個元素組合,如('A','B')、('A','C')等,避免重複順序;2.對字符串取3個字符組合,如"abc"、"abd",適用於子序列生成;3.求兩數(shù)之和等於目標值的組合,如1 5=6,簡化雙重循環(huán)邏輯;組合與排列的區(qū)別在於順序是否重要,combinations視AB與BA為相同,而permutations視為不同;

在Java的掌握依賴注入春季和Guice 在Java的掌握依賴注入春季和Guice Aug 01, 2025 am 05:53 AM

依賴性(di)IsadesignpatternwhereObjectsReceivedenciesenciesExtern上,推廣looseSecouplingAndEaseerTestingThroughConstructor,setter,orfieldInjection.2.springfraMefringframeWorkSannotationsLikeLikeLike@component@component,@component,@service,@autowiredwithjava-service和@autowiredwithjava-ligatiredwithjava-lase-lightike

Python Pytest夾具示例 Python Pytest夾具示例 Jul 31, 2025 am 09:35 AM

fixture是用於為測試提供預(yù)設(shè)環(huán)境或數(shù)據(jù)的函數(shù),1.使用@pytest.fixture裝飾器定義fixture;2.在測試函數(shù)中以參數(shù)形式註入fixture;3.yield之前執(zhí)行setup,之後執(zhí)行teardown;4.通過scope參數(shù)控製作用域,如function、module等;5.將共用fixture放在conftest.py中實現(xiàn)跨文件共享,從而提升測試的可維護性和復(fù)用性。

故障排除常見的java`ofmemoryError`場景'' 故障排除常見的java`ofmemoryError`場景'' Jul 31, 2025 am 09:07 AM

java.lang.OutOfMemoryError:Javaheapspace表示堆內(nèi)存不足,需檢查大對象處理、內(nèi)存洩漏及堆設(shè)置,通過堆轉(zhuǎn)儲分析工具定位並優(yōu)化代碼;2.Metaspace錯誤因類元數(shù)據(jù)過多,常見於動態(tài)類生成或熱部署,應(yīng)限制MaxMetaspaceSize並優(yōu)化類加載;3.Unabletocreatenewnativethread因係統(tǒng)線程資源耗盡,需檢查線程數(shù)限制、使用線程池、調(diào)整棧大??;4.GCoverheadlimitexceeded指GC頻繁但回收少,應(yīng)分析GC日誌,優(yōu)化

如何使用Java的日曆? 如何使用Java的日曆? Aug 02, 2025 am 02:38 AM

使用java.time包中的類替代舊的Date和Calendar類;2.通過LocalDate、LocalDateTime和LocalTime獲取當(dāng)前日期時間;3.使用of()方法創(chuàng)建特定日期時間;4.利用plus/minus方法不可變地增減時間;5.使用ZonedDateTime和ZoneId處理時區(qū);6.通過DateTimeFormatter格式化和解析日期字符串;7.必要時通過Instant與舊日期類型兼容;現(xiàn)代Java中日期處理應(yīng)優(yōu)先使用java.timeAPI,它提供了清晰、不可變且線

了解Java虛擬機(JVM)內(nèi)部 了解Java虛擬機(JVM)內(nèi)部 Aug 01, 2025 am 06:31 AM

TheJVMenablesJava’s"writeonce,runanywhere"capabilitybyexecutingbytecodethroughfourmaincomponents:1.TheClassLoaderSubsystemloads,links,andinitializes.classfilesusingbootstrap,extension,andapplicationclassloaders,ensuringsecureandlazyclassloa

See all articles