當前位置:首頁 » 編程語言 » java構造方法this

java構造方法this

發布時間: 2022-09-06 22:26:34

java中「this」的用法是什麼

一、指自己所在的對象。
比如在一個方法中,調用其他對象的變數或方法時,可以使用那個對象的對象名,比如aa.abc();
而調用自己所在對象的方法或變數時,不知道別人給起了什麼名,所以直接用this.abc()就可以了。
二、看一個小例子中「this」的用法!

/**

* @author feng-neusoft

*

* 本示例為了說明this的三種用法!

*/

package test;

public class ThisTest {

private int i=0;

//第一個構造器:有一個int型形參

ThisTest(int i){

this.i=i+1;//此時this表示引用成員變數i,而非函數參數i

System.out.println("Int constructor i——this.i: "+i+"——"+this.i);

System.out.println("i-1:"+(i-1)+"this.i+1:"+(this.i+1));

//從兩個輸出結果充分證明了i和this.i是不一樣的!

}

// 第二個構造器:有一個String型形參

ThisTest(String s){

System.out.println("String constructor: "+s);

}

// 第三個構造器:有一個int型形參和一個String型形參

ThisTest(int i,String s){

this(s);//this調用第二個構造器

//this(i);

/*此處不能用,因為其他任何方法都不能調用構造器,只有構造方法能調用他。

但是必須注意:就算是構造方法調用構造器,也必須為於其第一行,構造方法也只能調

用一個且僅一次構造器!*/

this.i=i++;//this以引用該類的成員變數

System.out.println("Int constructor: "+i+"/n"+"String constructor: "+s);

}

public ThisTest increment(){

this.i++;

return this;//返回的是當前的對象,該對象屬於(ThisTest)

}

public static void main(String[] args){

ThisTest tt0=new ThisTest(10);

ThisTest tt1=new ThisTest("ok");

ThisTest tt2=new ThisTest(20,"ok again!");

System.out.println(tt0.increment().increment().increment().i);

//tt0.increment()返回一個在tt0基礎上i++的ThisTest對象,

//接著又返回在上面返回的對象基礎上i++的ThisTest對象!

}

}

運行結果:

Int constructor i——this.i: 10——11

String constructor: ok

String constructor: ok again!

Int constructor: 21

String constructor: ok again!

14

細節問題注釋已經寫的比較清楚了,總結一下,其實this主要要三種用法:

1、表示對當前對象的引用!

2、表示用類的成員變數,而非函數參數,注意在函數參數和成員變數同名是進行區分!其實這是第一種用法的特例,比較常用,所以那出來強調一下。

3、用於在構造方法中引用滿足指定參數類型的構造器(其實也就是構造方法)。但是這里必須非常注意:只能引用一個構造方法且必須位於開始!

還有就是注意:this不能用在static方法中!所以甚至有人給static方法的定義就是:沒有this的方法!雖然誇張,但是卻充分說明this不能在static方法中使用!

⑵ java 構造函數 this

你先要去弄懂this的三種用法:
有三種用法:
1、表示對當前對象的引用!

2、表示用類的成員變數,而非函數參數,注意在函數參數和成員變數同名是進行區分!其實這是第一種用法的特例,比較常用,所以那出來強調一下。

3、用於在構造方法中引用滿足指定參數類型的構造器(其實也就是構造方法)。但是這里必須非常注意:只能引用一個構造方法且必須位於開始!

還有就是注意:this不能用在static方法中!
你的實例中 在類B的構造方法中
public B(A a)
通過方法重載 帶了A的一個實例 通過this.a=a;
給類B中的A對象賦值
在類A中 b=new B(this);
因為B b=new B(new a());
而this表示當前類的實例

⑶ java中this的作用及用法是什麼

使用this調用本類中的屬性

現在觀察以下代碼,看會有那些問題:

public void setName(String name){

name = name ;

}

這裡面的兩個name都是setName方法中的name參數。

此時,特別希望可以通過一個指定的標識明確的表示要把傳入的name參數的值給類中的屬性,所以此時就需要使用this關鍵字,使用this.name就表示類中的屬性。

class Person{

private String name ;

private int age ;

public Person(String name,int age){

this.setName(name) ;

this.setAge(age) ;

}

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 void print(){

System.out.println("姓名:"+this.name+",年齡:"+this.age) ;

}

};

