《瘋狂JAVA講義》李剛上課筆記_第1頁
《瘋狂JAVA講義》李剛上課筆記_第2頁
《瘋狂JAVA講義》李剛上課筆記_第3頁
《瘋狂JAVA講義》李剛上課筆記_第4頁
《瘋狂JAVA講義》李剛上課筆記_第5頁
已閱讀5頁,還剩52頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第一章到第十二章

dayOlJava開發(fā)前奏(第1章)

IT行業(yè)

硬件

-各種硬件,技術(shù)含量越高,價格越貴。

軟件

-瞧不到,摸不著。

軟件比硬件值錢得多?。?!

iPhone5-5000

制造成本400塊一一其她在品牌,在軟件。

美國幾乎不造硬件一一硬件不如軟件掙錢。

程序一一軟件得核心部分

程序:當(dāng)我們要做一件事情時,需要按一種既定得流程、步驟,依次完成每個過程,

——最后結(jié)果就出來了。

真正得程序員,會影響她得生活習(xí)慣,做所有事情,都會有計劃,有步驟。

計算機(jī)程序:驅(qū)動機(jī)器去為我們按既定流程、步驟去完成某件事情。

=======計算機(jī)就是很蠢得!它只會按我們規(guī)定得步驟去做事=======

Java能做什么?

1、做桌面軟件。一一針對個人。

Java在桌面軟件領(lǐng)域、并不流行。

MS,win8向“移動操作系統(tǒng)”轉(zhuǎn)型。

2、大型信息化系統(tǒng)。(Java最擅長)一一針對企業(yè)。

taobao(阿里軟件)、各種銀行系統(tǒng)、證券、電信、移動……

3、移動互聯(lián)網(wǎng)軟件。一一針對個人。

Android

編程語言得運行機(jī)制

程序:驅(qū)動機(jī)器去為我們按既定流程、步驟去完成某件事情。

能直接驅(qū)動計算機(jī)得一一機(jī)器指令。(難度非常大)

f匯編一高級語言(C、Java.......)

高級語言編程:源代碼就像“作文”一樣,容易編寫。

但高級語言得源代碼,機(jī)器瞧不懂,但人容易瞧懂、容易編寫。

學(xué)編程得所有工具安裝準(zhǔn)則:

1、不要安裝在有空格得路徑下。

2、不要安裝在有中文得路徑下。

(1)安裝JDK、

(2)既然要使用Java開發(fā),經(jīng)常需要使用javac、java命令。

執(zhí)行計算機(jī)命令得兩個方法

A。每次運行命令時,都輸入該命令得絕對路徑。

——可行,壞處就是麻煩。

B。告訴系統(tǒng),總就是到某些目錄下去找命令。

這就需要PATH環(huán)境變量:它得值就是N條路徑。中間以分號隔開。

用于告訴操作系統(tǒng),以后操作系統(tǒng)要找命令時,就依次在這N條路徑中找,

如果找到了,操作系統(tǒng)就執(zhí)行這些命令。

如果沒找到,操作系統(tǒng)就提示:“不就是內(nèi)部或外部命令,也不就是可運行得

程序”

PATH環(huán)境變量得作用:告訴【操作系統(tǒng)】到哪些路徑下去找【命令】。

絕對路徑:以盤符開始得路徑,就就是絕對路徑。

c:\abc\t、txt

相對路徑:不以盤符開始得路徑,就就是相對路徑。

abc\t>txt

啟動dos窗口,運行fcmd

打開“快速編輯模式”,即可用“右鍵”完成復(fù)制、粘貼。

cd路徑進(jìn)入指定路徑。

特殊路徑:

\根路徑。

、當(dāng)前路徑。>符號前得就就是當(dāng)前路徑。

、、上一級路徑。

dir:列出該路徑下得所有文件與目錄。

切換盤符:直接輸入盤符:即可。

Java程序得最小程序單元:類。

要定義類

[修飾符]class〈類名〉

(

)

[修飾符],只能就是publico

Java程序,如果要運行,必須有個入口方法:main方法:

publicstaticvoidmain(String[]args)

(

}

Java源文件得命名規(guī)則:

1、文件名必須以、java為后綴

2、如果源文件中定義了public修飾得類,主文件名必須與類名相同。

一個Java源文件,可以包含多個類定義。

但一個Java源文件最多只能包含一個public修飾得類。

編譯Java程序得命令:

javac-d目錄源文件得文件名

指定將生成得新文件放在哪里。

javac生成得新文件名得命名規(guī)則:類名、class

(每個類,對應(yīng)一個class文件)

運行Java程序得命令:

java類名

關(guān)于CLASSPATH環(huán)境變量得解釋:

1、CLASSPATH環(huán)境變量可以不設(shè)置。

2、CLASSPATH環(huán)境變量得作用?

CLASSPATH環(huán)境變量得作用:告訴【JVM]到哪些路徑下去找【類,

CLASSPATH環(huán)境變量得值,依然就是N條路徑,路徑之間用分號隔開。

3、如果您不設(shè)置CLASSPATH環(huán)境變量,相當(dāng)于CLASSPATH得值就是一個點(、)

如果您設(shè)置CLASSPATH環(huán)境變量,記得要加上一點(、)。

Java程序得注釋:

注釋得作用:給人(包括自己)瞧得。

注釋:對程序本身,不存在任何影響。

建議:總就是為程序添加合適得注釋。

注釋:還可用于調(diào)試程序,可以把程序中某段代碼先注釋掉。

對于程序員來說,還有一個更重要得能力:排錯。

1、先多遇到錯誤,多解決錯誤。

