javase-知識框架和代碼演示總結(jié)_第1頁
javase-知識框架和代碼演示總結(jié)_第2頁
javase-知識框架和代碼演示總結(jié)_第3頁
javase-知識框架和代碼演示總結(jié)_第4頁
javase-知識框架和代碼演示總結(jié)_第5頁
已閱讀5頁,還剩173頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

學(xué)習(xí)要求與方法

1.1.每天做筆記,2天到3天寫階段性總結(jié)

1.2.***學(xué)習(xí)方法四步曲:

1,這個技術(shù)是什么?

2,有什么特點?

3,怎么用?

4,什么時候用?

第1天課程

2.?<Java編程基礎(chǔ)>>>

2.1.基本概念

2.2.什么是軟件

軟件是一系列按照特定順序組織的計算機(jī)數(shù)據(jù)和指令的集合。程序設(shè)計的最終結(jié)果是軟件。

系統(tǒng)軟件:系統(tǒng)軟件為計算機(jī)使用提供最基本的功能.

例如:DOS,Windows,Linux,Unix,MacOS,Android,iOS

應(yīng)用軟件:系統(tǒng)軟件并不針對某一特定應(yīng)用領(lǐng)域。而應(yīng)用軟件則相反,不同的應(yīng)用軟件根據(jù)

用戶和所服務(wù)的領(lǐng)域提供不同的功能。

例如:Word,Excel,PPT,QQ,FeiQ,凌波,UltraEdit,Eclipse

什么是計算機(jī)語言

計算機(jī)語言指用于人與計算機(jī)之間通訊的語言。計算機(jī)語言是人與計算機(jī)之間傳遞信息的媒

介。

為了使電子計算機(jī)進(jìn)行各種工作,就需要有一套用于編寫計算機(jī)程序的數(shù)字、字符和語法規(guī)

劃,由這些組成計算機(jī)指令就是計算機(jī)語言。

軟件就是由若干條計算機(jī)語言所組成的。

計算機(jī)語言分類

機(jī)器語言:

機(jī)器語言是直接用二進(jìn)制代碼指令表達(dá)的計算機(jī)語言,指令是用。和1組成的一串代碼,

它們有一定的位數(shù),并分成若干段,各段的編碼表示不同的含義。

匯編語言:

匯編語言是使用一些特殊的符號來代替機(jī)器語言的二進(jìn)制碼,計算機(jī)不能直接識別,需

要用一種軟件將匯編語言翻譯成機(jī)器語言。

高級語言:

使用普通自然語言進(jìn)行編寫源代碼,通過編譯器將源代碼翻譯成計算機(jī)直接識別的機(jī)器

語言,之后再由計算機(jī)執(zhí)行。

PositionPositionRatingsDelta

DeltainPosidonProgrammingLanguageStatus

Dec2011Dec2010Dec2011Dec2010

11Java17.561%-0.44%A

22C17.057%*0.98%A

33C**8.252%-0.76%A

45fC*8.205%*1.52%A

58tftObjective-C6.805%*3.56%A

64IIPHP6.001%-1.51%A

77(Visual)Basic4.757%-0.36%A

86uPython3.492%-2.99%A

99Perl2.472%*0.14%A

1012ttJavaScript2.199%*0.69%A

1111Ruby1.494%-0.29%A

1210IIDelphi/ObjectPascal1.245%-0.93%A

1313Lisp1.175%*0.11%A

1423ttmttttPUSQL0.803%*0.24%A

1514iTransact-SQL0.746%-0.03%A

1616Pascal0.734%-0.03%A

1718tAda0.632%-0.02%B

1835nttttttttLogo0.619%?0.26%B

1917nAssembly0.563%-0.10%B

2025ntttABAP0.560%*0.01%B

高級語言工作原理

Wind。3s下c語言編程過程Jav支語言編程過程

2.3.*Java開發(fā)環(huán)境搭建

2.3.1.*Java平臺分類

JavaSE(JavaPlatformStandardEdition)

Java平臺標(biāo)準(zhǔn)版,包含那些構(gòu)成Java語言核心的類,可以理解為學(xué)習(xí)Java的基礎(chǔ)(基

礎(chǔ)班所要學(xué)的)

JavaEE(JavaPlatformEnterpriseEdition)

Java平臺企業(yè)版,包含JavaSE,并且還包含用于開發(fā)企業(yè)級應(yīng)用的類

準(zhǔn)確的說JavaEE是一套用于企業(yè)開發(fā)的技術(shù)規(guī)范,包含很多組件,13種核心技術(shù),如:

XML,JSP、Servlet、JDBC、JavaMail等.(就業(yè)班所學(xué))

JavaME(JavaPlatformMicroEdition)

Java平臺微型版,包含JavaSE的一部分,另外提供一些用于小型設(shè)備上的類,例如:

手機(jī)、機(jī)頂盒、汽車導(dǎo)航儀(目前用的很少,基本已經(jīng)被淘汰)

