實(shí)例化對(duì)象的語(yǔ)法
new構(gòu)造方法(實(shí)參列表):
1.new關(guān)鍵字 計(jì)算對(duì)象內(nèi)存大??;在堆中申請(qǐng)空間;把空間初始化為0x0
2.執(zhí)行構(gòu)造方法 對(duì)屬性進(jìn)行初始化
3.把對(duì)象的引用賦值給一個(gè)引用變量,如果需要:
對(duì)象的生命周期
1 2 3 4
1.代表對(duì)象剛申請(qǐng)好空間,內(nèi)部被初始化為0x0
2.代表對(duì)象正在執(zhí)行構(gòu)造方法對(duì)屬性初始化部分
3.代表對(duì)象的可使用生命周期階段
4.代表對(duì)象已經(jīng)被標(biāo)記為垃圾,但可能還有被立即回收的時(shí)期
網(wǎng)站建設(shè)哪家好,找成都創(chuàng)新互聯(lián)!專(zhuān)注于網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、微信小程序定制開(kāi)發(fā)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶(hù)創(chuàng)新互聯(lián)還提供了宿城免費(fèi)建站歡迎大家使用!
訪(fǎng)問(wèn)對(duì)象的屬性或者調(diào)用對(duì)象的方法
1.如果在類(lèi)的內(nèi)部(在類(lèi)的方法中訪(fǎng)問(wèn)類(lèi)的屬性和調(diào)用類(lèi)的方法)
this.屬性 訪(fǎng)問(wèn)屬性 如果沒(méi)有出現(xiàn)命名遮擋,直接使用屬性
this.name name 其他名字和屬性名字一樣
大名 小名
調(diào)用方法
this.方法名稱(chēng)(實(shí)參列表)
this.toString ();
方法名稱(chēng)(實(shí)參列表);
toString();
2.r如果在類(lèi)的外部(在其他類(lèi)的方法中訪(fǎng)問(wèn)該類(lèi)的屬性和調(diào)用該類(lèi)的方法)
訪(fǎng)問(wèn)屬性
對(duì)象的引用.屬性名 Person p=new Person(); p.name ;
new Person.name
調(diào)用方法
對(duì)象的引用.方法名稱(chēng)(實(shí)參列表)
Person p =new Person(); p.toString();
new Person.toString();
文件名:Course.java
class Person{}
public class Course{}
javac編譯
生成Person.java Course,java
1.一個(gè)源文件中只能有一個(gè)public 的類(lèi),該類(lèi)的名稱(chēng)必須和文件名一樣
2.一個(gè)類(lèi)會(huì)生成對(duì)應(yīng)一個(gè)class字節(jié)碼文件
this關(guān)鍵字的使用
1.可以在構(gòu)造方法中調(diào)用其他的構(gòu)造方法,必須出現(xiàn)在第一行
2.代表該方法被調(diào)用時(shí)的當(dāng)前對(duì)象的引用
Person p=new Person(); p.toString();
public String toString(){
this; //現(xiàn)在this 就是p所指向的對(duì)象的引用
}
定義包:
1.新建目錄 目錄名就是包名稱(chēng)(全小寫(xiě),單詞之間用下劃線(xiàn)分隔)
package hello_world;
定義目錄 p1/p2 ;
定義一個(gè)類(lèi)Helloworld
2.使用包
import 包名稱(chēng).類(lèi)名稱(chēng)
import p1/p2.HelloWorld;
四種訪(fǎng)問(wèn)限定符:
1.限定符
2.影響的是訪(fǎng)問(wèn)權(quán)限
兩種情況
1.修飾頂級(jí)(Top-level)
2.修飾成員級(jí)(Member-level)
說(shuō)法 定義語(yǔ)法 說(shuō)明
public public 所有類(lèi)都有訪(fǎng)問(wèn)權(quán)限
package-private 空白 只有一個(gè)包的類(lèi)有訪(fǎng)問(wèn)權(quán)限
前兩個(gè)代表可用于頂級(jí)的訪(fǎng)問(wèn)權(quán)限
protected protected 留著繼承講
private private 只有本類(lèi)有訪(fǎng)問(wèn)權(quán)限
STATIC(靜態(tài))靜態(tài)方法|靜態(tài)屬性
1.方法
普通方法(方法)|靜態(tài)方法(類(lèi)方法)
2.屬性
普通屬性(屬性)|靜態(tài)屬性(類(lèi)屬性)
語(yǔ)法
限定符sataic
被static 修飾的屬性/方法 就是靜態(tài)屬性/方法
理解:
普通方法/普通屬性 都綁定著一個(gè)人隱含的對(duì)象(this)
static的含義是和對(duì)象解綁
靜態(tài)屬性不在保存在對(duì)象(堆區(qū))中,而是保存在類(lèi)(方法區(qū))中
靜態(tài)方法調(diào)用時(shí),沒(méi)有隱含著的對(duì)象,所以也就無(wú)法使用this關(guān)鍵字
class Person{
String name="小比特";
String toString(){
return this,name;
}
static Person createPerson(){
return newPerson();
}
}
Person.createPerson();
訪(fǎng)問(wèn)靜態(tài)屬性/調(diào)用靜態(tài)方法語(yǔ)法
內(nèi)部:
屬性名稱(chēng);
類(lèi)名稱(chēng).屬性名稱(chēng);
this.屬性名稱(chēng);//保證當(dāng)前不是靜態(tài)屬性
方法名稱(chēng)(實(shí)參列表);
類(lèi)名稱(chēng).方法名稱(chēng)(實(shí)參列表);
this.方法名稱(chēng)(實(shí)參列表);//保證當(dāng)前方法不是靜態(tài)方法
外部;
類(lèi)名稱(chēng).屬性名稱(chēng)
對(duì)象的引用.屬性名稱(chēng)
類(lèi)名稱(chēng).方法名稱(chēng)(實(shí)參列表);
對(duì)象的引用.方法名稱(chēng)(實(shí)參列表)
強(qiáng)調(diào):
靜態(tài)方法沒(méi)有this.,,沒(méi)有隱含著的對(duì)象的綁定
1.不能訪(fǎng)問(wèn)普通屬性(相當(dāng)于隱式使用this)
2.不能調(diào)用普通函數(shù)
表現(xiàn)出來(lái)的特性:
1.一個(gè)類(lèi)的所有的對(duì)象,是可以共享靜態(tài)屬性的;
屬性的初始化:(發(fā)生在對(duì)象實(shí)例化的時(shí)候)先執(zhí)行 定義時(shí)初始化int a=10; 和構(gòu)造代碼塊{a=10;}(按順序),再執(zhí)行構(gòu)造方法Person () {a=10;}
靜態(tài)屬性的初始化“(類(lèi)被加載的時(shí)候)發(fā)生在實(shí)例化前
1.定義時(shí)初始化
static int a=10;
2.靜態(tài)構(gòu)造代碼塊
static {
a=20;
}
類(lèi)的信息一開(kāi)始是以字節(jié)碼(bytecode)*.class的形式保存在磁盤(pán)上
類(lèi)的加載過(guò)程就是 類(lèi)加載器(classloader)在對(duì)象的目錄上找到指定類(lèi)的字節(jié)碼文件,并且進(jìn)行解析,然后放到內(nèi)存的方法區(qū)的過(guò)程。
類(lèi)只有被使用的時(shí)候才會(huì)被加載(一般不會(huì)卸載)
1.用類(lèi)去實(shí)例化對(duì)象
2.使用靜態(tài)方法
setter設(shè)置和修改
getter取得
to string:沒(méi)有定義,打印的是地址
system.out.println();
out所屬類(lèi)的方法/out 屬性