2、常見得錯誤,記下來引起錯誤得原因。

注釋分為3種:

單行注釋:〃

多行注釋:/**/

文檔注釋:/***/

——它可用于生成API文檔。

作業(yè):

10個類,分別在屏幕上打印不同得形狀:三角形、正方形、長方形……

day02數(shù)據(jù)類型與運算符(第3章)

Java語言得運行機(jī)制:

它既想吸收編譯型語言得速度快得優(yōu)點,又想吸收解釋型語言“跨平臺”得優(yōu)點

它變成了一個“既需【編譯】(平臺無關(guān)得字節(jié)碼文件)、又需要JVM得【解釋r得

語言。

Java語言得程序,速度快,而且能跨平臺。

編譯Java程序得命令:

javac-dv目錄〉源文件得路徑

運行Java程序得命令:

java類名

只要做Java開發(fā),javac、java這兩個命令就是必需得。

就是由Oracle得JDK所提供得。

SDK(SoftwareDevelopKits)

JDK(Java得SDK)

開發(fā)Java之前得準(zhǔn)備:

(1)安裝JDK。

JavaforDeveloper(JDK)JRE+各種編譯工具。

JavaforYourputer(JRE)

JRE(JavaWRuntimeEnviorment)=JVM+基礎(chǔ)類庫、程序

(2)由于我們需要使用javac、java命令。

如果不配置環(huán)境變量,每次使用javac、java命令時,都需要輸入命令得絕對路徑。

可以配置PATH環(huán)境變量,它得值就是N條路徑(以;隔開),以后您輸入任何命令時,

操作系統(tǒng)都會在PATH所指定得系列路徑中搜索。

Java程序得最小結(jié)構(gòu)單元:類。面向?qū)ο蟆?/p>

【C程序得最小結(jié)構(gòu)單元:函數(shù)。面向過程】

寫Java程序,定義類:

[修飾符]class〈類名>

//入口方法、開始點

publicstaticvoidmain(String[]args)

(

//執(zhí)行性代碼

System、out、println();

)

}

注釋:

1、單行注釋?!?/p>

2、多行注釋。/**/

3、文檔注釋。/***/

文檔注釋得作用:

javadoc可以直接提取源代碼中文檔注釋,生成對應(yīng)得【API文檔,

何為API文檔?

當(dāng)我們寫了一些類之后,應(yīng)該為這些類編寫“使用說明書”。

javadoc命令:程序員只要在源代碼中添加文檔注釋,javadoc就可以為提取注釋,

生成使用說明書【API文檔

API文檔

包列表區(qū)|詳細(xì)說明區(qū)

類列表區(qū)I

文本編輯器:notepadsvim(最老牌、經(jīng)典文本編輯工具)、ultraedit、editplus0

生成API文檔得步驟:

(1)在源代碼中添加文檔注釋。

文檔注釋必須添加在類、方法、field,內(nèi)部類之前才有效。

——如果您把文檔注釋放在其她地方,它只能多行注釋。

(2)使用javadoc命令:

javadoc-d〈路徑〉源文件

變量

-編程就要操作數(shù)據(jù)。數(shù)據(jù)就要放在“東西”中。

-變量得作用:“裝”一切得數(shù)據(jù)。通俗理解:可以把變量理解成“瓶子”。

-變量需要有個名字(標(biāo)識符)。通過該名字即可訪問變量

分隔符:

所有得符號,都就是英文符號。

空格、花括號、[]、()、

標(biāo)識符:(identifier)

名字

一只能由于字母(包括中文字符)、數(shù)字、下劃線、$組成,其中數(shù)字不能開頭。

-標(biāo)識符不能就是Java得關(guān)鍵字或保留字。

關(guān)鍵字:

48個。

2個保留字:(goto、const)------現(xiàn)在還沒有使用,也許以后會用。

3個直接量:true、false>nulL就就是值。

這53個都不能作為標(biāo)識符。

Java語言就是“強類型”得語言:

-所有變量,必須先聲明(聲明時就必須指定類型)、后使用。

-“什么樣得瓶子只能轉(zhuǎn)什么東西”,指定類型得變量,只能裝相應(yīng)類型得值。

Java得數(shù)據(jù)類型可分為2大類:

-基本類型。

-引用類型。

整型(byte、short>int>long)

浮點型(float、double)

基本類型一字符型(char)

布爾型(boolean)只有2個值:true、false

整型:

byte(l個字節(jié)(byte)=8個位(bit))

8個bit表示2得8次方種狀態(tài)。因此一個bit只能表示256個數(shù)。

byte得取值范圍:-128~0~127

short(2個字節(jié)(byte)=16個位(bit))

16個bit表示2得16次方種狀態(tài)。能表示65536個數(shù)。

short得取值范圍:-32768~0~32767

int(4個字節(jié)(byte)=32個位(bit))

int得取值范圍:負(fù)得2得31次方~0~2得31次方-1

long(8個字節(jié)(byte)=64個位(bit))

long得取值范圍:負(fù)得2得63次方~0~2得63次方-1

2得10次方:1024—1K

2得20次方:1M(百萬)

2得30次方:1G(十億)

2得40次方:1T

1、當(dāng)我們直接給出一個整數(shù)值時,它默認(rèn)就是int型。

系統(tǒng)絕不會把它當(dāng)成long處理。

2、當(dāng)我們直接給出一個在指定取值范圍內(nèi)得整數(shù)時,系統(tǒng)也可把它當(dāng)成byte、short

使用。

3、如果您系統(tǒng)把一個整數(shù)當(dāng)成long使用,應(yīng)該在整數(shù)后添加1或L。

