日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java 指代对象_java-This的理解

發(fā)布時(shí)間:2024/7/23 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java 指代对象_java-This的理解 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

都知道this是一個(gè)指代作用吧,但指代的是什么?

一般網(wǎng)上搜索的this 都說是“當(dāng)前對(duì)象”,但這樣說和沒說區(qū)別一個(gè)樣,什么是“當(dāng)前對(duì)象”都說不清楚。

但其實(shí),this指代得分下面4種情況來說。

有的是場(chǎng)景展示的(如一、三),另外兩個(gè)是偏應(yīng)用的(如二、四)。一般記住這4種情況即可。

但如果再總結(jié),其實(shí)也就分成兩種情況:一和二是一種,很常見,一般具備點(diǎn)Java基礎(chǔ)就不難理解;三和四是一種,就是文章開頭說的指代“當(dāng)前對(duì)象”的介紹說明,是本編博客介紹的重點(diǎn)!

一、構(gòu)造函數(shù)中用于區(qū)別同名的類的名字

class Person{

private String name ;

private int age ;

public Person(String name,int age){

this.name = name ; // 為類中的name屬性賦值

this.age = age ;// 為類中的age屬性賦值

}

public String getInfo(){ //

return "姓名:" + name + ",年齡:" + age ;

}

};

public class ThisDemo02{

public static void main(String args[]){

Person per1 = new Person("張三",33) ;

System.out.println(per1.getInfo()) ;

}

};

這種就是常見的,this指代Person類中的成員變量name或age,而不是構(gòu)造函數(shù)中的形參name或age,這個(gè)在eclipse里編寫的時(shí)候也會(huì)有顏色區(qū)分,很好理解this指代的是哪個(gè)。

上面運(yùn)行結(jié)果是: 姓名:張三,年齡:33

如果不加this,運(yùn)行結(jié)果是: 姓名:null,年齡:0;

二、構(gòu)造方法的相互調(diào)用用的?(偏應(yīng)用)

package methoud;

class Person{ // 定義Person類

private String name ; // 姓名

private int age ; // 年齡

public Person(){ // 無參構(gòu)造

System.out.println("新對(duì)象實(shí)例化") ;

}

public Person(String name){

this() ;// 調(diào)用本類中的無參構(gòu)造方法

this.name = name ;

}

public Person(String name,int age){ // 通過構(gòu)造方法賦值

this(name) ;// 調(diào)用有一個(gè)參數(shù)的構(gòu)造方法

this.age = age ;// 為類中的age屬性賦值

}

public String getInfo(){ // 取得信息的方法

return "姓名:" + name + ",年齡:" + age ;

}

};

public class ThisDemo06{

public static void main(String args[]){

Person per1 = new Person("張三",33) ; // 調(diào)用構(gòu)造實(shí)例化對(duì)象

System.out.println(per1.getInfo()) ; // 取得信息

}

};

運(yùn)行結(jié)果:

新對(duì)象實(shí)例化

姓名:張三,年齡:33

這個(gè)和構(gòu)造方法重載差不多,根據(jù)參數(shù)個(gè)數(shù)就能看出this方法指代的是哪一個(gè)構(gòu)造函數(shù)了。

注意點(diǎn):

在使用this關(guān)鍵字調(diào)用其他關(guān)鍵字的時(shí)候,有以下限制:

1)this()調(diào)用其他構(gòu)造方法的語句只能放在構(gòu)造方法(在其他普通方法里是不行的)的首行;

2)在使用this調(diào)用其他構(gòu)造方法的時(shí)候,至少有一個(gè)構(gòu)造方法是不用this調(diào)用的。(必須要有結(jié)尾,不能無限期的調(diào)用下去,循環(huán)遞歸調(diào)用);

錯(cuò)誤示范:

package methoud;

class Person{

private String name ;

private int age ;

public Person(){

System.out.println("新對(duì)象實(shí)例化") ;

}

public Person(String name){

this.name = name ;

this() ;// 調(diào)用this()方法只能放在構(gòu)造方法首行

}

public Person(String name,int age){

this(name) ;// 調(diào)用有一個(gè)參數(shù)的構(gòu)造方法

this.age = age ;

}

public String getInfo(){

this() ;// 其他普通方法不能調(diào)用this()方法

return "姓名:" + name + ",年齡:" + age ;

}

};

public class ThisDemo04{

public static void main(String args[]){

Person per1 = new Person("張三",33) ;

System.out.println(per1.getInfo()) ;

}

};

三、當(dāng)前對(duì)象

也就是:誰在調(diào)用這個(gè)方法,this就代表誰

下面的例子就能很好地幫助理解

class Person{

public String getInfo(){

System.out.println("Person類 --> " + this) ; // 直接打印this

return null ; // 為了保證語法正確,返回null

}

};

public class ThisDemo06{

public static void main(String args[]){

Person per1 = new Person() ;

Person per2 = new Person() ;

System.out.println("MAIN方法 --> " + per1) ;

per1.getInfo() ; // per1在調(diào)用這個(gè)方法,this指代的就是per1

System.out.println("MAIN方法 --> " + per2) ;

per2.getInfo() ; // per2在調(diào)用這個(gè)方法,this指代的就是per2

}

};

運(yùn)行結(jié)果:

四、用于對(duì)象之間的比較用的(偏應(yīng)用)

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){

// 調(diào)用此方法時(shí)里面存在兩個(gè)對(duì)象:當(dāng)前對(duì)象、傳入的對(duì)象

Person p1 = this ; // 當(dāng)前的對(duì)象,就表示per1。下面per1調(diào)用了compare方法,那么this指代的就是per1

Person p2 = per ; // 傳遞進(jìn)來的對(duì)象,就表示per2

if(p1==p2){

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("兩個(gè)對(duì)象完全相等!就是同一個(gè)對(duì)象!") ;

}else{

System.out.println("兩個(gè)對(duì)象不相等!") ;

}

}

};

運(yùn)行結(jié)果:

兩個(gè)對(duì)象不相等!

總結(jié)

以上是生活随笔為你收集整理的java 指代对象_java-This的理解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。