---------------------- 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語句必須定義在構造函數的第一行,因為構造函數是用來初始化的。初始化的動作必須先執行。
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
//是沒有的,通路不到。
}
}
---------------------- android教育訓練、 java教育訓練、期待與您交流! ----------------------
詳細請檢視:http://edu.csdn.net/heima