下載地址

http:〃java,sun,com

2009年SUN(StanfordUniversityNetwork)公司被Oracle公司收購之后該地址跳轉(zhuǎn)到

Oracle網(wǎng)站

2.3.2.*JDK與JRE

JDK(JavaDevelopmentKit)

Java開發(fā)工具,包含開發(fā)Java程序的所有組件,包含JRE

JRE(JavaRuntimeEnvironment)

Java運行環(huán)境,如果要運行Java程序,就需要JRE的支持

常用組件:

src.zipJava是一門開源的語言,其源代碼都在這個壓縮包中

rt.jarJava的基礎(chǔ)核心類庫,我們編寫Java程序時使用的class都在這個jar

包中

javac.exe編譯器,將.java源代碼編譯為.class文件

java,exe虛擬機(jī),運行Java程序的工具

jar.exe將class文件打成jar包的工具

javadoc.exe生成幫助文檔的工具

2.3.3.**常用DOS命令

跳轉(zhuǎn)到指定盤符:盤符:例:C:D:E:

跳轉(zhuǎn)到指定目錄:cd目錄例:cdItcast\day01cdTencent\QQ\Bin

顯示當(dāng)前目錄下文件:dir

跳轉(zhuǎn)到上級目錄:cd..

跳轉(zhuǎn)到根目錄:cd\

清屏:cis

2.3.4.*環(huán)境變量

環(huán)境變量是指在操作系統(tǒng)中用來指定操作系統(tǒng)運行環(huán)境的一些參數(shù)

path:

如果想在任意目錄下運行一個程序,我們就需要將程序所在的路徑配置在path環(huán)境變

量中。

通常我們會將javac.exe所在目錄配置到path中,因為我們需要在任意目錄下都能編

譯Java源文件。

配置完成之后可以在命令行輸入javac測試,如果顯式幫助信息則是配置成功。

classpath:

Java虛擬機(jī)運行時加載類的路徑。JDK5之后不配置默認(rèn)為當(dāng)前目錄“.如使用JDK1.4

或以下版本時需要人工配置。

暫時不需要配置,默認(rèn)加載當(dāng)前目錄下的所有class文件。(實際開發(fā)中為了避免出錯,

其實是不設(shè)置的)

配置方式(臨時):

a.命令行

點擊屏幕左下角開始-運行-輸入cmd-在命令行中直接輸入命令進(jìn)行修

改。(Windows+R鍵可以直接跳出運行命令行。)

查看變量值:set變量名

設(shè)置變量值:set變量名=變量值,多個值之間使用分號“;”分割,引用變量時使

用”變量名獷形式

注意:此種方式僅適用于當(dāng)前窗口

b.我的電腦

鼠標(biāo)右鍵點擊我的電腦-屬性-高級-環(huán)境變量

找到要修改的變量將其值修改,此種方式永久有效

*操作

**新建一個環(huán)境變量,格式如下

***變量名JAVAJ40ME

***變量值JDK的安裝目錄。(D:\develop\Java\jdkL6.030)

**編輯Path

***變量名Path

***變量值%JAVA_HOME%\bin;本身的環(huán)境變量值

注意:

配置環(huán)境變量之后可以查看編譯器(javac.exe)和虛擬機(jī)(java.exe)版本,虛擬機(jī)版本

不能低于編譯器。

使用哪個版本的編譯器和虛擬機(jī)取決于path環(huán)境變量,如果虛擬機(jī)版本過低,可以通

過環(huán)境變量來修改。

編譯器版本查看方式:javac-version

虛擬機(jī)版本查看方式:java-version

JDK版本

JDK1.0,JDK1.1,JDK1.2、JDK1.3>JDK1.4,JDK5.0,JDK6.0、JDK7.0

JDK5.0版本較1.4大幅變更,也從1.4升級為5.0

2.4.第一個Java程序

2.4.1.編寫源代碼

新建文本文檔,擴(kuò)展名改為.java,在文件中寫入代碼。

123

|class|A/

6

