天天看點

黑馬程式員_this和static關鍵字

---------------------- android教育訓練、 java教育訓練、期待與您交流! ----------------------

7、this關鍵字:

當成員變量和局部變量重名的時候,為了區分這種情況我們可以使用一個關鍵字來完成,就是this

它代表的是什麼呢?This關鍵字代表的就是一個對象的引用。

代表哪個對象? 代表目前對象,它自己不是對象,隻是一個引用。

隻要是成員,必須被對象所調用。

總的一句話:定義功能時,如果功能中用到了本類對象,這時就使用this這個關鍵字表示這個對象。

實作代碼:

Eg:

Class Person

{

Private String name;

Private int age;

Person()

{

Name=name;

}

Person(String name,int age)

{

This();//像這樣的就是構造函數之間的調用,調用語句必須定義在第一行,這是規則。

This,name=name;//左右兩邊都是局部變量,并沒有把name指派給成員中的name和age,加this之後指的就是成員變量Name;

This.age=age;

}

Public void speak()

{

Int age=300;

Sop(this.name+this.age);

}

Public void method()

{

This.speak();

}

}

Class personDemo

{

Public static void main(Stirng[] args)

{

Person p1=new person('"lisi",30);

P1.speak();s

}

}

總結:構造函數之間的調用,構造函數中調用其他構造函數的this語句必須定義在構造函數的第一行,因為構造函數是用來初始化的。初始化的動作必須先執行。

黑馬程式員_this和static關鍵字

8、static靜态關鍵字

1、它是一個修飾符,隻能修飾成員(成員變量和成員函數)

2、被static修飾的成員變量的資料,可以被所有的對象們共享。

3、被靜态修飾的成員多了一種調用方式,就是除了被對象調用以外,還可以被類名直接調用,類名.靜态成員。

4、靜态之所可以被類名調用,那是因為靜态成員是随着類的加載而加載進記憶體的。非靜态的特點随着對象的加載而加載。

5、靜态優先于對象加載進記憶體,是以不能通路對象的内容,但是對象可以通路它的内容。

6、被靜态修飾的成員為共有資料,對象裡面自身村存儲的是特有資料。

Eg:飲水機是共有的,但是喝水的杯子是特有的。

怎麼了解共性?隻要在描述事物的時候發現這特點是大家都有的。

10、靜态的使用注意事項:

1、靜态成員函數隻能通路類中的靜态成員,不能通路非靜态的。非靜态方法可以通路靜态方法。

2、靜态方法中不可能定義this spuer關鍵字,因為This代表的是對象,但是靜态加載的時候都沒有對象存在。

3、主函數是靜态的。

實作代碼:

Eg:class MainDemo

   {

int x=4;

public static void main(String[] args)//String[] args=new String[0];

//public : 因為主函數是被JVM調用、權限必須足夠大。

//static :

//void :沒有傳回值。不用傳回值給JVM;

//main:比較特殊,jVM隻能識别它,

//(String[] args):參數清單,數組類型。arguments

{

sop(args);//[Ljava.lang.String;@c17614 輸出的數組實體位址。

//new MainDemo().show();//建立一個對象即可。

}

public static void main()//是可以存在的,重載。

{

}

void show()

{

sop(x);

}

   }

   編譯失敗:

被修飾後的成員具備以下特點:

class Person

{

String name;

static String country='CN';//每個對象都有國籍,都相同我們可以單獨拿出來。

static void show()

//如果被靜态修飾。name是不能被通路的。

//函數被靜态修飾隻能通路被靜态修飾的成員,非靜态成員不能通路。

//為什麼?

{

Sop(country+name);//country之前省略了Person類,Person.country

}

}

class StaticDemo

{

public static void main(String[] args)

{

Person p=new Person();

p.name="zhangsan";

p.show();

Person p=new Person();

p.name="lisi";

p.show();

System.out.println(Person.country);被類名直接調用。

Person.show();

//直接調用show方法,說明自始至終在堆記憶體中沒有name這個成員。

//當show方法進行輸出語句的時候通路conutry和name,但是name

//是沒有的,通路不到。

}

}

黑馬程式員_this和static關鍵字

---------------------- android教育訓練、 java教育訓練、期待與您交流! ----------------------

詳細請檢視:http://edu.csdn.net/heima