2019-2020年java學習筆記大全_第1頁
2019-2020年java學習筆記大全_第2頁
2019-2020年java學習筆記大全_第3頁
2019-2020年java學習筆記大全_第4頁
2019-2020年java學習筆記大全_第5頁
已閱讀5頁,還剩171頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

郝斌2016年2月25日16:54:54學完學數(shù)據(jù)庫。

根據(jù)ppt上講的順序去敲代碼,有不懂得可以查幫助文檔API

1、java概述

sun公司Green項目hotjava瀏覽器

2、java特點

簡單易學:沒有c和C++的指針,內(nèi)存申請和釋放

安全性高:強類型,垃圾回收機制,禁止非法內(nèi)存訪問。

跨平臺:作為一種網(wǎng)絡(luò)語言,其源代碼被編譯成一種結(jié)構(gòu)中立的

中間文件格式。只要有Java運行系統(tǒng)的機器都能執(zhí)行這種中間代碼。

java源程序被編譯成一種與機器無關(guān)的字節(jié)碼格式,在Java虛擬機

上運行。

硬件操作系統(tǒng)編譯器高級語言程序用戶

多線程的。即能夠使得一個程序同時執(zhí)行多個任務(wù)。

3、java虛擬機JVM

4、JVM的平臺相關(guān)性:java源代碼與字節(jié)碼是與機器無關(guān)的,故在

裝有不同操作系統(tǒng)的機器上,需要有專門為該操作系統(tǒng)開發(fā)的JVM,

JVM是與機器有關(guān)的。

5、java的應(yīng)用領(lǐng)域

1、J2SE,主要用來開發(fā)桌面應(yīng)用軟件

2、J2ME,嵌入式開發(fā),像手機里的軟件,掌上電腦

3、J2EE,屬于網(wǎng)絡(luò)編程,JSP等,

6、怎么學JAVA語言。

《java就業(yè)培訓》張孝祥,《java學習筆記》林信良

張孝祥,孫鑫,張利國,馬士兵

7、學習目標,了解程序語言及發(fā)展歷史,掌握語法規(guī)則,掌握常用

類的使用掌握編程邏輯思維能力:會看懂程序,會調(diào)試程序,理解并

應(yīng)用面對對象的設(shè)計思想。為將來學習J2EE做準備。

8、環(huán)境變量的設(shè)置:2016年2月26日15:03:45

為什么要設(shè)置path:1、在dos的任何目錄下我們都可以運行系統(tǒng)

自帶的命令;2、要想在dos下運行用戶自己的程序,則必須進入

到改程序的當前目錄下方課運行;3、如果希望在dos的任何目錄

下都可以運行自己創(chuàng)建的程序,則需要我們自己手動設(shè)置操作系統(tǒng)自

帶的環(huán)境變量path.

path的設(shè)置:操作系統(tǒng)是利用path變量來尋找當前程序所存放的

路徑,并且以最先找到的為準。路徑與路徑之間用分號;分開。

setpath=%path%;c:\Intel;

java語言運行