數(shù)值得下劃線用法。

可以在數(shù)值中任意添加下劃線(_)作為分隔符。

整數(shù)一共支持4種表示形式:

10進(jìn)制值。默認(rèn)。

16進(jìn)制Ox或0X開頭0?9、a、b-f(15)

8進(jìn)制O開頭0~7

2進(jìn)制b或B開頭0~1

1231*【進(jìn)制】得2次方+2*【進(jìn)制】得1次方+3*【進(jìn)制】得0次方。

Oxla=1*16得1次方+a*16得0次方=26

整數(shù)不能除以0,否則會引發(fā)“算術(shù)異常:ArithmeticException”

浮點型:

float:4個字節(jié),32位。

doubled個字符,64位。

帶小數(shù)得數(shù)值,就就是浮點型。

-當(dāng)您直接給出一個帶小數(shù)得數(shù)值時,它默認(rèn)就是double型。

如果希望當(dāng)成float使用,應(yīng)該在數(shù)值后添加f或F。

-浮點數(shù)支持2種形式:

一給出帶小數(shù)得數(shù)。

一科學(xué)計數(shù)法。2>11133E3

-浮點型有3個特殊值:

正無窮大Infinty正數(shù)除以0,得到無窮大。

?所有正無窮大都相等。

負(fù)無窮大-Infinity負(fù)數(shù)除以0,得到無窮大。

?所有負(fù)無窮大都相等。

非數(shù)NaN:。除以0,對負(fù)數(shù)開方等。

非數(shù)與任何數(shù)都不相等,包括它自己!

字符型

char

Java用就就是Unicode字符集

字符型占2個字節(jié),16位,65536種狀態(tài)。

一字符型也可以當(dāng)成無符號整型(0?65535)(每個字符都有編號)用。

-字符型得值,應(yīng)該用單引號引起來。

(雙引號引起來得就是字符串)。

-字符型有3種形式:

A?字符

B。轉(zhuǎn)義字符?!甛n''\fP50得表3、2

C。直接用字符得Unicode編號。

布爾型

boolean

它只有兩個值:true、falseo

數(shù)值型:byte、short>int、long、char、float、double

基本類型

布爾型:boolean

字符集

計算機(jī)底層、內(nèi)存中都無法記錄字符,它們只能記錄010101這種二進(jìn)制位。

但我們有字符需要保存到計算機(jī)中,計算機(jī)科學(xué)家想了一個辦法,給字符編號

計算機(jī)底層使用、保存這些字符時,其實用得得這些字符得編號。

——如果給所有字符都編號,這就叫字符集。

所謂字符集:就就是給所有字符編個號。

字符集:保存(寫入)文件、恢復(fù)(讀取)文件用得字符集要一致。

ASCII-每個字符占一個字節(jié),8bit,總共能表示256個字符。

A(65)-Z(65+25)

a(97)-z(97+25)

0(48)-9(57)

GB2312

GBK

GB18030

Unicode:16位、能表示65536個字符。

utf-8、utf-16?

編程:建議使用utf-8字符集。

▲類型轉(zhuǎn)換

☆自動轉(zhuǎn)換

取值范圍小得類型,可以自動轉(zhuǎn)換為取值范圍大得類型。

(-128-127)(-32768-32767)(-20億?20億)

bytefshort-*int-long—float—double

char

(0-65535)

-所有數(shù)值型,都可自動轉(zhuǎn)換為double。

-所有整型,都可自動轉(zhuǎn)換為long。

-所有整型,都可自動轉(zhuǎn)浮點型。

☆強制轉(zhuǎn)換。

當(dāng)數(shù)值類型之間,不能自動轉(zhuǎn)換時就需要進(jìn)行強制轉(zhuǎn)換。

強制轉(zhuǎn)換得語法格式就是:(類型)

【注意】,強制轉(zhuǎn)換,可能會溢出。

數(shù)值得表示形式:

最高位就是符號位,0代表正數(shù);1代表負(fù)數(shù)。

原碼一直接換算得到得2進(jìn)制碼。

反碼一把原碼,除符號位之外,其她位取反得到反碼。

補碼一正數(shù)得補碼就就是源碼;負(fù)數(shù)得補碼為反碼+1

計算機(jī)底層,所有數(shù)值都用補碼表示。

隨機(jī)得圖形驗證碼

(1)只要生成一個97?122(漢字得范圍)之間得隨機(jī)整數(shù)

(2)將隨機(jī)整數(shù),強轉(zhuǎn)為char——這就就是隨機(jī)字符。

Math類:所有與數(shù)學(xué)計算相關(guān)得算法,都提供了相應(yīng)得方法。

表達(dá)式類型得自動提升

所謂表達(dá)式:用運算符,將多個變量、值,串聯(lián)成“四則混合運算”。

一個表達(dá)式,最終也會計算出一個結(jié)果,該結(jié)果得數(shù)據(jù)類型,

與整個表達(dá)式中等級最高得操作數(shù)得數(shù)據(jù)類型相同。

▲直接量

直接量,就就是在源代碼中直接給出得值。

int:20>0x12、12、012

long:IL、23L

float:2、4f

double2、33e2

char:T、'\u2331'

boolean:true、false

String:"helloworld"

▲運算符

☆算術(shù)運算符:

+:加法運算符,也就是連接運算符。

-:減法運算符。

*:乘法運算符。

/:除法

%:取余。

++:必須操作【一個】【變量】,讓變量得值加1

-:必須操作【一個】【變量】,讓變量得值減1

++如果放在變量得前面,就是先將變量加1,再用加1后得值;