Ipublicstaticuoidmain(Strinq「1

System.out.pr[ntln("HelloWorld")]

9

a8

4

1.Java程序的開始,所有java代碼都要馬在class中.

2.這個程序的名字,可隨意定義.編譯之后.class文件的名字就是這個名字.

3.程序的開始標(biāo)記,和4對應(yīng).

4.程序的結(jié)束標(biāo)記,和3對應(yīng).

5.主函數(shù),Java程序的入口,程序啟動后將會執(zhí)行主函數(shù)中的代碼.

6.主函數(shù)的開始標(biāo)記,和7對應(yīng).

7.主函數(shù)的結(jié)束標(biāo)記,和6對應(yīng).

8.功能執(zhí)行代碼,打印出一行文本:HelloWorld

9.Java代碼的結(jié)束標(biāo)記

2.4.2.*注意:隱藏已知文件擴(kuò)展名”

windows操作系統(tǒng)默認(rèn)是隱藏已知文件擴(kuò)展名的。

請測試新建一個文本文檔,如果看到的文件名是“新建文本文檔”而不是“新建文本

文檔.txt",那么說明你的擴(kuò)展名被隱藏了。

請選擇菜單欄中的工具-文件夾選項-查看-下拉滾動條找到“隱藏已知文件

擴(kuò)展名”-取消掉這一項。

編譯字節(jié)碼文件

a.左鍵單機(jī)屏幕左下角開始-運行-輸入cmd啟動命令行窗口

b.使用DOS命令進(jìn)入源代碼所在目錄

c.使用編譯器(javac.exe)編譯源代碼,javac文件名.java,編譯后在該目錄中會出現(xiàn)

擴(kuò)展名為class的字節(jié)碼文件

運行程序

使用虛擬機(jī)(java,exe)運行class文件,java文件名,注意不要加擴(kuò)展名,因為虛擬機(jī)

只能運行class文件,擴(kuò)展名省略不寫,如寫則報錯。

2.5.UltraEdit或者Ediplus的使用(基本功能了解就行)

使用記事本編輯Java程序有些麻煩,我們可以使用一些工具來幫助我們更好的編寫Java

代碼。

UltraEdit就是一款這樣的工具,它提供了顯示行號、關(guān)鍵字高亮以及自動縮進(jìn)的功能。

注意:關(guān)鍵字高亮功能需要將當(dāng)前操作文檔保存成.java文件之后才能使用。

顯示行號:視圖-顯示行號

取消備份:高級-配置-備份-不要備份

自動更正:高級-配置-語法高亮-取消自動更正關(guān)鍵字

2.6.進(jìn)制(計算機(jī)底層運算原理,要求明白)

2.6.1.生活中常用的進(jìn)制:

最常用的10進(jìn)制,半天12小時進(jìn)制,全天24小時進(jìn)制,一星期7天進(jìn)制,一個月30天進(jìn)

制,一年365天進(jìn)制。

十進(jìn)制

由0到9的數(shù)字組成,逢十進(jìn)一

我們最常用的一種進(jìn)制

01234567891011121314151617181920

2.6.2.*二進(jìn)制

由0和1組成,逢二進(jìn)??

計算機(jī)中存儲任何數(shù)據(jù)都是以二進(jìn)制的形式進(jìn)行存儲的

0110111001011101111000

2.6.3,八進(jìn)制

由0到7的數(shù)字組成,逢八進(jìn)一

八進(jìn)制在程序中以0開頭

01234567101112131415161720

2.6.4.十六進(jìn)制

由0到9的數(shù)字和A-F的字母組成,逢十六進(jìn)-

十六進(jìn)制在程序中以O(shè)x開頭

0123456789ABCDEF

101112131415161718191AIBICIDIEIF20

2.6.5.進(jìn)制轉(zhuǎn)換

a.十進(jìn)制轉(zhuǎn)二、八、十六進(jìn)制

除法取余,將要轉(zhuǎn)換的數(shù)除以進(jìn)制數(shù),記住余數(shù),再除以進(jìn)制數(shù),記住余數(shù),直到這個

數(shù)等于0為止,將所有余數(shù)反轉(zhuǎn)就是對應(yīng)的二進(jìn)制表現(xiàn)形式。

b.二、八、十六進(jìn)制轉(zhuǎn)十進(jìn)制

乘法,將要轉(zhuǎn)換的數(shù)編號,編號從低位開始,從0開始,將每一位上的數(shù)乘以進(jìn)制數(shù)的

編號次方,最后將所有乘得的結(jié)果相加就是十進(jìn)制表現(xiàn)形式。

c.二進(jìn)制和八進(jìn)制互轉(zhuǎn)

八進(jìn)制的每位對應(yīng)二進(jìn)制的三位。

a)二進(jìn)制和十六進(jìn)制互轉(zhuǎn)

卜六進(jìn)制的每一位對應(yīng)二進(jìn)制的四位。

2.6.6.二進(jìn)制負(fù)數(shù)

一個負(fù)數(shù)的二進(jìn)制表現(xiàn)形式就是這個負(fù)數(shù)忽略符號的正數(shù)對應(yīng)的二進(jìn)制取反再加一。

計算機(jī)中存儲的二進(jìn)制數(shù)最高位是0則是正數(shù),是1則是負(fù)數(shù)。

第2天課程

2.7.**碼表(時間長了就記住了,以后還會經(jīng)常遇到。)

2.7.1.ASCII:英文碼表,每個字符占1個字節(jié)。A是65,a是97,這個要知道。

2.7.2.GB2312:兼容ASCII,包含中文,每個英文占1個字節(jié)(正數(shù)),中文占2個字節(jié)(2

個負(fù)數(shù))。

2.7.3.GBK、GB18030:兼容GB2312,包含更多中文,每個英文占1個字節(jié)(正數(shù)),中文

占2個字節(jié)(第一個負(fù)數(shù)、第二個可正可負(fù))。

