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

下載本文檔

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

文檔簡(jiǎn)介

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

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

1、java概述

sun公司Green項(xiàng)目hotjava瀏覽器

2、java特點(diǎn)

簡(jiǎn)單易學(xué):沒(méi)有c和C++的指針,內(nèi)存申請(qǐng)和釋放

安全性高:強(qiáng)類(lèi)型,垃圾回收機(jī)制,禁止非法內(nèi)存訪(fǎng)問(wèn)。

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

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

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

上運(yùn)行。

硬件操作系統(tǒng)編譯器高級(jí)語(yǔ)言程序用戶(hù)

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

3、java虛擬機(jī)JVM

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

裝有不同操作系統(tǒng)的機(jī)器上,需要有專(zhuān)門(mén)為該操作系統(tǒng)開(kāi)發(fā)的JVM,

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

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

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

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

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

6、怎么學(xué)JAVA語(yǔ)言。

《java就業(yè)培訓(xùn)》張孝祥,《java學(xué)習(xí)筆記》林信良

張孝祥,孫鑫,張利國(guó),馬士兵

7、學(xué)習(xí)目標(biāo),了解程序語(yǔ)言及發(fā)展歷史,掌握語(yǔ)法規(guī)則,掌握常用

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

應(yīng)用面對(duì)對(duì)象的設(shè)計(jì)思想。為將來(lái)學(xué)習(xí)J2EE做準(zhǔn)備。

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

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

自帶的命令;2、要想在dos下運(yùn)行用戶(hù)自己的程序,則必須進(jìn)入

到改程序的當(dāng)前目錄下方課運(yùn)行;3、如果希望在dos的任何目錄

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

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

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

路徑,并且以最先找到的為準(zhǔn)。路徑與路徑之間用分號(hào);分開(kāi)。

setpath=%path%;c:\Intel;

java語(yǔ)言運(yùn)行