如果放在變量得后面,就是先用變量原始得值;將變量加1。

-如果放在變量得前面,就是先將變量減1,再用減1后得值;

如果放在變量得后面,就是先用變量原始得值;將變量減1。

☆賦值運算符

☆位運算符

&:按位與一一當(dāng)上下兩位都就是1,計算結(jié)果才就是1、

I:按位或一一當(dāng)上下兩位都就是0,計算結(jié)果才就是0;只要有任何一個就是1,結(jié)

果就就是lo

八:按位異或一一當(dāng)上下兩位不同,計算結(jié)果才就是1、

按位取反(按位非)。直接取反一一只要一個運算數(shù)即可。

?:右移,右邊移出去得位,將會被直接“砍掉”,左邊空出來得位補符號位。

右移N位,相當(dāng)于除以2得N次方。

?:左移,右邊空出來得位就會添加0;

左移N位,相當(dāng)于乘以2得N次方。

>>>:無符號右移,右邊移出去得位,將會被直接“砍掉”,左邊空出來得位總就是補0o

移出來得結(jié)果總就是正數(shù)。

練習(xí):

畫出下面計算結(jié)果得過程

-12&34

(byte)234;

-3八34

20|-124

?45

day03流程控制與數(shù)組(第4章)

數(shù)據(jù)類型與運算符

Java數(shù)據(jù)類型可分為2大類:

-基本類型

-引用類型

基本類型

Ao整型byteshortintlong

有4種表示形式:

10進(jìn)制、8進(jìn)制(以0開頭)、16進(jìn)制(以0X或Ox開頭)、2進(jìn)制(以B或

b開頭、Java7才支持)

B?浮點型。float(4個字節(jié))、double(8個字節(jié))

直接給出小數(shù),默認(rèn)就是double類型;如果希望一個數(shù)字就是float類型,需要添

加f/F作為后綴。

Co字符型。

字符型可以當(dāng)成無符號整型使用(0-65535)

字符型有3種表示形式:

-直接給出單個字符'A'

-轉(zhuǎn)義字符。

「\uXXXX',用4位得16進(jìn)制得Unicode值。

D?布爾型。

true>false

另外一種分類規(guī)則:

Ao數(shù)值型:byte、short>int、long、char>float、double

Bo布爾型:boolean

7個數(shù)值型之間可以相互轉(zhuǎn)換,

-自動轉(zhuǎn)換:取值范圍小得、向取值范圍大得轉(zhuǎn)換,就可自動轉(zhuǎn)換。

bytefshortfint—long->float->double

/

char

-強制轉(zhuǎn)換:不能自動轉(zhuǎn)換時,就需要進(jìn)行強制轉(zhuǎn)換。

語法格式就是:(類型)

【強制轉(zhuǎn)換可能導(dǎo)致溢出?。。。。?!】

運算符:

算術(shù)運算符:+-*%/++-

賦值運算符:=

位運算符:&|人~(左邊高位補符號位,右移N位相當(dāng)于除以2得N次方)、<<(左

移N位相當(dāng)于乘以2得N次方)、?>

▲擴(kuò)展后得賦值運算符:

所有【雙目】運算符,都可以與=結(jié)合,結(jié)合成為擴(kuò)展得賦值運算符。

a+=b相當(dāng)于a=(a得類型)(a+b)

a-=b

、、、

a&=b

▲比較運算符

比較運算符,返回得結(jié)果就是true或false

>>=<<===!=

[比較運算符得返回值總就是boolean值?。?/p>

▲邏輯運算符

邏輯運算符得作用就是:對兩個boolean值進(jìn)行邏輯運算。

邏輯運算符,只能對boolean值進(jìn)行運算。

&&:與。當(dāng)兩個操作數(shù)都就是true時、才返回true。

&:不短路與。

II:或。當(dāng)兩個操作數(shù)只要有一個就是true時、就會返回true。

I:不短路或

!:非:它就是單目得。相當(dāng)于取反。

A:異或。當(dāng)兩個操作數(shù)相同時,結(jié)果就會返回falseo

&&與&得區(qū)別何在?

對于“求與”來說,當(dāng)?shù)谝粋€操作數(shù)已經(jīng)就是false時、結(jié)果肯定就是false,第二個操作

數(shù)根本不會影響結(jié)果。

&&,根本不會去計算第二個操作數(shù)。

&,它依然會去計算第二個操作數(shù)。

II與I得區(qū)別何在?

對于“求或”來說,當(dāng)?shù)谝粋€操作數(shù)已經(jīng)就是true時、結(jié)果肯定就是true,第二個操作

數(shù)根本不會影響結(jié)果。

II,根本不會去計算第二個操作數(shù)。

I,它依然會去計算第二個操作數(shù)。

▲三目運算符

boolean表達(dá)式?value1:value2

當(dāng)boolean表達(dá)式返回true,整個表達(dá)式返回valuel;否則,就返回value2

▲運算符得結(jié)合性與優(yōu)先級

運算符有優(yōu)先級,一共分成10多個級別得優(yōu)先級。參瞧P67、

規(guī)則:盡量多用()來保證哪些東西先算。

▲流程控制

目前,最主流、最常用得3種流程:

1、順序。從上到下、依次執(zhí)行每條代碼。

如果沒有流程控制,默認(rèn)就就是順序結(jié)構(gòu)。

在順序結(jié)構(gòu)中,如果后面代碼得到了執(zhí)行,表明前面代碼已經(jīng)執(zhí)行完成。

2、分支。

根據(jù)條件來執(zhí)行執(zhí)行代碼。

if語句。

if語句得語法格式:

if(〈邏輯表達(dá)式〉)

