Static關(guān)鍵字:
一、使用static定義屬性:
1、使用static關(guān)鍵字聲明的屬性是全局屬性。
2、靜態(tài)屬性和方法可以在沒(méi)有實(shí)例化對(duì)象的時(shí)候調(diào)用。
3、主方法(main方法)也存在static關(guān)鍵字。
4、在寫(xiě)程序時(shí),主方法(main方法)代碼越簡(jiǎn)單越好(代碼量越少越好)
5、主方法的含義如下:
.public:表示最大的權(quán)限,所有人都可以訪問(wèn)。
.static:因?yàn)閳?zhí)行的時(shí)候執(zhí)行的就是類名稱,所以表示可以由類名稱調(diào)用。
.void:因?yàn)橹鞣椒ㄊ且磺械钠瘘c(diǎn),所以表示沒(méi)有返回值。
.main:系統(tǒng)內(nèi)建的方法名稱。
.String[] args:表示字符串?dāng)?shù)組,用于接收參數(shù)。
6、程序在內(nèi)存劃分如下:
1)、棧內(nèi)存:對(duì)象名稱,實(shí)際上是對(duì)象對(duì)堆的引用地址;
2)、堆內(nèi)存:屬性;
3)、全局代碼區(qū):保存所有的操作方法;
4)、全局?jǐn)?shù)據(jù)區(qū):保存所有的static屬性;
二、使用static字義方法:
1、方法中加一個(gè)static關(guān)鍵字時(shí),便成靜態(tài)方法。
2、在使用static關(guān)鍵字定義方法時(shí),應(yīng)注意以下幾點(diǎn):
1)、static的方法只能調(diào)用static的屬性或方法,不能調(diào)用非static的屬性或方法。
2)、靜態(tài)屬性和方法在沒(méi)有實(shí)例化對(duì)象的時(shí)候調(diào)用。
3)、而類中的普通方法和普通屬性,肯定只有在對(duì)象實(shí)例化之后才能被調(diào)用。
程序開(kāi)發(fā)思路:
1、完成基本功能;
2、改善功能,加入一些驗(yàn)證;
3、形成更好的結(jié)構(gòu),加入一些類的設(shè)計(jì);
4、主方法中不能編寫(xiě)過(guò)多代碼。
一、this關(guān)鍵字的使用:
1、this在java中表示出以下的概念:
1)、調(diào)用類中的屬性:this.屬性
2)、調(diào)用類中的方法:this.方法()
3)、調(diào)用類中的構(gòu)造方法:this()
4)、表示當(dāng)前對(duì)象:this
二、記住以下兩點(diǎn):(重點(diǎn))
1、所有的構(gòu)造方法應(yīng)該是對(duì)象操作前最早調(diào)用的,所以使用this調(diào)用構(gòu)造方法的時(shí)候所有的代碼必須放在構(gòu)造方法的首行。
2、在使用this調(diào)用構(gòu)造方法時(shí)候至少有一個(gè)構(gòu)造方法是沒(méi)有使用this()調(diào)用的,而此構(gòu)造方法將做為調(diào)用的出口,一般這個(gè)出口都會(huì)使用無(wú)參構(gòu)造完成。
三、this有一個(gè)最重要的概念----當(dāng)前對(duì)象,當(dāng)前正在調(diào)用類中方法的對(duì)象,叫做當(dāng)前對(duì)象。
一、線程:
1、線程的基本概念:線程是一個(gè)程序里面不同的執(zhí)行路徑。(或線程是一個(gè)程序內(nèi)部的順序控制流。)
2、main()方法叫主線程(主分支-->一個(gè)分支就是一個(gè)線程)。
3、進(jìn)程:
進(jìn)程是一個(gè)靜態(tài)的概念。
4、在同一時(shí)間,一個(gè)CPU只能支持一個(gè)線程在執(zhí)行。
5、Java的線程是通過(guò)java.lang.Thread類來(lái)實(shí)現(xiàn)的。
6、可以通過(guò)創(chuàng)建一個(gè)Thread的實(shí)例來(lái)創(chuàng)建新的線程。
7、可以通過(guò)Thread類的Start()方法來(lái)啟動(dòng)線程。
二、創(chuàng)建線程的兩種方式:
1、使用實(shí)現(xiàn)Runnable接口方式(建議能使用接口時(shí)便使用接口方式)
2、使用繼承Thread類方式(繼承方式是死的)
sleep()方法-->>Thread類的靜態(tài)方法
3、線程的優(yōu)先級(jí)是用數(shù)字表示,范圍從1到10,一個(gè)線程的缺省優(yōu)先級(jí)是5。
可使用下述方法獲得或設(shè)置線程對(duì)象的優(yōu)先級(jí):
int getPriority();
void setPriority(int newPriority);
一、JDK1.5之后新特性對(duì)數(shù)組的支持:
1、foreach輸出;
2、可變參數(shù)。
1、foreach輸出的語(yǔ)法如下:
for(int i :數(shù)組名稱){
}
2、可變參數(shù):
(1)、定義:正常情況下,一個(gè)方法在調(diào)用時(shí)必須明確的指定傳入的參數(shù),而且參數(shù)的個(gè)數(shù)必須統(tǒng)一,但是在JDK1.5之后,在聲明方法參數(shù)的時(shí)候加入了可變參數(shù)。
例:
public class Test {
public static void main(String[] args){
int[] temp={1,2,4,5,6}; // 聲明一個(gè)數(shù)組
print(); //無(wú)參數(shù)
print(1); //一個(gè)參數(shù)
print(1,2,3,4); //多個(gè)參數(shù)
print(temp); //傳入數(shù)組作為參數(shù)
}
public static void print(int ...y){ //y前面的“.”符號(hào)只能是3個(gè),不能多,也不能少!
for(int x : y){ // foreach輸出
System.out.print(x);
}
}
}
二、數(shù)組之間拷貝:
System.arraycopy(源數(shù)組名稱,下標(biāo),目標(biāo)數(shù)組名稱,下標(biāo),拷貝的長(zhǎng)度);
例:
public class Test2{
public static void main(String[] args){
int[] t1={1,2,3,4,5,6};
int[] t2={11,22,33,44,55,66};
System.arraycopy(t1,0,t2,3,3); //注意:拷貝的長(zhǎng)度不能大于(目標(biāo)數(shù)組總長(zhǎng)度(這里是6) - 目標(biāo)下標(biāo)(這里是3))的長(zhǎng)度,否則會(huì)報(bào)數(shù)組下標(biāo)溢出。
for(int i:t1){
System.out.print(i+" ");
}
}
}
輸出的結(jié)果為:11 22 33 1 2 3
重要知識(shí)點(diǎn)總結(jié)如下:
1,抽象,封裝,繼承,多態(tài)是面向?qū)ο蟪绦蛟O(shè)計(jì)中得四個(gè)特點(diǎn).
2,面向?qū)ο蟮能浖_(kāi)發(fā)大體分為:面向?qū)ο蟮姆治?面向?qū)ο蟮脑O(shè)計(jì),面向?qū)ο蟮膶?shí)現(xiàn).
可概括為如下過(guò)程:分析用戶需求,從問(wèn)題中抽取對(duì)象模型;細(xì)化模型,設(shè)計(jì)類,包括類的屬性和類間的
相互關(guān)系,同時(shí)觀察是否有可以直接引用的已有類或部件;選定一種面向?qū)ο蟮木幊陶Z(yǔ)言,具體編碼實(shí)現(xiàn)
上一階段類的設(shè)計(jì),并在開(kāi)發(fā)過(guò)程中引入測(cè)試,完善整個(gè)解決方案.
3,面向?qū)ο蟪绦蛟O(shè)計(jì)方法的優(yōu)點(diǎn)是:可重用性,可擴(kuò)展性,可管理性.
4,類的定義:class前的修飾符分為訪問(wèn)控制符和非訪問(wèn)控制符兩大類.訪問(wèn)控制符包括public和private.
非訪問(wèn)控制符包括abstract(抽象),final(最終).
5,final類是最終類,是不能有子類的類.abstract和final不能同時(shí)修飾一個(gè)類,因?yàn)槌橄箢惐旧頉](méi)有具體對(duì)象,
需要派生出子類后在創(chuàng)建子類的對(duì)象.而最終類不可能有子類.
6,創(chuàng)建對(duì)象的格式為: 類名 對(duì)象名=new 構(gòu)造方法(參數(shù));注意前面是類名后面是構(gòu)造方法.
注意構(gòu)造方法沒(méi)有返回類型,也不能寫(xiě)void,主要用于完成類對(duì)象的初始化工作,一般不能直接由編程
直接調(diào)用,而是用new運(yùn)算符來(lái)調(diào)用.
7,如果class前面由public修飾符,則默認(rèn)構(gòu)造方法的前面也應(yīng)該有public修飾符.
8,類中有static修飾的域或方法,可用類名或?qū)ο竺L問(wèn),否則只能用對(duì)象名訪問(wèn).
9,修飾域的訪問(wèn)控制符可以是:public,private,protected,private protected.非訪問(wèn)控制符可以是:
static,final,volatile(易失域)
10,類變量的最本質(zhì)的特點(diǎn)是:他們是類的域,不屬于任何一個(gè)類的具體對(duì)象實(shí)例.不是保存在某個(gè)對(duì)象實(shí)例的內(nèi)存空間中,而是保存在類的內(nèi)存區(qū)域的公共存儲(chǔ)單元中.
11,局部變量是在方法體內(nèi)聲明的,只有當(dāng)方法被調(diào)用時(shí)他們才存在,因而只能在本方法內(nèi)使用,不存在訪問(wèn)控制符,也不能聲明為靜態(tài)變量(static),但可以聲明為final變量.局部變量必須初始化.
12,修飾方法的訪問(wèn)控制符可以是:public,private,protected,private
protected,修飾方法的非訪問(wèn)控制符可以是:static,final,abstract,native(本地方法),synchronized(同步方法)。
13,用static修飾的變量或方法都為類成員,類成員可以用類名或?qū)嵗L問(wèn),實(shí)例成員只能用實(shí)例名來(lái)訪問(wèn)。
14,如果一個(gè)類中含有抽象方法,則此類必須為抽象類,如果抽象類的子類不為抽象類,則子類必須實(shí)現(xiàn)父類的所有抽象方法。抽象方法不能用靜態(tài)方法和最終方法。抽想方法只有函數(shù)頭的聲明,而用分號(hào)來(lái)替代方法體,沒(méi)有大括號(hào)。如abstract
void abstractmethod();
15,this變量用在一個(gè)方法的內(nèi)部,指向當(dāng)前對(duì)象,當(dāng)前對(duì)象指的是調(diào)用當(dāng)前正在執(zhí)行的方法的那個(gè)對(duì)象。super變量是直接指向父類的構(gòu)造方法,用來(lái)引用父類種的變量和方法。(由于他們指的是對(duì)象,所以不能通過(guò)它來(lái)引用類變量和類方法)
16,如果要引用一個(gè)包中的多個(gè)類,可以用星號(hào)來(lái)代替。使用星號(hào)只能表示本層次的所有類,而不包括子層次下的類。所以經(jīng)常需要用兩條語(yǔ)句來(lái)引入兩個(gè)層次的類:import
java.awt.*;import java.awt.event.*;
17,訪問(wèn)修飾符:
--類中限定為public的成員可以被所有的類訪問(wèn)。
--類中先定位private的成員只能被這個(gè)類本身訪問(wèn)。同一個(gè)類的不同對(duì)象可以訪問(wèn)對(duì)方的private域變量或調(diào)用對(duì)方的域方法,這是因?yàn)樵L問(wèn)保護(hù)控制在類的級(jí)別上,而不是對(duì)象的級(jí)別上。
--類中限定為protected的成員可以被這個(gè)類本身,它的子類(包括同一個(gè)包中和不同包中的子類),以及同一個(gè)包中的其他類訪問(wèn)。
--用private protected修飾的成員可以被該類本身訪問(wèn),也可以被該類的所有子類訪問(wèn)。
--默認(rèn)訪問(wèn)控制符規(guī)定只能被同一個(gè)包中的類訪問(wèn)和引用,而不能被其他包的類訪問(wèn)。即他的訪問(wèn)權(quán)限是friendly。
18,注意:
----abstract和private,static,final,native不能并列修飾同一個(gè)方法。
----abstract類中不能有private修飾的域和方法
----static方法不能處理非static的域。
19,重載方法的參數(shù)必須不同,或者是參數(shù)個(gè)數(shù)不同,或者是參數(shù)類型不同。重載的多個(gè)方法必須返回相同的數(shù)據(jù)類型。
20,在java中,一個(gè)類獲取某一接口定義的功能并不是通過(guò)直接繼承這個(gè)接口的屬性和方法來(lái)實(shí)現(xiàn)的。因?yàn)榻涌谥械膶傩远际浅A浚涌诘姆椒ǘ际菦](méi)有方法體的抽象方法,沒(méi)有具體定義操作。