版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年鐵路貨物運輸與專用線運營合同
- 2025年度建筑勞務(wù)分包合同標(biāo)的工程進(jìn)度與質(zhì)量監(jiān)管條款3篇
- 2024年贈與股份合同:父子權(quán)益的傳遞與確認(rèn)
- 2024庭院園藝景觀設(shè)計與生態(tài)修復(fù)工程包工合同范本6篇
- 2024年電子商務(wù)平臺送貨員聘用合同
- 2024年航空航天產(chǎn)業(yè)投資合作意向書(國家戰(zhàn)略版)3篇
- 2024年社交媒體品牌建設(shè)與維護(hù)服務(wù)條款3篇
- 2024年版權(quán)許可合同違約責(zé)任認(rèn)定
- 2024年資產(chǎn)重組合同范本
- 2024物業(yè)管理實務(wù)客戶關(guān)系管理與滿意度調(diào)查合同3篇
- 2023年機(jī)械員之機(jī)械員專業(yè)管理實務(wù)題庫及參考答案(a卷)
- 班組安全培訓(xùn)試題含完整答案(各地真題)
- 《論語》中的人生智慧與自我管理學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- 2022版義務(wù)教育物理課程標(biāo)準(zhǔn)
- 期末測試-2024-2025學(xué)年語文四年級上冊統(tǒng)編版
- 全國國家版圖知識競賽題庫及答案(中小學(xué)組)
- 初中語文《國學(xué)經(jīng)典》校本教材
- 江西省外經(jīng)貿(mào)融資擔(dān)保有限公司招聘筆試題庫2024
- 2024年國家公務(wù)員考試行政職業(yè)能力測驗真題及答案
- 2024年便攜式儲能行業(yè)分析報告
- 2024-2025學(xué)年廣東省廣州市廣州大附中初三3月教學(xué)質(zhì)量監(jiān)測考試數(shù)學(xué)試題(理甲卷)版含解析
評論
0/150
提交評論