{

//執(zhí)行語句

}

{}括起來得部分,稱為“條件執(zhí)行體”。

if(〈邏輯表達(dá)式〉)

//執(zhí)行語句

else

{

//執(zhí)行語句

if(〈邏輯表達(dá)式〉)

//執(zhí)行語句

}

elseif(〈邏輯表達(dá)式〉)elseif塊可出現(xiàn)0?N次。

//執(zhí)行語句

}

elseelse塊可出現(xiàn)0?1次

//執(zhí)行語句

★if分支語句得注意點:

A、如果if后得條件執(zhí)行體只有一行代碼,可以省略條件執(zhí)行體得花括號。

如果if后省略花括號,if條件只控制到緊跟該if語句得第一個分號。

建議:總就是保留條件執(zhí)行體得花括號。

B、else包含了一個隱含得條件:該條件就就是對前面條件取反。

建議:當(dāng)有if、、、elseif、、、時候,應(yīng)該先判斷【范圍小】得條件。

Java7增強后switch語句,

語法格式就是這樣得:

switch(〈表達(dá)式〉)//止匕處得表達(dá)式可以就是byte、short、char、int、String(Java7)、

枚舉

case值1:case塊可出現(xiàn)1?N次

break;

case值2:

break;

case值3:

break;

default://

Java會去計算〈表達(dá)式〉得值,如果表達(dá)式得值與后面指定case得值相同時,就會

進(jìn)入執(zhí)行對應(yīng)得case代碼塊。

switch允許省略case塊得break;

如果switch省略了case后面break后,從第一個能進(jìn)入得case塊開始,然

后一直執(zhí)行每個case塊得代碼(此時根本不判斷case后得值),此時根本不會判斷case后得值。

3、循環(huán)(回圈)

控制程序?qū)⒁欢味啻沃貜?fù)執(zhí)行。

★while循環(huán)

while(<邏輯表達(dá)式〉)

〃循環(huán)體

每次進(jìn)入循環(huán)體之前,會先去判斷〈邏輯表達(dá)式〉,如果〈邏輯表達(dá)式,返回true,

就會進(jìn)行循環(huán)體。

只要邏輯表達(dá)式為true,就會一直重復(fù)執(zhí)行循環(huán)體。

當(dāng)〈邏輯表達(dá)式>為false時,此時就會跳出循環(huán)(執(zhí)行循環(huán)體花括號后面得代

碼)。

〈邏輯表達(dá)式>得執(zhí)行次數(shù)=循環(huán)體得執(zhí)行次數(shù)+1

【注意:】如果while循環(huán)得循環(huán)體只有一行代碼,可以省略循環(huán)體得花括號。

如果省略了while循環(huán)體得花括號,while只控制緊跟while得第一個分

號。

【練習(xí)】用星號打印三角形

*

***

高:N

一共要打印6行。

結(jié)論:每行打印得空格數(shù):高度-行數(shù)

每行打印得*數(shù):2*行數(shù)-1

★dowhile循環(huán)

do

{

//循環(huán)體

}while(<邏輯表達(dá)式>);

先執(zhí)行循環(huán)體,然后再去判斷邏輯表達(dá)式,如果邏輯表達(dá)式為true,執(zhí)行下一次循

環(huán)。

-即使邏輯表達(dá)式開始就就是false,循環(huán)體也會執(zhí)行一次。

dowhile循環(huán)得循環(huán)體至少會執(zhí)行一次。

-循環(huán)體得執(zhí)行次數(shù)=邏輯表達(dá)式得執(zhí)行次數(shù)。

★for循環(huán)

-【語法更簡潔】。

-【內(nèi)聚性更好】。

for(初始化語句;邏輯表達(dá)式;迭代語句)

//循環(huán)體

?初始化語句:僅在循環(huán)開始之前,執(zhí)行一次!

?邏輯表達(dá)式:每次進(jìn)行循環(huán)體之前渚B要先判斷邏輯表達(dá)式得值。

當(dāng)邏輯表達(dá)式返回true,就會進(jìn)行循環(huán)體。

如果邏輯表達(dá)式返回false,跳出循環(huán)。

邏輯表達(dá)式得執(zhí)行次數(shù)=循環(huán)體得執(zhí)行次數(shù)+1

?迭代語句:每次循環(huán)體執(zhí)行完之后、判斷循環(huán)條件之前,會自動執(zhí)行迭代語句。

迭代語句得執(zhí)行次數(shù)=循環(huán)體得執(zhí)行次數(shù)

可以用while循環(huán)來改寫for循環(huán),改寫后為如下形式:

初始化語句

while(邏輯表達(dá)式)

//循環(huán)體

迭代語句

【注意點】

-如果在循環(huán)體中修改循環(huán)計數(shù)器得值,循環(huán)體得執(zhí)行次數(shù)可能會發(fā)生變

化。

-for循環(huán)中,只有兩個分號就是必須得。

如果沒有邏輯表達(dá)式,相當(dāng)于邏輯表達(dá)式總就是true0

-for循環(huán)得初始化語句,可以一次聲明多個變量。這多個變量得類型必須相

同。

/******死循環(huán):無限循環(huán)*******/

課堂練習(xí):打印99乘法表

1*1=1

1*2=2,2*2=4

1*3=3,2*3=6,3*3=9

1*99*9=81

結(jié)論:

-總共打印MAX_NUM行

-每行要打得token數(shù)量=行數(shù)

▲控制循環(huán)結(jié)構(gòu):

break-跳出一個循環(huán)。

直接調(diào)到循環(huán)體得后一條代碼。

