實例化對象的語法
new構造方法(實參列表):
1.new關鍵字 計算對象內存大小;在堆中申請空間;把空間初始化爲0x0
2.執行構造方法 對屬性進行初始化
3.把對象的引用賦值給一個引用變量,若是須要:
對象的生命週期
1 2 3 4
1.表明對象剛申請好空間,內部被初始化爲0x0
2.表明對象正在執行構造方法對屬性初始化部分
3.表明對象的可以使用生命週期階段
4.表明對象已經被標記爲垃圾,但可能還有被當即回收的時期java
訪問對象的屬性或者調用對象的方法
1.若是在類的內部(在類的方法中訪問類的屬性和調用類的方法)
this.屬性 訪問屬性 若是沒有出現命名遮擋,直接使用屬性
this.name name 其餘名字和屬性名字同樣
大名 小名
調用方法
this.方法名稱(實參列表)
this.toString ();ide
方法名稱(實參列表);
toString();函數
2.r若是在類的外部(在其餘類的方法中訪問該類的屬性和調用該類的方法)
訪問屬性
對象的引用.屬性名 Person p=new Person(); p.name ;
new Person.name
調用方法
對象的引用.方法名稱(實參列表)
Person p =new Person(); p.toString();
new Person.toString();
文件名:Course.java
class Person{}
public class Course{}
javac編譯
生成Person.java Course,java
1.一個源文件中只能有一個public 的類,該類的名稱必須和文件名同樣
2.一個類會生成對應一個class字節碼文件this
this關鍵字的使用
1.能夠在構造方法中調用其餘的構造方法,必須出如今第一行
2.表明該方法被調用時的當前對象的引用
Person p=new Person(); p.toString();
public String toString(){
this; //如今this 就是p所指向的對象的引用
}code
定義包:
1.新建目錄 目錄名就是包名稱(全小寫,單詞之間用下劃線分隔)
package hello_world;
定義目錄 p1/p2 ;
定義一個類Helloworld
2.使用包
import 包名稱.類名稱
import p1/p2.HelloWorld;對象
四種訪問限定符:
1.限定符
2.影響的是訪問權限
兩種狀況
1.修飾頂級(Top-level)
2.修飾成員級(Member-level)
說法 定義語法 說明
public public 全部類都有訪問權限
package-private 空白 只有一個包的類有訪問權限
前兩個表明可用於頂級的訪問權限
protected protected 留着繼承講
private private 只有本類有訪問權限繼承
STATIC(靜態)靜態方法|靜態屬性
1.方法
普通方法(方法)|靜態方法(類方法)
2.屬性
普通屬性(屬性)|靜態屬性(類屬性)
語法
限定符sataic
被static 修飾的屬性/方法 就是靜態屬性/方法
理解:
普通方法/普通屬性 都綁定着一我的隱含的對象(this)
static的含義是和對象解綁
靜態屬性不在保存在對象(堆區)中,而是保存在類(方法區)中
靜態方法調用時,沒有隱含着的對象,因此也就沒法使用this關鍵字
class Person{
String name="小比特";
String toString(){
return this,name;
}
static Person createPerson(){
return newPerson();
}
}生命週期
Person.createPerson();
訪問靜態屬性/調用靜態方法語法
內部:
屬性名稱;
類名稱.屬性名稱;
this.屬性名稱;//保證當前不是靜態屬性內存
方法名稱(實參列表);
類名稱.方法名稱(實參列表);
this.方法名稱(實參列表);//保證當前方法不是靜態方法ssl
外部;
類名稱.屬性名稱
對象的引用.屬性名稱
類名稱.方法名稱(實參列表);
對象的引用.方法名稱(實參列表)
強調:
靜態方法沒有this.,,沒有隱含着的對象的綁定
1.不能訪問普通屬性(至關於隱式使用this)
2.不能調用普通函數
表現出來的特性:
1.一個類的全部的對象,是能夠共享靜態屬性的;
屬性的初始化:(發生在對象實例化的時候)先執行 定義時初始化int a=10; 和構造代碼塊{a=10;}(按順序),再執行構造方法Person () {a=10;}
靜態屬性的初始化「(類被加載的時候)發生在實例化前
1.定義時初始化
static int a=10;
2.靜態構造代碼塊
static {
a=20;
}
類的信息一開始是以字節碼(bytecode)*.class的形式保存在磁盤上
類的加載過程就是 類加載器(classloader)在對象的目錄上找到指定類的字節碼文件,而且進行解析,而後放到內存的方法區的過程。
類只有被使用的時候纔會被加載(通常不會卸載)
1.用類去實例化對象
2.使用靜態方法
setter設置和修改getter取得to string:沒有定義,打印的是地址system.out.println();out所屬類的方法/out 屬性