2.7.4.^Unicode:國際碼表,每個字符占2個字節(jié)。Java中存儲字符類型就是使用的

Unicode編碼。

2.7.5.UTF-8:國際碼表,英文占1個字節(jié),中文占3個字節(jié)。

3.?<Java語法>>>

3.1.*基本格式

所有Java代碼都應(yīng)該在一個class中。

Java是嚴(yán)格區(qū)分大小寫的。

Java是一種自由格式的語言。

Java代碼分為結(jié)構(gòu)定義語句和功能執(zhí)行語句,結(jié)構(gòu)定義語句以大括號結(jié)束,功能執(zhí)行語句

最后必須以分號結(jié)束。

3.2.注釋

單行注釋和多行注釋是在程序用來標(biāo)記一些特殊的文本,這些文本不參與編譯運行。

單行注釋:〃注釋內(nèi)容

多行注釋:/*注釋內(nèi)容*/

文檔注釋是Java中特有的一種注釋,它可以通過JDK中的工具(javadoc.exe)解析,生成

幫助文檔。

文檔注釋:/**注釋內(nèi)容*/

3.3.*標(biāo)識符

3.3.1.什么是標(biāo)識符

標(biāo)識符可以理解為程序中我們自定義的一些名字,包括:包名、類名、函數(shù)名、變量名、常

量名(這個東西后面遇到,邊學(xué)邊記,現(xiàn)在就是了解。)

3.3.2.*標(biāo)識符的命名規(guī)則

由大小寫字母、數(shù)字、下劃線(_)和美元符號($)組成,開頭不能是數(shù)字。不能使用關(guān)鍵

字。推薦使用全英文。

3.3.3.*標(biāo)識符通用規(guī)范(沒遇到的先了解)

類名、接口名:

所有單詞首字母大寫,駝峰式命名,

例如:XxxYyyZzz(后面主要就是用它)

變量名、函數(shù)名:

第一個單詞首字母小寫,其他單詞首字母大寫,駝峰式命名,例如:xxxYyyZzz

常量名:

所有字母都大寫,單詞之間用下劃線分割,例如:XXX_YYY_ZZZ

包名:

全部小寫,例如:XXX.yyy.zzz

3.4.關(guān)鍵字(知道有這么回事就行,后面會學(xué),學(xué)到誰就自然會了)

abstractbooleanbreakbytecase

catchcharclasscontinuodefau]t

dodoubleelseextendsfinal

finallyfloatforifimplements

importinstanceofintinterfacelong

nativenewpackageprivateprolecled

publicreturnshortstaticsuper

switchsynchronizedthisthrowthrows

transienttryvoidvolatilewhile

注:java無sizeof,goto,const關(guān)鍵字,但不能用gotoconst作為變量名(這個知識

知道就行,沒人會去用這兩個詞作為變量名)

3.5.常量

3.5.1.分類

整型

整數(shù),4個字節(jié)。

長整型

整數(shù),8個字節(jié)。以L結(jié)尾。

單精度浮點數(shù)

小數(shù),4個字節(jié)。以F結(jié)尾。

雙精度浮點數(shù)

小數(shù),8個字節(jié)。

布爾

只有兩個值,真(true)或假(false),1個字節(jié)。

字符

單個字符,2個字節(jié)。例如:'a','中','5',''u0026','\u0027'

在字符常量中,斜杠(\)是一個特殊的字符,它的作用是用來轉(zhuǎn)義后面一個字符,這些字

符通常是不可見的或者有特殊意義的。

''r'回車,回到一行的開始

''n'換行,換到下一行

''t'制表符,鍵盤上的Tab

'\b'類似退格,鍵盤上的Backspace

以上字符都不可見,無法直接表示,所以用斜杠加上另外一個字符來表示。

單引號,Java代碼中單引號表示字符的開始和結(jié)束,如果直接寫程序會認(rèn)為前兩個是

一對,報錯。

雙引號,Java代碼中雙引號表示字符串的開始和結(jié)尾,如果要寫一個包含雙引號的字

符串那么這個雙引號也需要轉(zhuǎn)義。

斜杠,Java代碼中的斜杠是轉(zhuǎn)義字符,用來和后面一個字符配合使用,在真正需要用

斜杠的時候那么就要用另一個斜杠來轉(zhuǎn)義。

以上字符都有特殊意義,無法直接表示,所以用斜杠加上另外一個字符來表示?

字符串

由若干個字符組成的一串??梢允且粋€字符、多個字符、或者一個都沒有。字符串沒有固定

大小。

null,只有這一個值,用來表示一個引用為空。

3.6.變量

intx=5;

System.out.println(x);

x=1+1;

System,out.println(x);

x=x+1;

System,out.println(x);

上面的x就是一個變量,變量沒有固定的值,是在內(nèi)存中開辟的一片空間。

Java中的變量中只能存儲同一種類型的值。

局部變量在被取值之前必須初始化(第一次給變量賦值)o