即使就是死循環(huán),我們也可以使用break來跳出循環(huán)。

★默認(rèn)情況,break只就是跳出它所在得循環(huán)。

循環(huán)可以帶標(biāo)號一一所謂標(biāo)號,就就是為循環(huán)起個名字。

標(biāo)號得語法格式為:標(biāo)識符:一一這就就是為循環(huán)起了個名字。

★如果在break后添加標(biāo)簽,可以直接跳出標(biāo)簽代表得循環(huán)。

continue-忽略本次循環(huán)剩下得語句、重新開始下一次循環(huán)。

結(jié)論:如果一個【不帶標(biāo)號】得continue語句,而且它就是循環(huán)體得最后一條語句,

這個continue語句沒有作用。

★默認(rèn)情況,continue只就是忽略它所在得循環(huán)得剩下語句。

★如果在continue后添加標(biāo)簽,可以直接忽略標(biāo)簽所代表循環(huán)得剩下語句。

return-可用于結(jié)束一個方法。

return無論它在多深得嵌套循環(huán)中,只要遇到return語句,它會結(jié)束方法,整個循環(huán)

將會完全結(jié)束。

1、找出2000以內(nèi)得所有“水仙花”數(shù)字

找出2000以內(nèi)所有

各位得數(shù)值得立方得與=該數(shù)本身。

比如:153=1+125+27

2、打印圓

(對于有難度,就做將三角形再打個反向,就成了菱形)

**

day04流程控制與數(shù)組(第4章)**

Java得流程控制

第一種:順序結(jié)構(gòu)

如果我們要做得一件事情,本身就是從上到下、按既定得步驟依次執(zhí)行,

此時就可考慮使用順序結(jié)構(gòu)。

編程思路:我要得事情,可定義為一個一個小任務(wù),接下來就將每條任務(wù)都翻譯為相應(yīng)程

序代碼。

第二種:分支結(jié)構(gòu)

如果我們要做得事情,要根據(jù)具體得條件來決定就是否執(zhí)行。

此時就可考慮使用分支結(jié)構(gòu)。

Java得分支結(jié)構(gòu)有兩種:

★if

if(條件)

//條件執(zhí)行體

elseif(條件)----它可以出現(xiàn)0?N次

//條件執(zhí)行體

else------它可以出現(xiàn)0?1次

//條件執(zhí)行體

}

1、當(dāng)條件執(zhí)行體只有一行代碼時,程序可以省略條件執(zhí)行體得花括號。

省略花括號之后,if只控制到緊跟它得第一個分號。

2、else本身就就是一個條件。else相當(dāng)于就是對前面得條件取反。

經(jīng)驗:當(dāng)有多個elseif塊,您應(yīng)該先去處理范圍小得條件。

★switch

switch(表達(dá)式)〃表達(dá)式得類型可以byte\short\char\int\String(Java7)\枚舉