publicclassMyApp{

publicstaticvoidmain(String[]args){

System.out.printin("我能學好Java語言!");

+++++++++++++++++++++++++++++++++++++++++++++++++

++++++++++++++

C:\Users\asus>cdF:\java

C:\Users\asus>f:

F:\java>javacMyapp.java

C:\Users\asus>f:

F:\java>javaMyapp

錯誤:找不到或無法加載主類MyappF:\>cdjava

F:\java>JavaMyAppF:\java>javacMyApp.java

我能學好Java語言!

F:\java>javaMyApp

F:\java>我能學好Java語言!

c語言編譯后exe運行:

C:\Users\asus>cdF:\java

C:\Users\asus>f:

F:\java>fff.exe

a=5,b=3

9、classpath的設(shè)置。

操作系統(tǒng)是利用classpath變量來尋找當前后綴為class的字節(jié)碼

文件所存放的路徑,并且以最先找到的為準。

10、常見dos命令。

cd\表示進入當前根目錄下

cdA\B\C表示當前目錄下的A文件夾下的B文件夾下的C文

件夾下面

E:進入E盤根目錄

dir查看文件夾下文件信息

cis清屏

javacname..java編譯java文件

javaname運行java文件,即打開.class文件,

編譯時寫文件名,運行時寫文件中的類名。故文件的名字和類名

最好一樣。

11、Java語言的基本要素——標識符

程序員對程序中的各個元素加以命名時使用的命名記號稱為標識

符(identifier)包括:類名、變量名、常量名、方法名、...

標識符是以字母,下劃線(_)美元符($)開始的一個字符序列,

后面可以跟字母,下劃線,美元符,數(shù)字。

關(guān)鍵字:abstractdefaultifprivate

12、數(shù)據(jù)類型

基本數(shù)據(jù)類型:

數(shù)值型(整數(shù)類型(int,byte,short,long),浮點類型(float,

double))

字符型(char)

布爾型(boolean)

引用數(shù)據(jù)類型:(類(class),接口(interface),數(shù)組);

13、輸出數(shù)據(jù)的格式控制:

%d(int,longint,)

%f(float,double)

%c(char)

%x,%X,%#X,%#x(intlongint)

%s(string)

14、常量

(1)整型常量:十進制,十六進制,八進制

一個常量整數(shù)默認是int類型,如果數(shù)字過大,則必須在末尾

力口L,否貝IJ會報錯。例:longi=5678678956789;//error

longi=5678678956789L;//ok

⑵浮點型:一個實數(shù)默認是double類型。如果希望一個實數(shù)是

float類型,可以在數(shù)字后面加f(F)。將一個double類型數(shù)值付給float

類型變量,編譯時會報錯。

例:floatx=2.2;//errorfloatx=2.2f;//ok

(3)字符常量:

必須用單引號括起來;Java中字符和字符串都用Unicode編

碼表示;在Unicode編碼中一個字符占兩個字節(jié)?!產(chǎn)''\n'\uxxxx'

特殊字符的常量表示法

'\\"\n'

(4)布爾類型:用boolean表示,不能寫成bool;布爾型數(shù)據(jù)只有

兩個值true和false,且他們不對應(yīng)于任何整數(shù)值。

定義:booleanb=true

只能參與邏輯關(guān)系運算:&&II

classBiJiao

publicstaticvoidmain(String[]args)

(

floata=12.45f;

doubleb=45.5;

booleane;

booleand;

System.out.printf("e=%b\n",e=a<=b);

System.out.printf("d=%b\n",d=12.45<=45.5);

|

}

結(jié)果:e=true

d=true

+++++++++++++++++++++++++++++++++++++++++++++++

15、不同類型變量的字節(jié)。(一個字節(jié)byte八位bit)

■We占用一個字節(jié),數(shù)字大小為.27—27-1

■陋t占用兩個字節(jié),數(shù)字大小為.2"—2忤1

■叫自用四個字節(jié),數(shù)字大小為-2”—23L1

■Ig吧占用八個字節(jié),數(shù)字大小為,63—263」

■float占用四個字節(jié),數(shù)字大小為1.4E45~3.4E+38,-1.4E-45?3.4E+38

7■用二進制的指數(shù)形式表示一個浮點數(shù)的格式,如:101*22,101*2V

■double占用八個字節(jié),數(shù)字大小為4.9E,324~1.7E+308,-4.9E-324--

1.7E+308。

■char占兩個字節(jié),數(shù)字大小為0-216-1,是Unicode編碼。

一,X

■boolean占一個字節(jié),其取值只有兩個,true和falsM。

16、不同類型的變量相互轉(zhuǎn)換:一般小字節(jié)可以轉(zhuǎn)換成高字節(jié)。否

則得執(zhí)行強制轉(zhuǎn)換。

byteb=10;//1個字節(jié)

inti=6;//4個字節(jié)

i=b;//okb=i;//error會丟失數(shù)據(jù)

b=(byte)i;//ok強制類型轉(zhuǎn)化

//b=i;//本語句錯誤,上面的(byte)i并沒有改變i本身的數(shù)據(jù)類

型。

17、算術(shù)運算符:

(1)“+”可以表示數(shù)值的相加,字符串的聯(lián)接,也能把非字符轉(zhuǎn)換

成字符串。

如:“123”+“abc”的結(jié)果是“123abc”如:“x”+123;的結(jié)果是“x123”

System.out.printin('a'+l);System.out.printin(""+'a'+l);

結(jié)果98al

(2)除法運算符(/)

跟C語言一樣。

(3)取余運算符(%)

java中允許取余取余運算符的被除數(shù)和除數(shù)是實數(shù),(與C/C++

不同)。但所得余數(shù)的正負只和被除數(shù)相同。

⑷邏輯與,邏輯或。

跟C語言一樣。

(5)位運算符:(0表示正數(shù),1表示負數(shù))

&(按位與)把兩個數(shù)字所有的二進制位相與:=1&0=0,

0&0=0;0&1=0

I(按位或)把兩個數(shù)字所有的二進制位相與:1|1=1,1|0=1,

0|0=0;0|1=1

~(按位取反)把一個數(shù)字的所有二進制位取反。~1=0~0=1

A(按位異或)把兩個數(shù)字的所有二進制位異或1八1=0,1Ao=1,

0A0=0;0Al=l

利用異或?qū)崿F(xiàn)換值一

importjava.util.Seanner;

publicclassVariableExchange

publicstaticvoidmain(String[]args)

(

Scannerscan=newScanner(System.in);

System.out.printing請輸入A的值");

longA=scan.nextLongQ;

System.out.printing請輸入B的值");

longB=scan.nextLongQ;

System.out.println("A="+A+"\tB="+B);

System.out.printin("執(zhí)行變量互換...");

A=AAB;

B=BAA;

A=AAB;

System.out.println("A="+A+"\tB="+B);

importjava.util.Scanner;//是util而不是until

publicclassLeapYear

publicstaticvoidmain(String[]args)〃后面不應(yīng)該加分號

(

Scannerscan=newScanner(System.in);

System.out.printing請輸入一個年份:");

longyear=scan.nextLongO;

if(year%4==0&&year%100!=0||year%4==0)

System,out.print(year+"年是閏年!");

else

System.out.print(year+"年是不是閏年!");

+++++++++++++++++++++++++++++++++++++++++++++++++

++++++電子書113

>>(右移)與C/C++不同,對于有符號數(shù),在右移時,符號位將隨

同移動,當為正數(shù)時,最高位0,最高位補零,而為負數(shù)時,最高位

為1,最高位補1。移位能讓用戶實現(xiàn)整數(shù)除以或乘以2的n次方的效

果。

?>(右移)無論最高位是0還是1,左邊移空的都補為零。

(6)自增自減

??a(-a)〃表示在使用變量a之前,先使a的值加(W)V

a-w(a-)〃表示在便用變量a之后,使a的值加〈WD1

【例3.22】粗略地分析++a與a++的作用都相當于8=8+1,賦值a=4,計算a++和Ha的值.

inta=4:〃聲明變?a,并*值

b=++a;//#a自加Kt給b

b=a??://Ha自加It給b

第2條語句是先將a自加1.把a自加后的值賦給b,自加后a的值是5,b的值也是5;第3條語

句是先將a的值賦給b,然后再將a自加,自如后a的值是5,而b的值是4.

(7)三元運算符booleanb=20<=45?true:false;

18、流程控制

同C語言。

classTriangle//啟動類

(

inta,b,c;

intzhouchangQ

(

returna+b+c;

}

doublearea()

doublep=1.0*(a+b+c)/2;

returnMath.sqrt(p*(p-a)*(p-b)*(p-c));

classTestTriangle

publicstaticvoidmain(String[]args)

Trianglet=newTriangleQ;

t.a=3;

t.b=4;

t.c=5;

System.out.printf("%d%f\n",t.zhouchangO,t.area());

)

}

+++++++++++++++++++++++++++2016年2月26日18:32:12

9

19、面向過程設(shè)計思想

優(yōu)點:1、分析出解決問題所需要的步驟,然后用函數(shù)把這些步驟一

步一步實現(xiàn)。

2、以算法為核心,

3、自頂向下設(shè)計,要求一開始必須對問題有很深的了解

4、將大問題轉(zhuǎn)化為若干問題來求解

5、表現(xiàn)形式:用函數(shù)來作為劃分程序的基本單位

6、直接面向問題。

缺點:數(shù)據(jù)和操作分離開,對數(shù)據(jù)與操作的修改變得很困難;數(shù)據(jù)的

安全性得不到保證;程序架構(gòu)的依賴關(guān)系不合理。

20、面向?qū)ο蟮脑O(shè)計思想

1、確定該問題由哪些問題組成!先用類模擬出該事物

2、通過類簡介解決問題。

21、類:把一類事物靜態(tài)屬性和動態(tài)可以執(zhí)行的操作組合在一起所

得的這個概念就是類

類是抽象的,用來模擬一類事物,是一個概念,一旦定義了,類

的概念就永遠存在

22、對象:類的一個個體;具體的實實在在存在的事物;生命周期

是短暫的。

汽車設(shè)計圖

!1~~1

第一輛第二輛第三輛

■如果將對象比作汽車,那么類就是汽車的設(shè)計圖紙

類的定義:

classPerson

{

intage;

voidshout()

(

System.out.println("oh,mygod!"+age);

}

}

age是類的屬性,也叫類數(shù)據(jù)成員,也叫字段,也叫域

shout是方法,也叫類的成員函數(shù)

shout方法可以直接訪問同一個類中的age變量。

23、內(nèi)存分配

--------------------類對象實例1---------------------------------

classA

inti;

intj;

}