3.6.1.*數(shù)據(jù)類型分類

Java語言是強(qiáng)類型語言,對于每一種數(shù)據(jù)都定義了明確

的具體數(shù)據(jù)類型,在內(nèi)存總分配了不同大小的內(nèi)存空間

-整數(shù)類型(byte,short,int.long)

「數(shù)值型J

、浮點類型(float,double)

〔基本數(shù)據(jù)類型?字符型(char)

I布爾型(boolean)

數(shù)甥類型Y

廠類(class)

I引電數(shù)據(jù)類型Y法,、

嘍口(interface)

I數(shù)組(口)

整數(shù)默認(rèn):int小數(shù)默認(rèn):double

a.基本數(shù)據(jù)類型:8種

整數(shù):

byte1個字節(jié),最小值:T28,最大值:127

short2個字節(jié),最小值:-32768,最大值:32767

int4個字節(jié),最小值:-2147483648,最大值:2147483647

long8個字節(jié),最小值:-9223372036854775808,最大值:

9223372036854775807

浮點數(shù):

float4個字節(jié),最小值:L4E-45,最大值:3.4028235E38

double8個字節(jié),最小值:4.9E-324,最大值:1.7976931348623157E308

字符:

char2個字節(jié),最小值:0,最大值:65535

布爾:

boolean1個字節(jié),true或false

b.引用數(shù)據(jù)類型:

類、接口、數(shù)組都是引用數(shù)據(jù)類型,除了8種基本數(shù)據(jù)類型,其他所有類型都是引用數(shù)

據(jù)類型。

類型轉(zhuǎn)化

a.自動類型轉(zhuǎn)換

在byte、short、char參與運算的時候會自動提升為int,相當(dāng)于將一個占空間較小的

值放入了一個較大的空間。

b.強(qiáng)制類型轉(zhuǎn)換

可以將一個占空間較大的值使用(類型)的形式強(qiáng)制放入一個較小的空間,有可能損失精

度。

c.字符串轉(zhuǎn)換

任何值和字符串相加都會得到字符串。

變量的作用域與生命周期

作用域:變量定義在哪一級大括號中,哪個大括號的范圍就是這個變量的作用域。相同的作

用域中不能定義兩個同名變量。

生命周期:變量的生命周期從定義時開始,超出作用域后結(jié)束。變量生命周期以外不能使用。

3.7.運算符

算數(shù)運算符

算術(shù)運算符

運算符運算范例結(jié)果

+正號+33

-負(fù)號b=4;-b;-4

+加5+510

-減6-42

*乘3*412

/除5/51

%取模5%50

++自增(前)a=2;b=++a;a=3;b=3

4H-自增(后)a=2;b=a++;a=3;b=2

一自」(前)a=2;b=一一aa=l;b=l

一自減(后)a=2;b=a-a=l;b=2

+字符串相加*He*+*llo*"Hello"

加號:在操作數(shù)字、字符、字符串時是不同的,兩個字符相加得到的是碼表值,兩個字符串

相加是將字符串連接在一起。

除號:整數(shù)在使用除號操作時,得到的結(jié)果仍為整數(shù)(小數(shù)部分忽略)。

取模:模數(shù)觥右邊的數(shù))的符號忽略不計,結(jié)果的正負(fù)取決于被模數(shù)觥左邊的數(shù))。

自增:符號在前就是先運算后取值,符號在后則是先取值后運算。

習(xí)題:

a.System,out.printin(3500/1000*1000);

b.某個培訓(xùn)中心要為新到的學(xué)員安排房間,假設(shè)共有x個學(xué)員,每個房間可以住6人,

讓你用一個公式來計算他們要住的房間數(shù)?

賦值運算符

賦值運算符

運管符S越--算A-A-范例結(jié)果

=賦值a=3;b=2;a=3;b=2;

+=加等于a=3;b=2;a+=b;a=5;b=2;

--夠等于a=3;b=2;a-=b;a=l;b=2;

行乘等于a=3;b=2;a*=b;a=6;b=2;

/=除等于a=3;b=2;a/=ba=l;b=2;

新模等于a=3;b=2;a%=ba=l;b=2;

等于:可以多個連用,例如:x=y=z=5;

加等于:x+=5;相當(dāng)于x=x+5;

面試題:

以下代碼正確的是?(多選)

a.byteb=1+1;

b.byteb=1;b=b+1;

c.byteb=1;b+=1;

d.byteb=1;b=++b;

比較運算符

比較運算符

運算符運算范例結(jié)果

相等于4==3false

1=不等于4*=3true

<小于4<3false

>大干4>3true

<=小于等于4<=3false

>=大于等于4>=false

instanceof檢查是否是類的對象“Hello'instanceofStringture

比較運算符會將運算符左右兩邊的值進(jìn)行比較,運行結(jié)束之后返回的都是boolean值。

注意運算符==不要寫成=

邏輯運算符

邏輯運算符

、一

運算符運算范例結(jié)果