publicclassMyApp{

publicstaticvoidmain(String[]args){

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

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

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

C:\Users\asus>cdF:\java

C:\Users\asus>f:

F:\java>javacMyapp.java

C:\Users\asus>f:

F:\java>javaMyapp

錯(cuò)誤:找不到或無(wú)法加載主類(lèi)MyappF:\>cdjava

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

我能學(xué)好Java語(yǔ)言!

F:\java>javaMyApp

F:\java>我能學(xué)好Java語(yǔ)言!

c語(yǔ)言編譯后exe運(yùn)行:

C:\Users\asus>cdF:\java

C:\Users\asus>f:

F:\java>fff.exe

a=5,b=3

9、classpath的設(shè)置。

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

文件所存放的路徑,并且以最先找到的為準(zhǔn)。

10、常見(jiàn)dos命令。

cd\表示進(jìn)入當(dāng)前根目錄下

cdA\B\C表示當(dāng)前目錄下的A文件夾下的B文件夾下的C文

件夾下面

E:進(jìn)入E盤(pán)根目錄

dir查看文件夾下文件信息

cis清屏

javacname..java編譯java文件

javaname運(yùn)行java文件,即打開(kāi).class文件,

編譯時(shí)寫(xiě)文件名,運(yùn)行時(shí)寫(xiě)文件中的類(lèi)名。故文件的名字和類(lèi)名

最好一樣。

11、Java語(yǔ)言的基本要素——標(biāo)識(shí)符

程序員對(duì)程序中的各個(gè)元素加以命名時(shí)使用的命名記號(hào)稱(chēng)為標(biāo)識(shí)

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

標(biāo)識(shí)符是以字母,下劃線(xiàn)(_)美元符($)開(kāi)始的一個(gè)字符序列,

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

關(guān)鍵字:abstractdefaultifprivate

12、數(shù)據(jù)類(lèi)型

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

數(shù)值型(整數(shù)類(lèi)型(int,byte,short,long),浮點(diǎn)類(lèi)型(float,

double))

字符型(char)

布爾型(boolean)

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

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

%d(int,longint,)

%f(float,double)

%c(char)

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

%s(string)

14、常量

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

一個(gè)常量整數(shù)默認(rèn)是int類(lèi)型,如果數(shù)字過(guò)大,則必須在末尾

力口L,否貝IJ會(huì)報(bào)錯(cuò)。例:longi=5678678956789;//error

longi=5678678956789L;//ok

⑵浮點(diǎn)型:一個(gè)實(shí)數(shù)默認(rèn)是double類(lèi)型。如果希望一個(gè)實(shí)數(shù)是

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

類(lèi)型變量,編譯時(shí)會(huì)報(bào)錯(cuò)。

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

(3)字符常量:

必須用單引號(hào)括起來(lái);Java中字符和字符串都用Unicode編

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

特殊字符的常量表示法

'\\"\n'

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

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

定義:booleanb=true

只能參與邏輯關(guān)系運(yù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、不同類(lèi)型變量的字節(jié)。(一個(gè)字節(jié)byte八位bit)

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

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

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

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

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

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

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

1.7E+308。

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

一,X

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

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

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

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

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

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

b=(byte)i;//ok強(qiáng)制類(lèi)型轉(zhuǎn)化

//b=i;//本語(yǔ)句錯(cuò)誤,上面的(byte)i并沒(méi)有改變i本身的數(shù)據(jù)類(lèi)

型。

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

(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)除法運(yùn)算符(/)

跟C語(yǔ)言一樣。

(3)取余運(yùn)算符(%)

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

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

⑷邏輯與,邏輯或。

跟C語(yǔ)言一樣。

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

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

0&0=0;0&1=0

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

0|0=0;0|1=1

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

A(按位異或)把兩個(gè)數(shù)字的所有二進(jìn)制位異或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請(qǐng)輸入A的值");

longA=scan.nextLongQ;

System.out.printing請(qǐng)輸入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)該加分號(hào)

(

Scannerscan=newScanner(System.in);

System.out.printing請(qǐng)輸入一個(gè)年份:");

longyear=scan.nextLongO;

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

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

else

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

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

++++++電子書(shū)113

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

同移動(dòng),當(dāng)為正數(shù)時(shí),最高位0,最高位補(bǔ)零,而為負(fù)數(shù)時(shí),最高位

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

果。

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

(6)自增自減

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

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

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

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

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

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

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

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

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

18、流程控制

同C語(yǔ)言。

classTriangle//啟動(dòng)類(lèi)

(

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、面向過(guò)程設(shè)計(jì)思想

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

步一步實(shí)現(xiàn)。

2、以算法為核心,

3、自頂向下設(shè)計(jì),要求一開(kāi)始必須對(duì)問(wèn)題有很深的了解

4、將大問(wèn)題轉(zhuǎn)化為若干問(wèn)題來(lái)求解

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

6、直接面向問(wèn)題。

缺點(diǎn):數(shù)據(jù)和操作分離開(kāi),對(duì)數(shù)據(jù)與操作的修改變得很困難;數(shù)據(jù)的

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

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

1、確定該問(wèn)題由哪些問(wèn)題組成!先用類(lèi)模擬出該事物

2、通過(guò)類(lèi)簡(jiǎn)介解決問(wèn)題。

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

得的這個(gè)概念就是類(lèi)

類(lèi)是抽象的,用來(lái)模擬一類(lèi)事物,是一個(gè)概念,一旦定義了,類(lèi)

的概念就永遠(yuǎn)存在

22、對(duì)象:類(lèi)的一個(gè)個(gè)體;具體的實(shí)實(shí)在在存在的事物;生命周期

是短暫的。

汽車(chē)設(shè)計(jì)圖

!1~~1

第一輛第二輛第三輛

■如果將對(duì)象比作汽車(chē),那么類(lèi)就是汽車(chē)的設(shè)計(jì)圖紙

類(lèi)的定義:

classPerson

{

intage;

voidshout()

(

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

}

}

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

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

shout方法可以直接訪(fǎng)問(wèn)同一個(gè)類(lèi)中的age變量。

23、內(nèi)存分配

--------------------類(lèi)對(duì)象實(shí)例1---------------------------------

classA

inti;

intj;

}

classTestMemo

(

publicstaticvoidmain(String[]args)

(

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

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

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

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

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

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

這個(gè)i成員

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

這個(gè)j成員

aa.i=10;

aa.j=20;

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

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

11未完

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

吧看到的。

"畢竟我是新來(lái)的,什么都不懂,就說(shuō)了一句對(duì)不起",這樣不行的,

得說(shuō)給我1個(gè)小時(shí)保證能做出來(lái),做不出來(lái)砍手(只是舉個(gè)例子,得

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

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

"后來(lái)大姐說(shuō)她自己來(lái),不需要我了",不能指望所有人都有安全感,

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

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

工作時(shí)間的,上頭需要一個(gè)結(jié)果,他就自己幫你寫(xiě)好了,這個(gè)是花費(fèi)

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

“最后就自己摸索的寫(xiě)了幾個(gè)頁(yè)面交給她了",超時(shí)了,而且你寫(xiě)的跟

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

么;

"讓我模仿著寫(xiě)登錄,我想終于能寫(xiě)Java代碼了,所以前臺(tái)頁(yè)面就隨

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

清楚,因?yàn)橐坏┏鲥e(cuò)(要求做完結(jié)果只做了一般或者做出來(lái)不一樣的

東西)需要自己加班彌補(bǔ),沒(méi)人會(huì)承認(rèn)自己沒(méi)說(shuō)清楚(信息傳輸?shù)倪^(guò)

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

經(jīng)不是一個(gè)意思了),只會(huì)說(shuō)我以為他都懂了,而且他也沒(méi)問(wèn),所以

就沒(méi)說(shuō);

"看bootstrap看的挺細(xì)致的,兩天看完",30多歲的大哥哥,對(duì)于2

天看完bootstrap是不會(huì)接受的,

http:///article/19192ad83aa565e53e570

7cl.html,拿來(lái)復(fù)制粘貼,照著文檔改一改就出來(lái)了,有人可能會(huì)

說(shuō)這是碼農(nóng)的行為,死記硬背,不理解就干,這個(gè)沒(méi)錯(cuò),但是細(xì)致地

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

校你掏錢(qián),你做主,公司他掏錢(qián),他做主),如果布置個(gè)活得考慮給

個(gè)完全理解的時(shí)間,花費(fèi)太高,實(shí)習(xí)3000元的公司承擔(dān)不起;

“別人都不跟我說(shuō)話(huà)",你指望著他們跟你說(shuō)話(huà),他們指望著你跟他們

說(shuō)話(huà),隔著一層窗戶(hù)紙,都不說(shuō)破,最后形同陌路,摸不到青春的奶

子,你小時(shí)候?yàn)槭裁唇徊坏脚笥?,其?shí)現(xiàn)在想一想,勇敢點(diǎn)是不是

就破處了,破處之后是不是就會(huì)一直想著要了

---------------類(lèi)對(duì)象實(shí)例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é)論:一個(gè)newA()生成的對(duì)象是不一樣的。

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

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