classTestMemo

(

publicstaticvoidmain(String[]args)

(

Aaa=newA();//(A*)malloc(sizeof(A))

//newA();在堆中動態(tài)分配一塊區(qū)域,被當作了A對象

//aa本身的內(nèi)存是在棧中分配的

//堆中內(nèi)存的地址付給了aa

//aa指向堆中的內(nèi)存,aa代表了堆中的內(nèi)存。

//aa.i代表aa靜態(tài)指針變量所指向的動態(tài)內(nèi)存中的A對象

這個i成員

//aa.j代表aa靜態(tài)指針變量所指向的動態(tài)內(nèi)存中的A對象

這個j成員

aa.i=10;

aa.j=20;

System.out.printf("%d,%d\n",aa.i,aa.j);

+++++++++++++++++++++++++++++2016年2月26日23:47:30

11未完

-------------------------------------------------------------貼

吧看到的。

"畢竟我是新來的,什么都不懂,就說了一句對不起",這樣不行的,

得說給我1個小時保證能做出來,做不出來砍手(只是舉個例子,得

給個時間,給個保證,讓人安心,回個對不起,很難不讓人聯(lián)想到已

經(jīng)做不出來了,如果對不起有用的話,還要警察叔叔干什么);

"后來大姐說她自己來,不需要我了",不能指望所有人都有安全感,

能夠一直信任別人,畢竟他不是你的腦殘粉對吧,而且能夠說出"還

不如她自己寫‘這句話,說明他也有任務(wù)在身,教人的時間是不算入

工作時間的,上頭需要一個結(jié)果,他就自己幫你寫好了,這個是花費

了他的時間,算你的成果,有人會甘心么,只好在圣上面前參你一本,

“最后就自己摸索的寫了幾個頁面交給她了",超時了,而且你寫的跟

他的肯定不一樣,難道讓他花時間看你的,然后改他的?有人會甘心

么;

"讓我模仿著寫登錄,我想終于能寫Java代碼了,所以前臺頁面就隨

便寫了寫",以后問任務(wù)的時候要問清楚要什么效果,不清楚就要問

清楚,因為一旦出錯(要求做完結(jié)果只做了一般或者做出來不一樣的

東西)需要自己加班彌補,沒人會承認自己沒說清楚(信息傳輸?shù)倪^

程會有損失,口口相傳更為嚴重,到了最后會發(fā)現(xiàn)跟第一個人說的已

經(jīng)不是一個意思了),只會說我以為他都懂了,而且他也沒問,所以

就沒說;

"看bootstrap看的挺細致的,兩天看完",30多歲的大哥哥,對于2

天看完bootstrap是不會接受的,

http:///article/19192ad83aa565e53e570

7cl.html,拿來復制粘貼,照著文檔改一改就出來了,有人可能會

說這是碼農(nóng)的行為,死記硬背,不理解就干,這個沒錯,但是細致地

看去理解,這個應(yīng)該是下班之后做的(這就是學校和公司的區(qū)別,學

校你掏錢,你做主,公司他掏錢,他做主),如果布置個活得考慮給

個完全理解的時間,花費太高,實習3000元的公司承擔不起;

“別人都不跟我說話",你指望著他們跟你說話,他們指望著你跟他們

說話,隔著一層窗戶紙,都不說破,最后形同陌路,摸不到青春的奶

子,你小時候為什么交不到女朋友,其實現(xiàn)在想一想,勇敢點是不是

就破處了,破處之后是不是就會一直想著要了

---------------類對象實例2----------------------2016年2月27日

21:39:59

classA

inti;

intj;

classTestMemo

{

publicstaticvoidmain(String[]args)

Aaal=newA();

Aaa2=newA();

aa.i=50;

aa.j=80;

System.out.printf("%d,%d\n",aal.i,aa2.i);

}

)