{

case值1:------可出現(xiàn)1?N次。

//執(zhí)行代碼

break;

case值2:

//執(zhí)行代碼

break;

default:——隱含條件就是:表達(dá)式得值不等于前面任意一個值

【注意點:】

如果省略了break,流程會從第一個能進(jìn)入得case塊開始,依次向下執(zhí)行每個case

塊,根本不會比較case后面得值,

----直到遇到break為止。

第二種:循環(huán)結(jié)構(gòu)

如果有一件事情,需要多次重復(fù)執(zhí)行,

此時就考慮使用循環(huán)結(jié)構(gòu)。

Java得循環(huán)結(jié)構(gòu),一共有3種:

while(條件)

{

〃循環(huán)體

條件得計算次數(shù)=循環(huán)體得執(zhí)行次數(shù)+1

【注意點:】

當(dāng)循環(huán)體只有一行代碼時,程序就可以省略循環(huán)體得花括號。

如果省略了循環(huán)體得花括號,while只控制到緊跟它得第一個分號。

do

{

〃循環(huán)體

}while(條件)

即使條件開始就就是false,循環(huán)體也會執(zhí)行一次循環(huán)體至少會執(zhí)行一次。

for(初始化語句;條件;迭代語句)

//循環(huán)體

初始化語句,只在循環(huán)開始之前執(zhí)行一次。

條件,每次進(jìn)入循環(huán)體之前,先要計算條件為true或false。

當(dāng)條件為true時,才能進(jìn)入循環(huán)體;為false將不能進(jìn)入循環(huán)體。

條件得執(zhí)行次數(shù)=循環(huán)體得執(zhí)行次數(shù)+1

迭代語句,每次循環(huán)體執(zhí)行完之后,程序就會執(zhí)行迭代語句。

迭代語句總就是放在循環(huán)體之后執(zhí)行。

▲數(shù)組:

變量-程序中需要保存數(shù)據(jù)時,就可考慮使用變量來裝數(shù)據(jù)。

變量,需要指定類型、名字。

數(shù)組-當(dāng)程序中有N個數(shù)據(jù)類型完全相同得變量時,此時就可考慮使用一個數(shù)組來

代替這個N個變量。

當(dāng)有一個數(shù)據(jù)需要保存時,就考慮使用變量;當(dāng)有N個數(shù)據(jù)需要保存時,就考慮使用數(shù)

組。

Java數(shù)據(jù)類型:

-基本類型:8個。

-引用類型:數(shù)組類型,類,接口。

8個基本類型、Stringo

★數(shù)組就就是一種類型。

int-int□(數(shù)組類型)

String-String[](數(shù)組類型)

int[]-(數(shù)組類型)

int[][]-int口口口(數(shù)組類型)

★定義數(shù)組變量得語法,應(yīng)該就是標(biāo)準(zhǔn)寫法

int[]變量名

String[]變量名

早期定義數(shù)組變量得語法就是:

int變量名口;一一這個寫法幾乎被淘汰了,

★數(shù)組類型得變量,只就是一個引用變量。定義數(shù)組變量,僅僅只就是定義了一個指

針。

何為引用變量、何為指針

1、基本類型得值,需要得空間就是固定。

2、引用類型得值,需要得空間就是不確定。

當(dāng)我們把數(shù)據(jù)存在計算機(jī)得內(nèi)存中之后,每個內(nèi)存位都有自己得編號,

可以額外定義一個變量,該變量保存數(shù)組所在內(nèi)存得編號。一一這種變量就叫

“指針”。

引用變量,本質(zhì)就就是指針。但它就是一個包裝后、功能被限制、更安全得

指針。

引用變量、存放得就是內(nèi)存編號。

引用變量所占得內(nèi)存空間就是確定、受平臺所控制得。

定義數(shù)組變量時,數(shù)組本身并沒有出現(xiàn)。

★創(chuàng)建數(shù)組(數(shù)組初始化)

new------新建

幾乎所有東西,都可以new出來。

創(chuàng)建數(shù)組得兩種語法:

靜態(tài):

new類型口{元素1,元素2,元素3、、、);

1、程序員不指定長度。

2、只列出元素得值;由系統(tǒng)來動態(tài)判斷數(shù)組得長度。

動態(tài):

new類型[長度];

1、程序員只指定長度。

2、不給出數(shù)組元素得值,而就是由系統(tǒng)地為每個元素分配元素值。

系統(tǒng)為數(shù)組元素分配值得規(guī)則為:

1、所有整型,初始值都為0;

2、所有浮點型,初始值都就是0、0

3、所有字符型,初始值都就是‘\u0000'

4、boolean型,初始值就是false

5、所有引用類型,初始值都就是null

★使用數(shù)組:

1、數(shù)組有一個length屬性,用于返回該數(shù)組得長度。

2、每個數(shù)組元素,相當(dāng)于一個類型為數(shù)組類型去掉【一組】【方括號】得變量。

可通過數(shù)組變量[索引]可代表數(shù)組元素,功能上相當(dāng)于變量。

使用數(shù)組中兩個常見得錯誤:

-如果使用數(shù)組元素時,指定得索引值大于或等于length,將會引發(fā)

ArrayIndexOutOfBoundsException。

-當(dāng)數(shù)組變量并未真正指向有效得數(shù)組時,,無論訪問數(shù)組長度、還就是訪問數(shù)組元

素時,都將引發(fā)NullPointException

★foreach循環(huán)

專門用于遍歷數(shù)組、集合得元素

//該循環(huán)得執(zhí)行次數(shù)=數(shù)組得長度

for(數(shù)組|集合【元素】得類型變量:數(shù)組變量|集合變量)

//在該循環(huán)體內(nèi),上面得變量將會依次等于每個數(shù)組元素得值。

很明顯:foreach循環(huán),遍歷數(shù)組時更加簡潔。

foreach循環(huán)遍歷數(shù)組時,一個最大得限制就是:【在foreach循環(huán)中對數(shù)組元素賦值

沒有任何意義?!?/p>

▲數(shù)組在內(nèi)存中運行機(jī)制:

數(shù)組變量、引用變量一一本質(zhì)就是一個包裝后、功能被限制得、安全得指針。

在方法中聲明得變量,只在方法體內(nèi)有效,都被稱為局部(local)變量

局部變量被放在相應(yīng)得方法棧內(nèi)存中

方法棧內(nèi)存,會隨著方法棧內(nèi)存得結(jié)束自動銷毀。

每個方法,相當(dāng)于有自己獨立得棧區(qū)。

所有由new新建出來得對象,統(tǒng)一放在“堆”內(nèi)存中。

一個JVM,只持有一塊堆內(nèi)存。

“堆”內(nèi)存,JVM在運行時分配一塊總就是存在內(nèi)存區(qū),JVM退出(java命令結(jié)束時),才會

銷毀堆內(nèi)存

▲沒有多維數(shù)組

任何已有類型、在后面添加一對方括號,就會產(chǎn)生一個新得類型一一數(shù)組類型。

int[]-int[][]多維數(shù)組

int[][]-int[][][]

String[]fString[][]

、、、

▲操作數(shù)組得工具類

Arrays——當(dāng)我們給一個類、方法等東西起名字時,我們會按全世界大家約定得名

字來起名。

這樣保證該程序有更好得可讀性。

在JDK中,這種操作Xxx得工具類,一般命名為Xxxso

Arrays包含了如下方法:

binarysearch-二分法查找,要求數(shù)組元素就是從小到大排列得。

copyOfRange(long[]original,intfrom,intto):復(fù)制數(shù)組中間一部分,生成一個新

數(shù)組。

fill(byte[]a,byteval):將數(shù)組理指定范圍內(nèi)得元素、全部元素填充某個值。

toString():幫助直接瞧到數(shù)組中所有得元素。一一這個方法最喜歡。

sort():對數(shù)組元素進(jìn)行排序。

作業(yè):

1、控制臺五子棋

2.人民幣轉(zhuǎn)換、、、

dayO5Java編程基礎(chǔ)實戰(zhàn)練習(xí)

當(dāng)我們遇到一個方法,搞不清楚、不懂

——無論您學(xué)習(xí)任何語言,無論您得技術(shù)多么牛,無論您干了多少年,您會一直遇到這

個問題。

心理得優(yōu)勢感:這個問題您一定可以搞定。

學(xué)會接受:當(dāng)您遇到一個方法,學(xué)會接受它得功能。

當(dāng)您不知道它得功能,不確定它得功能一查文檔一Google一寫

一個helloworld小例子。

新名詞:英語名詞。漢語名詞。

什么就是“桌子”?其實無需知道它就是桌子,還就是老虎。只要知道它

就是個【能干什么、起什么作用】東西。

1、水仙花數(shù)

用一個循環(huán),循環(huán)控制依次取出1-2000得數(shù),接下來就去判斷該數(shù)就是否符合我們得要

求。

2、在控制臺打印圓

經(jīng)過總結(jié)發(fā)現(xiàn):

-一共打印2R-1行

-每行前面要打印X個空格。

R-R*R-(R-行數(shù))*(R-行數(shù))得開方

接下來要打印Y個星號

2*R*R-(R-行數(shù))*(R-行數(shù))得開方

3、簡單課堂練習(xí):

直接選擇排序-最簡單、最入門得排序算法

2,-12,100,40,20,23,87

第1輪循環(huán),始終用第1數(shù),依次與后面得每個數(shù)進(jìn)行比較

第1輪得第1次,發(fā)現(xiàn)順序顛倒,就交換。

2,-12,100,40,20,23,87

▲▲

-122,100,40,20,23,87

第1輪得第2次,發(fā)現(xiàn)順序顛倒,就交換。

-122,100,40,20,23,87

▲▲

第1輪得第3次,發(fā)現(xiàn)順序顛倒,就交換。

-122,100,40,20,23,87

最小得數(shù)到了第一個。

第2輪循環(huán),始終用第2數(shù),依次與后面得每個數(shù)進(jìn)行比較

第2小得數(shù)到了第2個

第length-1輪循環(huán),

結(jié)束

結(jié)論:總共需要N-1輪比較,

第1輪,用第1個數(shù)依次與后面得每個數(shù)比較。

、、、

第N-1輪,用第N-1個數(shù)依次與后面得每個數(shù)比較。

4、簡單課堂練習(xí):

冒泡排序-相當(dāng)簡單、相當(dāng)入門得排序算法

2,-12,100,40,20,23,87

第1輪循環(huán),始終用第j個數(shù),與第j+1個數(shù)進(jìn)行比較,如果順序顛倒,就交換。

第1輪得第1次,發(fā)現(xiàn)順序顛倒,就交換。

2,-12,100,40,20,23,87

▲▲

-12,2,100,40,20,23,87

第1輪得第2次,發(fā)現(xiàn)順序顛倒,就交換。

-12,2,100,40,20,23,87

▲▲

第1輪得第3次,發(fā)現(xiàn)順序顛倒,就交換。

-12,2,100,40,20,23,87

▲▲

-12,2,40,100,20,23,87

第1輪得第4次,發(fā)現(xiàn)順序顛倒,就交換。

-12,2,40,100,20,23,87

▲▲

-12,2,40,20,100,23,87

第1輪得第5次,發(fā)現(xiàn)順序顛倒,就交換。

-12,2,40,20,100,23,87

▲▲

-12,2,40,20,23,100,87

第1輪得第6次,發(fā)現(xiàn)順序顛倒,就交換。

-12,2,40,20,23,100,87

▲▲

-12,2,40,20,23,87,100

循環(huán)一輪之后,最大得數(shù)到了最后面。

第2輪循環(huán),始終用第j個數(shù),與第j+1個數(shù)進(jìn)行比較,但最后1個數(shù)不需要參與比較。

第3輪循環(huán),始終用第j個數(shù),與第j+1個數(shù)進(jìn)行比較,但最后2個數(shù)不需要參與比較。

第N-2輪循環(huán),始終用第j個數(shù),與第j+1個數(shù)進(jìn)行比較,但最后N-2個數(shù)不需要參與比較。

【特征:如果某一輪循環(huán),從未發(fā)生過交換,說明已經(jīng)提前排好順序了,可以退出?!?/p>

5、復(fù)雜得課堂練習(xí):

任意給出N個字符:5,6,a,x,y

要求得到這些字符所有可能得組合情況(不允許重復(fù))56axy、65axy

第一輪:先只排【一個】字符:N種情況

5

6

a

x

y

將這一輪結(jié)果放入數(shù)組,該結(jié)果數(shù)組得長度為:No

第2輪:先只排【2個】字符:

前一次每個結(jié)果(用到了一個字符),因此還可依次與N-1字符組合。

總共將會組合出:N(前一次得結(jié)果數(shù)量)*(N-1)

將這一輪結(jié)果放入數(shù)組,該結(jié)果數(shù)組得長度為:N*(N-1)?

第3輪:先只排【3個】字符:

前一次每個結(jié)果(用到了2個字符),因此還可依次與N-2字符組合。

總共將會組合出:上一次數(shù)組得長度*(N-2)

將這一輪結(jié)果放入數(shù)組,該結(jié)果數(shù)組得長度為:N*(N-1)*(N-2)o

、、、

第N輪:先只排【N個】字符:

前一次每個結(jié)果(用到了N-1個字符),因此每個結(jié)果還可依次與1字符組合。

將這一輪結(jié)果放入數(shù)組,該結(jié)果數(shù)組得長度為:N*(N-1)*(N-2)*、、、1。

6、五子棋

判斷輸贏:

1、將每行得狀態(tài)“連接”起來,將會得到一個長度為15個字符串。

判斷該字符串中就是否包含(contains)?????、或就是否包含OOOOO

7、簡單得

溫馨提示

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

最新文檔

評論

0/150

提交評論