中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java的this關鍵字用法

發布時間:2021-06-30 17:12:26 來源:億速云 閱讀:151 作者:chen 欄目:開發技術

本篇內容主要講解“Java的this關鍵字用法”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Java的this關鍵字用法”吧!

一、this關鍵字的作用

this關鍵字除了可以強調本類中的方法還具有以下作用。

1.表示類中的屬性

2.可以使用關鍵字調用本類中的構造方法

3.this表示當前對象

1.1表示類中的屬性

package thiss;

class Person{
    private int age;
    private String name;
    public Person(int age,String name){
        this.age=age;//為類中的age屬性賦值
        this.name=name;//為類中的name屬性賦值
    }
    public String getinfo(){
    return "姓名為:"+name+","+"年齡為:"+age;
    }
}

public class ThisDemo {
    public static void main(String[] args) {
        Person person = new Person(15,"張三");
        person.getinfo();
        System.out.println(person.getinfo());
    }

}

1.2使用this調用構造方法

如果在一個類中有多個構造方法,也可以使用this調用構造方法。使用this()調用構造方法,此語句必須放在構造方法的第一行。

package thiss;

class Person1{
    private int age;
    private String name;
    public Person1(){//無參構造方法

    }
    public Person1(String name){//一個參數的構造方法
        this();//調用無參構造方法
        this.name=name;
    }
    public Person1(int age,String name){//含有兩個參數的構造方法
        this(name);//調用含有一個參數的構造方法
        this.age=age;
    }
    public String getinfo(){
        return "姓名為:"+name+","+"年齡為:"+age;
    }
}

public class ThisDemo01 {
    public static void main(String[] args) {
        Person1  person = new Person1 (15,"張三");//調用構造方法實例化對象并初始化成員屬性。
        person.getinfo();
        System.out.println(person.getinfo());//調用方法輸出年齡和姓名。
    }

}

在使用this()調用構造方法的時候,至少有一個構造方法是不用this()調用的。
構造方法出現遞歸調用:recursive constructor invocation//避免出現遞歸調用,如下面代碼所示

package thiss;

class Person1{
    private int age;
    private String name;
    public Person1(){//無參構造方法
      **this("李四",10);//這樣會出現遞歸調用,編譯都不能通過**
    }
    public Person1(String name){//一個參數的構造方法
        this();//調用無參構造方法
        this.name=name;
    }
    public Person1(int age,String name){//含有兩個參數的構造方法
        this(name);//調用含有一個參數的構造方法
        this.age=age;
    }
    public String getinfo(){
        return "姓名為:"+name+","+"年齡為:"+age;
    }
}

public class ThisDemo01 {
    public static void main(String[] args) {
        Person1  person = new Person1 (15,"張三");//調用構造方法實例化對象并初始化成員屬性。
        person.getinfo();
        System.out.println(person.getinfo());//調用方法輸出年齡和姓名。
    }

}

1.3可以使用this表示當前對象

package thiss;

class Person2 {
    public String getinfo() {
        System.out.println("Person類的對象---》" + this);
        return null;
    }
}

public class ThisDemo02 {
        public static void main(String[] args) {
            Person2 person = new Person2();//調用構造方法實例化對象
            System.out.println("輸出main中的對象---》" + person);//輸出person中的對象
            person.getinfo();//調用Person2中的對象是否和main中的對象相同
        }
}

E:\Java\jdk\bin\java.exe “-javaagent:E:\Java\IDEA\IntelliJ IDEA 2019.1.3\lib\idea_rt.jar=58205:E:\Java\IDEA\IntelliJ IDEA 2019.1.3\bin” -Dfile.encoding=UTF-8 -classpath E:\Java\jdk\jre\lib\charsets.jar;E:\Java\jdk\jre\lib\deploy.jar;E:\Java\jdk\jre\lib\ext\access-bridge-64.jar;E:\Java\jdk\jre\lib\ext\cldrdata.jar;E:\Java\jdk\jre\lib\ext\dnsns.jar;E:\Java\jdk\jre\lib\ext\jaccess.jar;E:\Java\jdk\jre\lib\ext\jfxrt.jar;E:\Java\jdk\jre\lib\ext\localedata.jar;E:\Java\jdk\jre\lib\ext\nashorn.jar;E:\Java\jdk\jre\lib\ext\sunec.jar;E:\Java\jdk\jre\lib\ext\sunjce_provider.jar;E:\Java\jdk\jre\lib\ext\sunmscapi.jar;E:\Java\jdk\jre\lib\ext\sunpkcs11.jar;E:\Java\jdk\jre\lib\ext\zipfs.jar;E:\Java\jdk\jre\lib\javaws.jar;E:\Java\jdk\jre\lib\jce.jar;E:\Java\jdk\jre\lib\jfr.jar;E:\Java\jdk\jre\lib\jfxswt.jar;E:\Java\jdk\jre\lib\jsse.jar;E:\Java\jdk\jre\lib\management-agent.jar;E:\Java\jdk\jre\lib\plugin.jar;E:\Java\jdk\jre\lib\resources.jar;E:\Java\jdk\jre\lib\rt.jar;E:\Java\project\out\production\Demo01 thiss.ThisDemo02
輸出main中的對象—》thiss.Person2@4554617c
Person類的對象—》thiss.Person2@4554617c
Process finished with exit code 0

1.4比較兩個對象是否相同

class Person{		// 定義Person類
	private String name ;	// 姓名
	private int age ;		// 年齡
	public Person(String name,int age){
		this.setName(name) ;
		this.setAge(age) ;
	}
	public boolean compare(Person per){
		// 調用此方法時里面存在兩個對象:當前對象、傳入的對象
		Person p1 = this ;	// 當前的對象,就表示per1
		Person p2 = per ;	// 傳遞進來的對象,就表示per2
		if(p1==p2){	// 判斷是不是同一個對象,用地址比較
			return true ;
		}
		// 之后分別判斷每一個屬性是否相等
		if(p1.name.equals(p2.name)&&p1.age==p2.age){
			return true ;	// 兩個對象相等
		}else{
			return false ;	// 兩個對象不相等
		}
	}
	public void setName(String name){	// 設置姓名
		this.name = name ;
	}
	public void setAge(int age){		// 設置年齡
		this.age = age ;
	}
	public String getName(){
		return this.name ;
	}
	public int getAge(){
		return this.age ;
	}
};
public class ThisDemo08{
	public static void main(String args[]){
		Person per1 = new Person("張三",30) ;	// 聲明兩個對象,內容完全相等
		Person per2 = new Person("張三",30) ;	// 聲明兩個對象,內容完全相等
		// 直接在主方法中依次取得各個屬性進行比較
		if(per1.compare(per2)){
			System.out.println("兩個對象相等!") ;
		}else{
			System.out.println("兩個對象不相等!") ;
		}
	}
};

到此,相信大家對“Java的this關鍵字用法”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

大姚县| 濮阳县| 谢通门县| 施秉县| 吉首市| 金山区| 河西区| 尼玛县| 颍上县| 秦安县| 龙井市| 木兰县| 于都县| 金堂县| 堆龙德庆县| 正阳县| 壤塘县| 安龙县| 芒康县| 玛多县| 中西区| 正宁县| 伊吾县| 西昌市| 东明县| 霍州市| 维西| 金堂县| 明水县| 吉林省| 乌什县| 竹溪县| 清流县| 梁河县| 杨浦区| 乐山市| 浦江县| 栾川县| 巴塘县| 道真| 广宗县|