結(jié)論:一個newA()生成的對象是不一樣的。

++++++++++++結(jié)果5080

+++++++++++++++++++++++++++++++++

--------------類對象實例3---------------------------------------

classA

inti;

intj;

classTestMemo

publicstaticvoidmain(String[]args)

(

Aaal=newA();

Aaa2=aal;//最后aal和aa2同時指向堆中的一個對象。

aal.j=50;

System.out.printf("%d\n",aa2.j);//

)

}

++++++++++++結(jié)果50

+++++++++++++++++++++++++++++++++

-------------訪問控制符-------------------------------------

類的訪問控制符有四種:publicprotect默認private

在一個類的內(nèi)部,所有的成員可以相互訪問,訪問控制符是透明的;

訪問控制符是針對外部訪問而言的。

在一個類的外部:通過類對象名.私有成員名

的方式是無法訪問該對象中的私有成員的,這樣寫編譯時會出

錯。

classTriangle_2

privateinta,b,c;//如果不加訪問控制符private,將默認為

default,可以被任何一個對象去使用。

intzhouchangQ

(

returna+b+c;

|

voidset(inti,intj,intk)

(

a=i;

b=j;

c=k;

}

doublearea()

doublep=1.0*(a+b+c)/2;

returnMath.sqrt(p*(p-a)*(p-b)*(p-c));

classTestTriangle_2

publicstaticvoidmain(String[]args)

(

Trianglet=newTriangleQ;

t.set(3,4,5);

System.out.printf("%d%f\n",t.zhouchangO,t.area());

}

)

+++++++++++++++++++++++++++++++++++++++++++++++++

+++++++

------------類的構(gòu)造函數(shù)----------------------------------

一14

classA

{

privateinti;

privateintj;

publicA()

//System.out.printf("嘿嘿!\n\n");

//構(gòu)造函數(shù)

publicA(inta,intb)

i=a;

j=b;

System.out.printf("無參構(gòu)造函數(shù)被調(diào)用了!\n");

publicvoidshow()

System.out.printf("i=%d,j=%d\n",i,j);

classTestConst_2

publicstaticvoidmain(String[]args)

Aaa=newA(l,2);

//Aaa2=newA(l,2,3);//error

Aaa3=newA();

//

////System.out.printf("%d%d\n",aa.i,aa.j);

//aa.show();

}

)

------------------------------------------------------2016年2月27日

23:16:04

老程序員的事業(yè)忠告

咱當程序員也有不少年頭了,不算有出息,環(huán)顧四周,也沒有看見幾

個有出息的!回顧程序員生涯,感慨萬千,愿意講幾句掏心窩子的話,

也算給咱們師弟師妹們提個醒,希望他們比咱們強!

方法/步驟

一、好好規(guī)劃自己的路,不要跟著感覺走!

根據(jù)個人的理想決策安排,絕大部分人并不指望成為什么院士或教

授,而是希望活得滋潤一些,爽一些。那么,就需要慎重安排自己的

軌跡。從哪個行業(yè)入手,逐漸對該行業(yè)深入了解,不要頻繁跳槽,特

別是不要為了一點工資而轉(zhuǎn)移陣地,從長遠看,這點錢根本不算什

么,當你對一個行業(yè)有那么幾年的體會,以后錢根本不是問題。頻繁

地動蕩不是上策,最后你對哪個行業(yè)都沒有摸透,永遠是新手!

二、可以做技術(shù),切不可沉湎于技術(shù)。

千萬不可一門心思鉆研技術(shù)!給自己很大壓力,如果你的心思全部放

在這上面,那么注定你將成為孔乙己一類的人物!適可而止為之,因

為技術(shù)只不過是你今后前途的支柱之一,而且還不是最大的支柱,除

非你只愿意到老還是個程序員!

三、不要去做技術(shù)高手,只去做綜合素質(zhì)高手!

在企業(yè)里混,我們時常瞧不起某人,說他“什么都不懂,憑啥拿那

么多錢,憑啥升官!”這是普遍的典型的工程師的迂腐之言。人家能

上去必然有他的本事,而且是你沒有的本事。你想想,老板搞經(jīng)營那

么多年,難道見識不如你這個新兵?人家或許善于管理,善于領(lǐng)會

老板意圖,善于部門協(xié)調(diào)等等。因此務(wù)必培養(yǎng)自己多方面的能力,包

括管理,親和力,察言觀色能力,攻關(guān)能力等,要成為綜合素質(zhì)的

高手,則前途無量,否則只能躲在角落看示波器!技術(shù)以外的技能才

是更重要的本事??!從古到今,美國日本,一律如此!

四、多交社會三教九流的朋友!