AND(與)false&truefalse

1OR(或)false|truetrue

*

XOR(異或)truefalsetrue

1NotGE)\truefalse

AND(短路)false&&truefalse

IIOR(短路)false||truetrue

邏輯運算符操作的都是布爾值,運行結(jié)束之后返回的也是boolean值

&兩邊都為true結(jié)果才為true,只要有一邊是false,結(jié)果就是false

兩邊都為false結(jié)果才為false,只要有'■邊是true,結(jié)果就是true

判斷兩邊是否不同,不同則為true,相同則為false

!取反,!true結(jié)果是false,!fasle結(jié)果是true

&&和&結(jié)果相同,具有短路效果,如果前半是false,表達(dá)式結(jié)果一定為false,不運

行后一半

II和II結(jié)果相同,具有短路效果,如果前半是true,表達(dá)式結(jié)果一定為true,不運

行后一半

分析以下程序運行結(jié)果:

intx=1;

inty=2;

System.out.printin(x++==y&++x>y++);

System,out.printin(x);

System,out.printin(y);

intx=1;

inty=2;

System,out.printin(x++==y&&++x>y++);

System,out.printin(x);

System,out.printin(y);

intx=1;

inty=2;

System,out.printin(x++==y|++x>y++);

System.out.printin(x);

System,out.println(y);

intx=1;

inty=2;

System,out.printin(x++==y||++x>y++);

System,out.printin(x);

System,out.printin(y);

&&在前半是false的時候短路

II在前半是true的時候短路

位運算符

任何信息在計算機(jī)中都是以二進(jìn)制的形式保存的,&、|、邛余了可以作為邏輯運算符,也可

以做為位算符。

它們對兩個操作數(shù)中的每一個二進(jìn)制位都進(jìn)行運算,0當(dāng)做false,1當(dāng)做true。

&將兩個二進(jìn)制數(shù)每一位進(jìn)行與運算,兩邊都為1結(jié)果才為1,只要有一邊是0,結(jié)果就

為0o

將兩個二進(jìn)制數(shù)每一位進(jìn)行或運算,兩邊都為0結(jié)果才為0,只要有一邊是1,結(jié)果就

為lo

將兩個二進(jìn)制數(shù)每一位進(jìn)行異或運算,只要兩邊不同結(jié)果就為1,相同則為0。

我們可以對數(shù)據(jù)按二進(jìn)制位進(jìn)行移位操作,java的移位運算符有三種:

?左移將二進(jìn)制的每一位向左移,低位補0。左移幾位就相當(dāng)于乘以2

的幾次方。

?右移將二進(jìn)制的每一位向右移,原來高位是0就補0,原來高位是1

就補1。右移幾位就相當(dāng)于除以2的幾次方。

?>無無符號右移將二進(jìn)制的每一位向右移,高位補0。正數(shù)移動沒區(qū)別,負(fù)數(shù)移

動后變?yōu)檎龜?shù)。

練習(xí):

a.用&和〉來做十進(jìn)制轉(zhuǎn)十六進(jìn)制

b.有兩個int型變量a和b,在不使用第三個變量的情況下交換兩個變量中的值

運算符優(yōu)先級

.[]0{};,

++—~1(數(shù)據(jù)類型)

*/%

+-

???>

<><=>=

——1—

&

1

&&

11

?:

=*=/=%=+=-=?=?=?>=&=八=1=

思考一下代碼運行結(jié)果:

System,out.println(l+2*3);

System,out.println(false&&truetrue);

System,out.println(true||true&&false);

inta=2;

intb=a+3*a++;

System,out.println(b);

inta=2;

intb=a+++3*a;

System,out.println(b);

inta=1;

intb=2;

System.out.printIn(a+++b);//a+++b相當(dāng)于a+(++b)

盡量寫簡單的表達(dá)式,遇到運算符優(yōu)先級的問題使用括號解決。

第3天課程

3.8.語句

順序結(jié)構(gòu)

顧名思義,就是程序從上到下一行一行執(zhí)行的結(jié)構(gòu),中間沒有判斷和跳轉(zhuǎn),直到程序結(jié)束。

選擇結(jié)構(gòu)

程序具備多個分支,通過條件判斷決定程序選擇那一條分支執(zhí)行

3.8.1.if語句:

通過if...elseif...else決定程序流程。

如果if中的條件滿足則執(zhí)行其中語句,if未滿足則繼續(xù)判斷elseif,如果滿足則執(zhí)

行,不滿足繼續(xù)判斷下一個elseif,如果所有都不滿足,則執(zhí)行else。

練習(xí):

用ifelse語句判斷一個數(shù)是奇數(shù)還是偶數(shù)。

用戶輸入一個字符,用程序判斷是否為小寫字母,如果是,請輸出“您輸入的字符

是小寫字母”。

3.8.2.switch語句:

通過switch...case...default語句控制程序流程。

根據(jù)switch后括號中的值判斷運行哪一個case,這個值可以是byte、short>ch;ar>