--------------類(lèi)對(duì)象實(shí)例3---------------------------------------

classA

inti;

intj;

classTestMemo

publicstaticvoidmain(String[]args)

(

Aaal=newA();

Aaa2=aal;//最后aal和aa2同時(shí)指向堆中的一個(gè)對(duì)象。

aal.j=50;

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

)

}

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

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

-------------訪(fǎng)問(wèn)控制符-------------------------------------

類(lèi)的訪(fǎng)問(wèn)控制符有四種:publicprotect默認(rèn)private

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

訪(fǎng)問(wèn)控制符是針對(duì)外部訪(fǎng)問(wèn)而言的。

在一個(gè)類(lèi)的外部:通過(guò)類(lèi)對(duì)象名.私有成員名

的方式是無(wú)法訪(fǎng)問(wèn)該對(duì)象中的私有成員的,這樣寫(xiě)編譯時(shí)會(huì)出

錯(cuò)。

classTriangle_2

privateinta,b,c;//如果不加訪(fǎng)問(wèn)控制符private,將默認(rèn)為

default,可以被任何一個(gè)對(duì)象去使用。

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());

}

)

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

+++++++

------------類(lèi)的構(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("無(wú)參構(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è)忠告

咱當(dāng)程序員也有不少年頭了,不算有出息,環(huán)顧四周,也沒(méi)有看見(jiàn)幾

個(gè)有出息的!回顧程序員生涯,感慨萬(wàn)千,愿意講幾句掏心窩子的話(huà),

也算給咱們師弟師妹們提個(gè)醒,希望他們比咱們強(qiáng)!

方法/步驟

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

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

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

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

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

么,當(dāng)你對(duì)一個(gè)行業(yè)有那么幾年的體會(huì),以后錢(qián)根本不是問(wèn)題。頻繁

地動(dòng)蕩不是上策,最后你對(duì)哪個(gè)行業(yè)都沒(méi)有摸透,永遠(yuǎn)是新手!

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

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

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

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

非你只愿意到老還是個(gè)程序員!

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

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

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

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

么多年,難道見(jiàn)識(shí)不如你這個(gè)新兵?人家或許善于管理,善于領(lǐng)會(huì)

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

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

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

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

四、多交社會(huì)三教九流的朋友!

不要只和工程師交往,認(rèn)為有共同語(yǔ)言,其實(shí)更重要的是和其他類(lèi)人

物交往,如果你希望有朝一日當(dāng)老板或高層管理,那么你整日面對(duì)

的就是這些人。了解他們的經(jīng)歷,思維習(xí)慣,愛(ài)好,學(xué)習(xí)他們處理問(wèn)

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

的本錢(qián),沒(méi)有這些以后就會(huì)笨手笨腳,跌跌撞撞,遇到重重困難,交

不少學(xué)費(fèi),成功的概率大大降低!

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

++++++++

管理與技術(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.想不明白的時(shí)候畫(huà)一下圖。

bbl.i=20;

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

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

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

的重載。

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

少有一個(gè)是不一樣的

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

編譯時(shí)會(huì)出錯(cuò)。

classTestOver

staticintadd(inta,intb)

returna+b;

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

doubleadd(intx,inty)將會(huì)報(bào)錯(cuò)

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)造方

法的名稱(chēng)

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)會(huì)先執(zhí)行定義時(shí)賦的初值,然后再執(zhí)行構(gòu)造函數(shù)中賦的初

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

值。

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

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

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

年3月5日07:43:39

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

數(shù)列表中。

當(dāng)前時(shí)刻,哪個(gè)對(duì)象調(diào)用該函數(shù),那么this就指向當(dāng)前調(diào)用該函

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

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

內(nèi)部通過(guò)this就可以訪(fǎng)問(wèn)當(dāng)前正在調(diào)用該函數(shù)的對(duì)象的成員

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

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

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

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

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

classA

(

privateinti;

publicA(inti)

{

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

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

}

publicvoidshow(){

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

//this表示當(dāng)前時(shí)刻正在調(diào)用show方法的對(duì)象

//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是屬于類(lèi)本身,或者講:沒(méi)有對(duì)象,我們?nèi)匀豢梢灾?/p>

接通過(guò)類(lèi)名的方式訪(fǎng)問(wèn)該類(lèi)內(nèi)部的static屬性。

static屬性和方法雖然屬于類(lèi)本身,雖然可以通過(guò)類(lèi)名的方式訪(fǎng)

問(wèn),但static屬性和方法很明顯也屬于類(lèi)本身,當(dāng)然也可以通過(guò)類(lèi)對(duì)

象和方法來(lái)訪(fǎng)問(wèn)。

只有非private的static成員才可以通過(guò)類(lèi)名的方式訪(fǎng)問(wèn)。

static只是表明了該成員具有了可以通過(guò)類(lèi)名訪(fǎng)問(wèn)的潛在特征,

但是否能通過(guò)類(lèi)名訪(fǎng)問(wèn),還必須滿(mǎn)足一個(gè)條件,就是該類(lèi)名是非

private成員。

/*

2016年3月5日10:01:20

本程序證明了:

靜態(tài)方法不能訪(fǎng)問(wèn)非靜態(tài)成員

非靜態(tài)方法可以訪(fǎng)問(wèn)靜態(tài)成員

*/

classA

{

privatestaticinti=10;

publicintj=99;

publicstaticvoidf()

//g();//error靜態(tài)方法不能訪(fǎng)問(wèn)非靜態(tài)成員

//j=22;//error

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

}

publicvoidg()

i

//f();//OK說(shuō)明非靜態(tài)方法可以訪(fǎng)問(wèn)靜態(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,無(wú)法從靜態(tài)上下文中引用非靜態(tài)方法

類(lèi),對(duì)象,方法,屬性,

sourcefile

classfile

method1

statement

method2

statement

statement

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

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

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

2009年5月31日14:59:26

本程序證明了:

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

私有成員無(wú)法被子類(lèi)方法訪(fǎng)問(wèn)

2、通過(guò)子類(lèi)對(duì)象名只能訪(fǎng)問(wèn)從父類(lèi)繼承過(guò)來(lái)的非私有成員

總結(jié):

私有不能被繼承

私有物理上已經(jīng)被繼承過(guò)來(lái),只不過(guò)邏輯上程序員不能去訪(fǎng)問(wèn)

因此繼承必須慎重,否則會(huì)浪費(fèi)內(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中訪(fǎng)問(wèn)private

bb.b();

bb.g();

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

//bb.s();//error

//bb.k=22;

}

)

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

java只支持單繼承,不允許多重繼承。單繼承就是一個(gè)類(lèi)只能有一個(gè)

父類(lèi)。多繼承就是一個(gè)類(lèi)可以有多個(gè)父類(lèi)??梢杂卸鄬永^承,即一個(gè)

類(lèi)可以繼承某一個(gè)類(lèi)的子類(lèi),如類(lèi)B繼承了類(lèi)A,類(lèi)C繼承類(lèi)B,那么

類(lèi)C也間接繼承了類(lèi)A。

子類(lèi)可以繼承父類(lèi)所有的成員變量和成員方法,但子類(lèi)永遠(yuǎn)無(wú)法繼承

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

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

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

?headfirstjava?

2016年3月5日14:21:47

子類(lèi)訪(fǎng)問(wèn)父類(lèi)成員的三種方式

在子類(lèi)內(nèi)部訪(fǎng)問(wèn),通過(guò)子類(lèi)對(duì)象名訪(fǎng)問(wèn),通過(guò)子類(lèi)的類(lèi)名訪(fǎng)問(wèn)。經(jīng)驗(yàn)

證子類(lèi)無(wú)法通過(guò)以上三種方式訪(fǎng)問(wèn)父類(lèi)的私有成員,所以,得出結(jié)論,

私有成員無(wú)法被子類(lèi)繼承。

super:

classA{

A(){

System,out.printin("AAAA");

}

A(inti){}

classBextendsA{

B(){

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

動(dòng)隱藏調(diào)用super。;但如果父類(lèi)沒(méi)有無(wú)參的構(gòu)造函數(shù),則會(huì)報(bào)錯(cuò)

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

System.out.println("BBBB");

classCextendsB

(

CO

(

//intk=10;//如果該語(yǔ)句生效則會(huì)出錯(cuò),因?yàn)闀?huì)導(dǎo)致

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

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

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

候就會(huì)報(bào)錯(cuò)。

//super。;語(yǔ)句可以寫(xiě),也可以不寫(xiě),不寫(xiě)的化,系

統(tǒng)會(huì)自動(dòng)調(diào)用的

//如果顯示寫(xiě)出來(lái)的話(huà),編譯器要求該語(yǔ)句前面不

能加任何語(yǔ)句,也就是說(shuō)該語(yǔ)句必須保證是第一條語(yǔ)句

//super。也可以改為super⑵;但前提是父類(lèi)必須

有帶一個(gè)參數(shù)的構(gòu)造函數(shù),否則也會(huì)報(bào)錯(cuò)

//如果把35行改為super(2);編譯時(shí)就會(huì)報(bào)錯(cuò)!

System.out.println("CCCC");

classTestSuper_l

(

publicstaticvoidmain(String[]args)

(

Ccc=newC();

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

}

}

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

++++++++++

總結(jié):

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

如果父類(lèi)沒(méi)有這種形式的構(gòu)造函數(shù),那么在編譯的時(shí)候就會(huì)報(bào)錯(cuò)。

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

句,否則會(huì)出錯(cuò)

3、super。;如果不寫(xiě),則編譯器會(huì)自動(dòng)添加,所以此時(shí)如果父類(lèi)沒(méi)

有無(wú)參的構(gòu)造函數(shù)就會(huì)出錯(cuò)

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

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

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

類(lèi)的類(lèi)名,這與C++不同

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

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

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

重寫(xiě)父類(lèi)方法:是指在子類(lèi)中重新定義父類(lèi)中已有的方法

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

類(lèi)型

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

現(xiàn),編譯時(shí)會(huì)報(bào)錯(cuò)

覆蓋方法時(shí),不能使用比父類(lèi)中被覆蓋的方法更嚴(yán)格的訪(fǎng)問(wèn)權(quán)限。

classA{

//publicvoidf(){

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

//}

publicvoidf(inti){

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

classBextendsA{

publicvoidf(){

//super.f();//調(diào)用從父類(lèi)繼承過(guò)來(lái)的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。//不用加分號(hào)

(}

publicHuman(Stringname,intage){

this,name=name;

this,age=age;

}

publicvoidSetName(Stringname){

this,name=name;

}

publicvoidSetage(intage){

this,age=age;

}

publicStringgetlnfor。//是String類(lèi)型而不是void類(lèi)型

Stringstrlnf=name+":"+age;

returnstrlnf;

classStudentextendsHuman{

publicStringschool;

publicStudent(用

publicStudent(Stringname,intage,Stringschool){

super(name,age);

//this.name=name;//error,共有不能訪(fǎng)問(wèn)私有;

//this,age=age;

this,school=school;

)

publicvoidsetSchool(Stringschool){

this,school=school;

publicStringgetlnfor(){

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

共有不能訪(fǎng)問(wèn)私有;

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

returnstrlnf;

}

}

publicclassTestStudent{

publicstaticvoidmain(String[]args){

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

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

“L”

}

07:23:16

****多態(tài)

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

O

子類(lèi)對(duì)象可以直接賦給父類(lèi)引用,但父類(lèi)對(duì)象在任何情況下都不可以

直接賦給子類(lèi)引用。

通過(guò)父類(lèi)的引用只能訪(fǎng)問(wèn)子類(lèi)對(duì)象從父類(lèi)繼承過(guò)來(lái)的成員

通過(guò)父類(lèi)引用不能訪(fǎng)問(wèn)子類(lèi)對(duì)象所特有的成員

父類(lèi)引用永遠(yuǎn)不可能直接賦給子類(lèi)引用(只有在父類(lèi)引用本身指向的

就是一個(gè)子類(lèi)對(duì)象時(shí),才可以把父類(lèi)引用強(qiáng)制轉(zhuǎn)化為子類(lèi)引用,其他

情況下不允許把父類(lèi)引用強(qiáng)制轉(zhuǎn)化為子類(lèi)引用)

/*

2009年2月11日17:27:54

父類(lèi)引用永遠(yuǎn)不可能直接賦給子類(lèi)引用

注意:

只有在父類(lèi)引用本身指向的就是一個(gè)子類(lèi)對(duì)象時(shí),才可以把父

類(lèi)引用強(qiáng)制轉(zhuǎn)化為子類(lèi)引用

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

*/

classA

classBextendsA

publicclassTestPoly_3

publicstaticvoidmain(String[]args)

(

Aaa=newA();

Bbb=newB();

//bb=aa;//error

//bb=(B)aa;//24行編譯沒(méi)有錯(cuò)誤,但運(yùn)行時(shí)出錯(cuò)!

因?yàn)閍a指向的是父類(lèi)對(duì)象

Aaa2=newB();

//bb=aa2;//error永遠(yuǎn)不可以把父類(lèi)引用直接賦給子

類(lèi)引用

bb=(B)aa2;//OK因?yàn)閍a2本身指向的就是一個(gè)B類(lèi)對(duì)

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

向的是個(gè)子類(lèi)對(duì)象,則可以通過(guò)強(qiáng)制類(lèi)型轉(zhuǎn)化把父類(lèi)引用強(qiáng)制轉(zhuǎn)化為

子類(lèi)引用,注意必須強(qiáng)制轉(zhuǎn)化,在Java中無(wú)論如何絕對(duì)不可能直接

把父類(lèi)引用賦給子類(lèi)引用的

}

}

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

+++++++++

抽象類(lèi):通常用來(lái)作為一個(gè)類(lèi)族的最頂層的父親,用最底層的類(lèi)來(lái)表

示具體的事物。

abstract抽象類(lèi)不一定有抽象方法,有抽象方法一定有抽象類(lèi)。

//有抽象方法的類(lèi)一定是抽象類(lèi)

abstractclassA

(

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

抽象方法要求末尾必須得加分號(hào),前面必須得加

abstract

}

//抽象類(lèi)不一定有抽象方法

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可以定義一個(gè)抽象類(lèi)的引用,但是不

可以定義一個(gè)抽象類(lèi)的對(duì)象,所以18行error,本行OK

aa=bb;

aa.f();

}

}

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

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

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

法。

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

面加final。

修飾類(lèi)中的若干個(gè)屬性時(shí),表示該屬性必須被賦值,并且只能被賦一

次值。

修飾方法時(shí),表示該方法可以被子類(lèi)繼承,但不可以被重寫(xiě)。

classA

(

finalpublicinti=10;//常變量

publicA()

i=10;

publicvoidf()

//i=22;

classTestFinal_l

publicstaticvoidmain(String[]args)

classA

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

會(huì)報(bào)錯(cuò)

f

System,out.println("AAAA");

}

}

classBextendsA

(

//publicvoidf()

//{

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

//}

publicclassTestFinal_2

publicstaticvoidmain(String[]args)

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

+++++

接口

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

殊的抽象類(lèi)

格式:[public]interfaceinterfacename[extends]

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

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

略。

publicstaticfinalinti;

publicabstractvoidf();

接口的實(shí)現(xiàn)implements(類(lèi)可以繼承類(lèi),類(lèi)不可以繼承接口,

但類(lèi)可以實(shí)現(xiàn)接口)

abstractclassAimplementsIt2{}

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

extends

interfaceItlextendsIt2,It3{}

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

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

classTextendsAimplementsIt3,It4{}

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

彌補(bǔ)了類(lèi)只能單繼承的缺陷。

classA

(

inti;

publicvoidshow()

(

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

的i等價(jià)于this.i

)

publicvoidf()

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

之前得初始化

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

局部變量,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:

封裝

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

符是透明的

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

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

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

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

this:一個(gè)對(duì)象只含有屬性的空間,n個(gè)對(duì)象共用一份方法的拷

貝。

static:

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

重寫(xiě):方法名和參數(shù)列表和返回值必須一樣。訪(fǎng)問(wèn)權(quán)限不能過(guò)低。

多態(tài)

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

7日11:23:2139

包:javac-d.文件名.java

packagezhangsan.lisi.TestPackage先檢測(cè)當(dāng)前目錄下是否有

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

zhangsan.lisi.TestPackage這個(gè)類(lèi),如果沒(méi)有,編譯器將再去

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

setclasspath=F:\java;

同包和不同包類(lèi)的相互訪(fǎng)問(wèn)。

在同一個(gè)包中,只有私有的不能被另一個(gè)類(lèi)訪(fǎng)問(wèn),也只有私有的

不能被訪(fǎng)問(wèn)

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

以被另一個(gè)類(lèi)訪(fǎng)問(wèn)。

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

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

在子類(lèi)的外部,通過(guò)子類(lèi)對(duì)象名只能訪(fǎng)問(wèn)父類(lè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,在子類(lèi)內(nèi)部可以訪(fǎng)問(wèn)從另一個(gè)包繼承過(guò)來(lái)的父類(lèi)的

public和protected成員。

classM{

publicstaticvoidmain(String[]args){

Bbb=newB();

bb.f();//ok

bb.g();//ok

//bb.b();//error,不能訪(fǎng)問(wèn)protected。

}

)

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

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

歸檔工具jar包的生成

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

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

生成后打開(kāi)用解壓軟件打開(kāi)。

如何使用jar包中的類(lèi)

importzhangsan.lisi.A;//注意路徑后面的分號(hào);

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

最新文檔

評(píng)論

0/150

提交評(píng)論