不要只和工程師交往,認為有共同語言,其實更重要的是和其他類人

物交往,如果你希望有朝一日當老板或高層管理,那么你整日面對

的就是這些人。了解他們的經(jīng)歷,思維習慣,愛好,學習他們處理問

題的模式,了解社會各個角落的現(xiàn)象和問題,這是以后發(fā)展的巨大

的本錢,沒有這些以后就會笨手笨腳,跌跌撞撞,遇到重重困難,交

不少學費,成功的概率大大降低!

+++++++++++++++++++++++++++++++++++++++++++++++++

++++++++

管理與技術(shù)?

-------------------------------------------------------------2016年2月

29日14:47:00

classB

{

publicinti=10;

publicvoidshow()

(

System.out.printf("%d\n",i);

classM

publicstaticvoidmain(String[]args)

Bbbl=newB();

Bbb2=newB();

//bbl=bb2;

//bbl.i=20;

//bb2.show;//結(jié)果為20.想不明白的時候畫一下圖。

bbl.i=20;

bb2.show();//結(jié)果為10

+++++++++++++++++++++++++++++++++++++++++++++++++

函數(shù)的重載:同名的函數(shù)通過不同的形參做類似的事情,就叫做函數(shù)

的重載。

函數(shù)重載要求:函數(shù)的形參個數(shù),形參順序,形參數(shù)據(jù)類型,三個至

少有一個是不一樣的

如果兩個函數(shù)只是函數(shù)的返回值不一樣,其他的一樣,就不構(gòu)成重載,

編譯時會出錯。

classTestOver

staticintadd(inta,intb)

returna+b;

staticdoubleadd(doublex,doubley)//如果改為static

doubleadd(intx,inty)將會報錯

returnx+y;

staticintadd(inta,intb,intc)

returna+b+c;

publicstaticvoidmain(String[]args)

System.out.printf("%d\n",add(1,2));

System.out.printf("%f\n",add(1.3,2.2));

System.out.printf("%d\n",add(1,2,3));

++++++++++++++結(jié)果:33.500000

6++++++++++++++++++++++++++++++++

-------------------構(gòu)造函數(shù)例子2-------------------------------------

classA

{

publicinti=2;

publicbooleanflag=true;

publicA(intj,booleanf)//public:構(gòu)造方法修飾符,A構(gòu)造方

法的名稱

i=j;

flag=f;

}

publicvoidshow()

System.out.printf("%d\n",i);

System.out.printf("%b\n",flag);//boolean

classTestconst_2

(

publicstaticvoidmain(String[]args)

(

Aaa=newA(88,false);

aa.show();

}

}

結(jié)論:系統(tǒng)會先執(zhí)行定義時賦的初值,然后再執(zhí)行構(gòu)造函數(shù)中賦的初

值。如果在定義的時候不初始化,則他的值是系統(tǒng)自動分配好的默認

值。

+++++++++++++++++++++++++結(jié)果88false

+++++++++++++++++++

---------------this關(guān)鍵字一視頻19電子書191—2016

年3月5日07:43:39

this是一個系統(tǒng)隱含的指針被自動附加在非靜態(tài)的成員函數(shù)參

數(shù)列表中。

當前時刻,哪個對象調(diào)用該函數(shù),那么this就指向當前調(diào)用該函

數(shù)的對象,系統(tǒng)會自動在該函數(shù)的參數(shù)列表中添加一個隱藏的指針,

并且把調(diào)用該函數(shù)的對象的地址賦給this指針,這樣一來,在函數(shù)的

內(nèi)部通過this就可以訪問當前正在調(diào)用該函數(shù)的對象的成員

靜態(tài)函數(shù)內(nèi)部,沒有this指針。

關(guān)鍵字this代表當前正在調(diào)用該方法的那個對象,具體可分為兩

種情況:1、在普通方法中,this代表方法的調(diào)用者,即本次調(diào)用了

該方法的對象。2、在構(gòu)造方法中,關(guān)鍵字this代表了該方法本次運

行所創(chuàng)建的那個新對象。

classA

(

privateinti;

publicA(inti)

{

this.i=i;//將形參i賦給該構(gòu)造方法本次運行所創(chuàng)建的

那個新對象的i數(shù)據(jù)成員

}

publicvoidshow(){

System.out.println("i="+this.i);

//this表示當前時刻正在調(diào)用show方法的對象

//this可以省略

publicclassTestThis

{

publicstaticvoidmain(String[]args){

Aaal=newA(100);

aal.show();

Aaa2=newA(200);

aa2.show();

}

)

i=100i=200

+++++++++++++++++++++++++++++++++++++++++++++++++

+++++++

--------------------static------------20---------2016年3月5

日09:34:17

static屬性i是屬于類本身,或者講:沒有對象,我們?nèi)匀豢梢灾?/p>

接通過類名的方式訪問該類內(nèi)部的static屬性。

static屬性和方法雖然屬于類本身,雖然可以通過類名的方式訪

問,但static屬性和方法很明顯也屬于類本身,當然也可以通過類對

象和方法來訪問。

只有非private的static成員才可以通過類名的方式訪問。

static只是表明了該成員具有了可以通過類名訪問的潛在特征,

但是否能通過類名訪問,還必須滿足一個條件,就是該類名是非

private成員。

/*

2016年3月5日10:01:20

本程序證明了:

靜態(tài)方法不能訪問非靜態(tài)成員

非靜態(tài)方法可以訪問靜態(tài)成員

*/

classA

{

privatestaticinti=10;

publicintj=99;

publicstaticvoidf()

//g();//error靜態(tài)方法不能訪問非靜態(tài)成員

//j=22;//error

System.out.printf("FFFF\n");

}

publicvoidg()

i

//f();//OK說明非靜態(tài)方法可以訪問靜態(tài)成員

System,out.printf("GGGG\n");

System.out.printf("%d\n",i);

classTestStatic_5

(

publicstaticvoidmain(String[]args)

Aaa=newA();

//aa.g();

aa.f();

//A.g();//error,無法從靜態(tài)上下文中引用非靜態(tài)方法

類,對象,方法,屬性,

sourcefile

classfile

method1

statement

method2

statement

statement

++++++++++++++++++++++++++++++++

繼承extends:利用繼承可以較好的模擬出現(xiàn)實世界事物之間的關(guān)

系。為多態(tài)創(chuàng)造條件。

2009年5月31日14:59:26

本程序證明了:

1、子類內(nèi)部可以訪問父類非私有的成員

私有成員無法被子類方法訪問

2、通過子類對象名只能訪問從父類繼承過來的非私有成員

總結(jié):

私有不能被繼承

私有物理上已經(jīng)被繼承過來,只不過邏輯上程序員不能去訪問

因此繼承必須慎重,否則會浪費內(nèi)存

*/

classA{

publicinti;

protectedintj;

privateintk;

publicvoidg(){}

privatevoids()0

protectedvoidb(){}

}

classBextendsA{

privatevoidm(){

i=10;

j=20;

//k=30;//error私有屬性不能被繼承

g();

b();

//s();//error私有方法不能被繼承

}

publicvoidf(){

i=10;

j=20;

//k=30;//error私有屬性不能被繼承

g();

b();

//s();//error私有方法不能被繼承

classM{

publicstaticvoidmain(String[]args){

Bbb=newB();

bb.i=20;

bb.j=30;

//bb.k=40;//errork可以在B中訪問private

bb.b();

bb.g();

//B.g();//無法從靜態(tài)上下文中引用非靜態(tài)方法

//bb.s();//error

//bb.k=22;

}

)

+++++++++++++++++++++++++++++++++

java只支持單繼承,不允許多重繼承。單繼承就是一個類只能有一個

父類。多繼承就是一個類可以有多個父類??梢杂卸鄬永^承,即一個

類可以繼承某一個類的子類,如類B繼承了類A,類C繼承類B,那么

類C也間接繼承了類A。

子類可以繼承父類所有的成員變量和成員方法,但子類永遠無法繼承

父類的構(gòu)造方法,在子類的構(gòu)造方法中可使用語句super(參數(shù)列表)

調(diào)用父類的構(gòu)造方法。

++++++++++++++++++++++++2016年3月5日11:54:4928

?headfirstjava?

2016年3月5日14:21:47

子類訪問父類成員的三種方式

在子類內(nèi)部訪問,通過子類對象名訪問,通過子類的類名訪問。經(jīng)驗

證子類無法通過以上三種方式訪問父類的私有成員,所以,得出結(jié)論,

私有成員無法被子類繼承。

super:

classA{

A(){

System,out.printin("AAAA");

}

A(inti){}

classBextendsA{

B(){

super(2);//如果把該語句注釋掉的化,則編譯器默認的是自

動隱藏調(diào)用super。;但如果父類沒有無參的構(gòu)造函數(shù),則會報錯

//一個子類的構(gòu)造函數(shù)中只能出現(xiàn)一個super(….)

System.out.println("BBBB");

classCextendsB

(

CO

(

//intk=10;//如果該語句生效則會出錯,因為會導致

super。語句不是構(gòu)造函數(shù)的第一條語句

super();//35行每個子類構(gòu)造方法的第一條語句,都是隱

含地調(diào)用super。,如果父類沒有無參的構(gòu)造函數(shù),那么在編譯的時

候就會報錯。

//super。;語句可以寫,也可以不寫,不寫的化,系

統(tǒng)會自動調(diào)用的

//如果顯示寫出來的話,編譯器要求該語句前面不

能加任何語句,也就是說該語句必須保證是第一條語句

//super。也可以改為super⑵;但前提是父類必須

有帶一個參數(shù)的構(gòu)造函數(shù),否則也會報錯

//如果把35行改為super(2);編譯時就會報錯!

System.out.println("CCCC");

classTestSuper_l

(

publicstaticvoidmain(String[]args)

(

Ccc=newC();

//System.out.println("HelloWorld!");

}

}

+++++++++++++++++++++++++++++++++++++++++++++++++

++++++++++

總結(jié):

1、每個子類構(gòu)造方法的第一條語句,都是隱含地調(diào)用super。,

如果父類沒有這種形式的構(gòu)造函數(shù),那么在編譯的時候就會報錯。

2、如果顯示的寫出super。;語句,則必須保證該語句是第一條語

句,否則會出錯

3、super。;如果不寫,則編譯器會自動添加,所以此時如果父類沒

有無參的構(gòu)造函數(shù)就會出錯

4、既可以顯示寫super。;前提是父類必須有無參的構(gòu)造函數(shù)也可

以顯示寫super(實參);前提是父類必須有帶參的構(gòu)造函數(shù)

5、調(diào)用父類的構(gòu)造函數(shù)的語句必須借助于super,不能直接寫父

類的類名,這與C++不同

6、一個子類的構(gòu)造函數(shù)中只能出現(xiàn)一個super(....)

+++++++++++++++++++++++++++++++++++++++++++++++++

++++++++++++++++++++

重寫父類方法:是指在子類中重新定義父類中已有的方法

重寫方法必須和被重寫方法具有相同的方法名詞、參數(shù)列表和返回值

類型

子類中不允許出現(xiàn)與父類同名同參但不同返回類型的方法,如果出

現(xiàn),編譯時會報錯

覆蓋方法時,不能使用比父類中被覆蓋的方法更嚴格的訪問權(quán)限。

classA{

//publicvoidf(){

//System.out.printf("AAAA\n");

//}

publicvoidf(inti){

System.out.printf("哈哈\n");

classBextendsA{

publicvoidf(){

//super.f();//調(diào)用從父類繼承過來的f方法

f(10);

System.out.printf("BBBB\n");

publicclassTestOver_2{

publicstaticvoidmain(String[]zhangsan){

Bbb=newB();

bb.f();

)

}

++++++++++++++++++++++++++++++++++++2016年3月5日

16:15:1031

-------------------------------------------------------2016年3月7日

06:23:02

classHuman{

privateStringname;

privateintage;

publicHuman。//不用加分號

(}

publicHuman(Stringname,intage){

this,name=name;

this,age=age;

}

publicvoidSetName(Stringname){

this,name=name;

}

publicvoidSetage(intage){

this,age=age;

}

publicStringgetlnfor。//是String類型而不是void類型

Stringstrlnf=name+":"+age;

returnstrlnf;

classStudentextendsHuman{

publicStringschool;

publicStudent(用

publicStudent(Stringname,intage,Stringschool){

super(name,age);

//this.name=name;//error,共有不能訪問私有;

//this,age=age;

this,school=school;

)

publicvoidsetSchool(Stringschool){

this,school=school;

publicStringgetlnfor(){

//Stringstrlnf=name+":"+age+""+school;//error,

共有不能訪問私有;

Stringstrlnf=super.getlnfor()+":"+school;

returnstrlnf;

}

}

publicclassTestStudent{

publicstaticvoidmain(String[]args){

Studentstl=newStudent("校長",22,"一中");

System.out.printf("%s\n",stl.getlnforQ);//是stl不是st

“L”

}

07:23:16

****多態(tài)

定義:同一代碼可以隨上下文的不同而執(zhí)行不同的操作,俗稱多

O

子類對象可以直接賦給父類引用,但父類對象在任何情況下都不可以

直接賦給子類引用。

通過父類的引用只能訪問子類對象從父類繼承過來的成員

通過父類引用不能訪問子類對象所特有的成員

父類引用永遠不可能直接賦給子類引用(只有在父類引用本身指向的

就是一個子類對象時,才可以把父類引用強制轉(zhuǎn)化為子類引用,其他

情況下不允許把父類引用強制轉(zhuǎn)化為子類引用)

/*

2009年2月11日17:27:54

父類引用永遠不可能直接賦給子類引用

注意:

只有在父類引用本身指向的就是一個子類對象時,才可以把父

類引用強制轉(zhuǎn)化為子類引用

其他情況下不允許把父類引用強制轉(zhuǎn)化為子類引用

*/

classA

classBextendsA

publicclassTestPoly_3

publicstaticvoidmain(String[]args)

(

Aaa=newA();

Bbb=newB();

//bb=aa;//error

//bb=(B)aa;//24行編譯沒有錯誤,但運行時出錯!

因為aa指向的是父類對象

Aaa2=newB();

//bb=aa2;//error永遠不可以把父類引用直接賦給子

類引用

bb=(B)aa2;//OK因為aa2本身指向的就是一個B類對

象所以可以進行強制轉(zhuǎn)化,注意與24行的區(qū)別如果父類引用指

向的是個子類對象,則可以通過強制類型轉(zhuǎn)化把父類引用強制轉(zhuǎn)化為

子類引用,注意必須強制轉(zhuǎn)化,在Java中無論如何絕對不可能直接

把父類引用賦給子類引用的

}

}

+++++++++++++++++++++++++++++++++++++++++++++++++

+++++++++

抽象類:通常用來作為一個類族的最頂層的父親,用最底層的類來表

示具體的事物。

abstract抽象類不一定有抽象方法,有抽象方法一定有抽象類。

//有抽象方法的類一定是抽象類

abstractclassA

(

abstractpublicvoidf();//沒有方法體的方法叫做抽象方法,

抽象方法要求末尾必須得加分號,前面必須得加

abstract

}

//抽象類不一定有抽象方法

abstractclassB

(

publicvoidg()

}

publicclassTestAbstract_l

publicstaticvoidmain(String[]args)

(

}

}

+++++++++++++++++++++++++++++++++++++++++++++++++

+++++++

abstractclassA

(

abstractpublicvoidf();

}

classBextendsA

(

publicvoidf()

System.out.printf("BBBB\n");

publicclassTestAbsPoly_l

publicstaticvoidmain(String[]args)

(

//Aaa=newA();//error18行

Bbb=newB();//OK

bb.f();//OK

Aaa;//23行OK可以定義一個抽象類的引用,但是不

可以定義一個抽象類的對象,所以18行error,本行OK

aa=bb;

aa.f();

}

}

+++++++++++++++++++++++++++++++++++++++++++++++++

++++++++++++++

final關(guān)鍵字可以修飾:整個類,類中的若干個屬性,類中的若干個方

法。

如果認為一個類已經(jīng)很完美了不需要子類再去繼承的時候可以在前

面加final。

修飾類中的若干個屬性時,表示該屬性必須被賦值,并且只能被賦一

次值。

修飾方法時,表示該方法可以被子類繼承,但不可以被重寫。

classA

(

finalpublicinti=10;//常變量

publicA()

i=10;

publicvoidf()

//i=22;

classTestFinal_l

publicstaticvoidmain(String[]args)

classA

finalpublicvoidf()//如果在public前面力口final,則編譯時就

會報錯

f

System,out.println("AAAA");

}

}

classBextendsA

(

//publicvoidf()

//{

//System,out.println("BBBB");

//}

publicclassTestFinal_2

publicstaticvoidmain(String[]args)

+++++++++++++++++++++++++++++++++++++++++++++++++

+++++

接口

定義:就是抽象方法和常量值的集合。從本質(zhì)上看,接口就是一種特

殊的抽象類

格式:[public]interfaceinterfacename[extends]

接口中定義的屬性必須是publicstaticfinal的,而接口定義的方法

則必須是publicabstract的,因此這些修飾符可以省略或部分省

略。

publicstaticfinalinti;

publicabstractvoidf();

接口的實現(xiàn)implements(類可以繼承類,類不可以繼承接口,

但類可以實現(xiàn)接口)

abstractclassAimplementsIt2{}

接口可以繼承接口,而且可以繼承多個接口,即允許多繼承。用

extends

interfaceItlextendsIt2,It3{}

一個類可以在繼承一個父類的同時實現(xiàn)一個或多個接口,但extends

關(guān)鍵字必須用在implements之前。

classTextendsAimplementsIt3,It4{}

接口可以實現(xiàn)不相關(guān)類的相同行為,可以實現(xiàn)多繼承,從一定程度上

彌補了類只能單繼承的缺陷。

classA

(

inti;

publicvoidshow()

(

System.out.printf("show->%d\n",i);〃i是屬性i,此時

的i等價于this.i

)

publicvoidf()

inti;//這里的i和屬性i沒有沖突??梢灾欢x不使用。使用

之前得初始化

//System.out.printf("f->%d\n",i);//error因為i是

局部變量,Java要求局部變量在使用之前必須得初始化

}

publicvoidg(inti)//i是形參i形參i也是局部變量

{

this.i=i;//ok

System.out.printf("f->%d\n",i);

publicclassE

(

publicstaticvoidmain(String[]args)

{

Aaa=newA();

//aa.g(99);

aa.show();

}

}

+++++++++++++++++++++++++++++++++++++++++++++++++

++++++++++

面向?qū)ο蟠缶V:

封裝

訪問控制符:只有private的不能在外部訪問,類內(nèi)部訪問控制

符是透明的

構(gòu)造方法:定義:名字和類名一樣,無返回值。

注意事項:一個類對象只能調(diào)用一個構(gòu)造方法,一個類至

少有一個構(gòu)造方法,如果自己定義了構(gòu)造方法,編

譯器將不在提供默認的構(gòu)造方法。

this:一個對象只含有屬性的空間,n個對象共用一份方法的拷

貝。

static:

繼承:java只允許單繼承,私有成員無法被繼承。

重寫:方法名和參數(shù)列表和返回值必須一樣。訪問權(quán)限不能過低。

多態(tài)

++++++++++++++++++++++++++++++++++++++++2016年3月

7日11:23:2139

包:javac-d.文件名.java

packagezhangsan.lisi.TestPackage先檢測當前目錄下是否有

zhangsan/lisi這個包(文件夾),如果有,在監(jiān)測該包下是否有

zhangsan.lisi.TestPackage這個類,如果沒有,編譯器將再去

classpath設(shè)置的路徑中依次尋找。如果都查找失敗,則運行時出錯。

setclasspath=F:\java;

同包和不同包類的相互訪問。

在同一個包中,只有私有的不能被另一個類訪問,也只有私有的

不能被訪問

在不同包沒有任何關(guān)系的兩個類,只有public類的public成員才可

以被另一個類訪問。

在不同包中有繼承關(guān)系的兩個類,只有public類的public成員和

public類的protected成員可以被另一個包中的子類在內(nèi)部使用,但

在子類的外部,通過子類對象名只能訪問父類的public成員。

---------------------------------------------------------2016年3月8日

06:28:18

F:\java\practise\故宮〉javac-d.A.javaB.java

F:\java\practise\故宮》javacom.ruide.M

HelloWorld!

HelloJAVA!HelloWorld!

packagezhangsan.lisi;

publicclassA

publicvoidg()

System.out.printf("HelloWorld!\n");

}

protectedvoidb()

(

System.out.printf("HelloJAVA!");

packagecom.ruide;

importzhangsan.lisi.*;

classBextendsA{

publicvoidf(){

g();//ok

b();//ok,在子類內(nèi)部可以訪問從另一個包繼承過來的父類的

public和protected成員。

classM{

publicstaticvoidmain(String[]args){

Bbb=newB();

bb.f();//ok

bb.g();//ok

//bb.b();//error,不能訪問protected。

}

)

+++++++++++++++++++++++++++++++++++++++++++++++++

++++++++++++45

歸檔工具jar包的生成

作用:發(fā)布和使用類庫,便于資源的組合和管理

格式:jarcvf要生成的包名.jar*

生成后打開用解壓軟件打開。

如何使用jar包中的類

importzhangsan.lisi.A;//注意路徑后面的分號;

publicclassTest

publicstaticvoidmain(String[]args)

Aaa=newA();

aa.g();

}

F:\java\practise\故宮》setclasspath二F:\java\practise\故宮\1\T.jar;

F:\jaua\practise\故宮》javacTest,java

F:\java\practise\故呂》javaTest

HelloWorld!

++++++++++++++

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論