into

default語句是可選的,如果所有case都不滿足,則會執(zhí)行default。

一旦匹配到一個case,程序就會從這個case向下執(zhí)行,執(zhí)行完?個case之后不會跳過

其他的case,如需跳過請使用breako

3.8.3.三元運算符

語法:表達(dá)式?結(jié)果1:結(jié)果2

如果表達(dá)式結(jié)尾為true取結(jié)果1,為false則取結(jié)果2。

注意三元運算符也是有短路的效果,根據(jù)表達(dá)式的結(jié)果,只運行冒號一邊的,另外一邊

的不參與運行。

練習(xí):

定義一個函數(shù),接收三個int參數(shù),返回最大的一個。

循環(huán)結(jié)構(gòu)

通過循環(huán)條件控制同一段代碼反復(fù)執(zhí)行多次,執(zhí)行完畢程序才會繼續(xù)往后運行

3.8.4.while

先判斷while中的表達(dá)式結(jié)果是否為true,true則執(zhí)行循環(huán)體,執(zhí)行結(jié)束之后再次判

斷,如果表達(dá)式結(jié)果為false則跳出循環(huán)。

練習(xí):

打印出0-9

打印出a-z

3.8.5.求出1-100以內(nèi)可以被3和7同時整除的數(shù)

〃求出1-100以內(nèi)可被3和7同時整除的數(shù),求一共有幾個

/*

分析:(1)得到1-100以內(nèi)所有的數(shù)

(2)判斷n%3==0&&n%7==0

*/

intcount=0;//計數(shù)器

intn=l;