public class Demo35{

public static void main(String args[]){

Person p1 = new Person("張三",30) ;

p1.print() ;

}

};

使用this還可以從一個構造方法中調用其他構造方法。

例如:有以下一個要求,一個類中存在了三個構造方法,但是要求,不管怎麼調用,最終都要求可以在對象實例化的時候列印一個「新的對象產生了」的提示。

class Person{

private String name ;

private int age ;

public Person(){

System.out.println("新的對象產生了。。。") ;

}

public Person(String name){

System.out.println("新的對象產生了。。。") ;

this.setName(name) ;

}

public Person(String name,int age){

System.out.println("新的對象產生了。。。") ;

this.setName(name) ;

this.setAge(age) ;

}

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 void print(){

System.out.println("姓名:"+this.name+",年齡:"+this.age) ;

}

};

以上代碼雖然可以實現功能,但是同樣的代碼出現了三次,而且後面的兩次出現純屬多餘吧。用this()的形式可以調用類中的無參構造方法。

class Person{

private String name ;

private int age ;

public Person(){

System.out.println("新的對象產生了。。。") ;

}

public Person(String name){

// 最終都是調用無參構造方法

this() ;

this.setName(name) ;

}

public Person(String name,int age){

this(name) ;

this.setAge(age) ;

}

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 void print(){

System.out.println("姓名:"+this.name+",年齡:"+this.age) ;

}

};

public class Demo36{

public static void main(String args[]){

Person p1 = new Person("張三",30) ;

p1.print() ;

}

};

注意點1:

如果使用了this調用其他構造方法,則此語句,必須寫在構造方法的首行。

public void fun(){

// 發現在調用fun方法的時候,必須先設置name的值

this("zhangsan") ;

}

public Person(String name,int age){

this.setAge(age) ;

this(name) ; //--> 必須放在首行

}

注意點2:

使用this可以調用本類中的其他構造方法,但是至少留一個構造方法,作為程序的出口。

public Person(){

this("a",10) ;

System.out.println("新的對象產生了。。。") ;

}

public Person(String name){

// 最終都是調用無參構造方法

this() ;

this.setName(name) ;

}

public Person(String name,int age){

this(name) ; //--> 必須放在首行

this.setAge(age) ;

}

this最重要的特性 —— 表示當前對象

當前對象在程序中用以下形式體現:

· 當前操作此方法的對象,就稱為當前對象。

class Demo{

public void print(){

System.out.println(this) ;

}

};

public class Demo38{

public static void main(String args[]){

Demo d1 = new Demo() ;

System.out.println(d1) ;

d1.print() ;

System.out.println("---------------------") ;

Demo d2 = new Demo() ;

System.out.println(d2) ;

d2.print() ;

}

};

回顧:

之前講解的兩個對象比較的程序。

// 在類的內部增加一個比較的方法

public boolean compare(Person p){

Person p1 = this ;

Person p2 = p ;

if(p1.name.equals(p2.name)&&p1.age==p2.age){

return true ;

}else{

return false ;

}

}

分析程序的運行過程:

class A{

private B b = null ;

public A(){

this.b = new B(this) ;

this.b.fun() ;

}

public void hello(){

System.out.println("Hello World!!!") ;

}

};

class B{

private A a = null ;

public B(A a){

this.a = a ;

}

public void fun(){

this.a.hello() ;

}

};

public class OODemo40{

public static void main(String args[]){

A aa = new A() ;

}

};

⑷ Java 構造方法重載後,在構造方法中可以使用this語句進行構造方法之間的調用,

  1. 兩個構造方法不能用this相互調用,this調用構造方法的最大個數只能是構造方法總數-1

  2. 否則會出現無限遞歸調用。

  3. 也就是說兩個構造方法不能同時用this調用另一個,會產生無限的遞歸調用。

  4. 如下代碼:就會無限遞歸。

classA{

inta;

intb;

A(inta){

this(a,0);

}

A(inta,intb){

this(a);

thia.b=b;

}

}

⑸ java中this的用法