while(n<=100){

if(n%3==0&&n%/==0){

System.out.printIn(n);

count++;

System,out.printin("1T00以內(nèi)可被3和7同時整除的數(shù)有“+countT

)

n++;

)

a.do...while

先執(zhí)行一次循環(huán)體,然后判斷while中的表達(dá)式,如果是true繼續(xù)執(zhí)行,如果是false

則跳出循環(huán)。

練習(xí):

編寫一個程序,這個程序不斷地讀取鍵盤上輸入的字符,直到讀到字符'q'時,

程序結(jié)束。

b.for

for循環(huán)的括號中有三條語句,都是可選項。

語句1:這條語句會在整個循環(huán)開始之前執(zhí)行,且僅運行一次,不參與循環(huán)。

語句2:必須是一個返回boolean值的表達(dá)式,如果寫了這個語句那么每次循環(huán)開始之

前會判斷,true則執(zhí)行循環(huán),false則不執(zhí)行。沒寫則直接執(zhí)行。

語句3:這條語句在每次循環(huán)體運行結(jié)束之后執(zhí)行。

練習(xí):

3.8.6.***使用雙重for循環(huán)打印多種*型圖案

i*

*01

**12

***23

****34

*****45

i空格*

*041

***133

*****225

*******317

*********409

3.8.7.continue、break、return區(qū)別?

continue:跳過本次次循環(huán),繼續(xù)執(zhí)行下一次循環(huán)

break:結(jié)束循環(huán)

return:結(jié)束方法

第4天課程

3.9.***函數(shù)(方法)

函數(shù)的定義

函數(shù)就是一段有名字的代碼,可以完成某一特定功能。

如果有一段代碼要使用多次,我們可以給它起個名字,每次使用時通過名字調(diào)用,這樣就不

用每次都寫一大段代碼了。

如果某個函數(shù)在執(zhí)行的時候需要調(diào)用者傳入數(shù)據(jù),那么可以定義參數(shù)列表,用于接收數(shù)據(jù)。

如果函數(shù)運行之后需要返回給調(diào)用者數(shù)據(jù),那么需要指定返回值類型,并且用關(guān)鍵字return

返回。

定義函數(shù)的3個必要條件:返回值類型、函數(shù)名、參數(shù)列表。如果不需要參數(shù)也要寫小括號,

如果沒有返回值類型要寫void。

名詞解釋

形參:在定義函數(shù)時小括號中的參數(shù),用來接收數(shù)據(jù)的參數(shù)。

實參:在調(diào)用函數(shù)時真正傳入的參數(shù),傳遞給函數(shù)的數(shù)據(jù)。

參數(shù)類型:函數(shù)的參數(shù)的類型,一旦定義傳入時必須匹配。

返回值:函數(shù)運行結(jié)束后返回的值,使用return關(guān)鍵字返回。

返回值類型:函數(shù)運行結(jié)束后返回的值的類型,在類型非void情況下必須返回,而且必須

類型匹配。

函數(shù)的重載

多個函數(shù)的函數(shù)名相同,參數(shù)列表不同(個數(shù)、順序、類型),這就是函數(shù)的重載。在調(diào)用

函數(shù)的時候通過傳入的實參找到匹配的函數(shù)調(diào)用。

函數(shù)的重載和返回值類型無關(guān)。

3.10.數(shù)組

什么是數(shù)組

數(shù)組是一個類型一致,長度不可變的容器??梢酝ㄟ^索引操作容器中的每一個元素。

如果有多個類型相同的數(shù)據(jù)需要存儲,我們就可以將其定義為一個數(shù)組,這樣做省去了創(chuàng)建

多個變量的麻煩。

3.10.1.***如何定義數(shù)組

int[]arr=newint[3];

定義int數(shù)組arr,長度為3。其中所有元素都為默認(rèn)值0。

int[]arr=newint[]{1,2,3);

定義int數(shù)組arr,長度為3,其中3個元素分別為1、2、3??梢栽谌魏吻闆r使用。

int[]arr={1,2,3);

定義int數(shù)組arr,長度為3,其中3個元素分別為1、2、3。這種方式只能在給數(shù)組類型

變量賦值時使用。

3.10.2.***遍歷數(shù)組(訪問數(shù)組元素)

數(shù)組的長度

數(shù)組可以使用length屬性獲取其長度。

存在數(shù)組中的數(shù)據(jù)是有索引的,從0開始遞增,我們通過數(shù)組名和索引就可以操作其中

每一個元素。例如:

System.out.println(arr[0]);//打印數(shù)組中索引為。的元素

arr[l]=100;//給數(shù)組中索引為1的元素賦值為100

遍歷數(shù)組

由于數(shù)組可以通過索引獲取每一個元素,又可以通過length獲取長度,那么我們就可

以定義循環(huán)來遍歷數(shù)組中的每?個元素了。

publicstaticvoidmain(String[]args)

(

〃數(shù)組的3種定義寫法

int[]arrl=newint[]{1,2,3,6,8,0,9};

int[]arr2={1,2,3};

int[]arr3=newint[3];

System.out.print("[");〃為了美觀打印左中括號

for(inti=0;i<arr.length;i++){

if(i!=arr.length-1){

System,out.print(arr[i]+",");

}else{

System,out.print(arr[i]);

)

)

System.out.print("]”);/〃為了美觀打印右中括號

)

3.10.3.B:**獲取最值

獲取最大值

publicstaticintgetMax(int[]arr)

(

intmax=arr[0];

〃1從1開始,因為第一個數(shù)不用跟自己比

for(inti=l;i<arr.length;i++)

if(arr[i]>max)

(

max=arr[i];

)

)

returnmax;

)

**獲取最小值

publicstaticintgetMin(int[]arr)

(

intmin=arr[0];

〃1從1開始,因為第一個數(shù)不用跟自己比

for(inti=l;i<arr.length;i++)

(

if(arr[i]<min)

(

min=arr[i];

)

)

returnmin;

)

3.10.4.C:排序

*選擇排序

原理:如果拿0角標(biāo)上的元素依次和后面的元素進(jìn)行比較,

第?次內(nèi)循環(huán)結(jié)束后,最小值出現(xiàn)在了0角標(biāo)位置。

你就想想我們是如何打星星

****

***

**

*

publicstaticvoidselectSort(int[]arr)

//i<arr.length-1n個數(shù)兩兩比,nT次就能獲得最值。

for(inti=0;i<arr.length-1;i++)

//0角標(biāo)元素沒必要和自己比,所以j從1開始。

//發(fā)現(xiàn)j為了不重復(fù)比較,總是要比i大1,所以j從i+1開始

for(intj=i+l;j<arr.length;j++)

if(arr[j]<arr[i])

(

inttemp=arrEi];

arr[i]=arr[j];

arr[j]=temp;

)

)

)

*冒泡排序

原理:兩個相鄰元素進(jìn)行比較,第一次比較完以后,最大值出現(xiàn)在了最大角標(biāo)

處。

publicstaticvoidbubbleSort(int[]arr)

(

//i<arr.length-1n個數(shù)兩兩比,nT次就能獲得最值。

for(inti=0;i<arr.length-1;i++)

(

〃為了防止角標(biāo)越界,j<arr.length-1

〃為了減少比較次數(shù),j<arr.lengthT-i

for(intj=0;j<arr.length-l-i;j++)

(

if(arr[j]>arr[j+1])

(

inttemp=arr[j];

arr[j]=arr[j+1];

arr[j+1]=temp;

)

)

}

)

3.10.5.***使用數(shù)組時的異常

如果訪問數(shù)組時索引越界(小于0或者大于length-1),會拋出異常:

ArrayIndexOutOfBoundsExcepion

如果訪問數(shù)組的引用為空(null),會拋出空指針異常:NullPointerException

數(shù)組練習(xí)

a.定義一個函數(shù),將數(shù)組中所有元素打印。要求打印成一行,每個元素之間以逗號分隔。

b.定義一個函數(shù),交換數(shù)組中的兩個元素。

c.定義一個函數(shù),找出數(shù)組中的最大數(shù)。

d.定義一個函數(shù),將數(shù)組中所有元素反轉(zhuǎn)。例如:

溫馨提示

  • 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

提交評論