java中this有兩種用法:
1、代表當前類
public class Dog{
private String name;
private float age;
public setName(String name){
this.name = name;
}
.......
}
這里的this就代表的當前的這個Dog類。this.name可以理解為dog.name,只是理解,不是等於。
2、在構造函數中的使用
public class Dog{
private String name;
private int age;
//有一個參數的構造函數
public Dog(String name){
this.name = name;
}
public Dog(String name,int age){
this.name = name;
this.age = age;
}
//這個無參構造方法里調用的有兩個參數的構造方法,這個也就是this的第二種用法了!
public Dog(){
this("nihao",20);
}
}

⑹ this()在java中什麼意思

this表示類實例本身。

this的用法:

1、表示對當前對象的引用!

publicclassA{

publicAgetA(){

returnthis;//表示獲取當前實例本身

}

}

2、表示類的成員變數,而非函數參數,注意在函數參數和成員變數同名是進行區分!

publicclassA{

privateinta=0;//位置1

publicAgetA(inta){

this.a=a;//前面this.a表示位置1的a,賦值=號右側的表示參數a

}

}

3、用於在構造方法中引用滿足指定參數類型的構造器。

publicclassA{

publicA(inta){

}

publicA(){

this(1);//這里調用自身的構造函數publicA(inta){

}

}

⑺ java構造方法中「this.x=a」與「this.x=x」分別是什麼意思

我想你對java中的 成員變數和局部變數 的定義和范圍不太了解吧。
先簡單的解釋一下
1、成員變數
指代在類中,方法外 定義的 基本數據類型 稱之為 成員變數,當然了,也是可以定義對象的,那樣就稱為成員屬性。
2、局部變數
指代在方法中定義出來的變數,可以是方法內聲明的,也可以是方法的傳入參數。

再解釋你上面的情況:
private int x ; 就是 成員變數了
public Abc(int a ){this.x=a; }

這個里的 int a 是方法的參數,也是局部變數 。
而內部使用的this.x 指代的是獲取當前類的屬性,這個屬性可以是方法,可以是變數,可以是對象。
因此,這個this.x 就是獲取了成員變數的 x

而你後面的方法
public Abc(int x ){this.x=x; }

這2個 x 是不同的 一個是 局部變數 ,一個是成員變數
this的都是成員的東西~

⑻ 關於Java中構造方法中使用this的問題,新手求大神解答

this 就是指的當前對象 也就是 你例子中 Person 的對象 this(name) 相當於調用了public Person(String name) 構造函數

你應該知道 super 指的是當前對象的父類對象 你經常在 當前對象的構造函數中看到 super();
這個就是在調用 父類對象的 空函數構造方法, this() 當然就是調用當前對象的空函數構造方法了
this(name) 自然就是調用當前對象帶一個參數的構造方法

⑼ java的構造方法裡面用this();再調用構造方法有什麼好處,有什麼用啊

java中this關鍵字有三個作用:
區別全局變數和局部變數
在方法中this表示誰調用該方法 this就代表誰
例如:public void show(){
Synchronized(this){
……}
}
同步代碼塊表示 哪個對象調用該方法 就得到哪個對象的對象鎖
構造器中this()表示調用形式參數相同的同一個類中的另一個構造器,這樣就可以代碼復用
就拿你那段代碼來說 this()就表示調用該類中 名稱是Note 形參是空的構造器 讓裡面的代碼在這個有參的構造器中再跑一遍

熱點內容
電腦電腦直連通訊ftp 發布:2025-01-13 15:38:03 瀏覽:717
nvm存儲 發布:2025-01-13 15:36:19 瀏覽:552
京東架構師緩存經驗 發布:2025-01-13 15:33:00 瀏覽:726
android圖片顏色 發布:2025-01-13 15:26:09 瀏覽:268
國家稅務總局電腦伺服器 發布:2025-01-13 15:10:24 瀏覽:596
金立老款機的開機密碼是多少 發布:2025-01-13 15:04:45 瀏覽:456
湖南網上辦稅初始密碼多少 發布:2025-01-13 15:02:49 瀏覽:417
怎麼使用筆記本連接伺服器 發布:2025-01-13 15:02:48 瀏覽:705
長城cs75plus選哪個配置 發布:2025-01-13 14:54:05 瀏覽:22
php與大象 發布:2025-01-13 14:48:34 瀏覽:344