JAVA筆記第一章基礎部分_第1頁
JAVA筆記第一章基礎部分_第2頁
JAVA筆記第一章基礎部分_第3頁
JAVA筆記第一章基礎部分_第4頁
JAVA筆記第一章基礎部分_第5頁
已閱讀5頁,還剩45頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、java簡介

Java是現(xiàn)在最為流行的編程語言之一,也是擁有眾多廠商支持的

編程語言之一,同時Java已經(jīng)成為了一個事實上的應用層開發(fā)的標

準(基于業(yè)務的開發(fā))。其上所構(gòu)建出來的框架也是最多的,發(fā)展的

如此良好歸結(jié)于一點:反射機制(全部框架的靈魂)。

Java語言的前身是在1991年開發(fā)出的OAK平臺,最早是為一個

GREEN的項目而設計的,此項目的核心愿義在于利用email來限制家

電產(chǎn)品運行,也就是最早所謂的物聯(lián)網(wǎng)的概念。當時SUN的工程師們

原本準備運用C++進行開發(fā),后來考慮到C++困難性,于是以C++為

基礎開發(fā)出了一個OAK平臺技術(shù),所以Java是運用C++編寫。Java

推出了HotJava閱讀器技術(shù),并且獲得了相當大的勝利,所以Java

最早的定位就是基于網(wǎng)絡的。

后來Java經(jīng)過了一些時間的沉淀,在1995年5月23日的時候

正式推出了JDK1.0,同時OAK被重新命名為Java,之后在2019年

的時候,推出了JDK1.2,同時將Java更名為Java2,到了2019年

十周年大會的時候,推出了JDK1.5版本,或者稱為JavaSE5.0,

最新的版本是JDK1.8,要想運用廣泛,還須要至少3年。Java是由

最早的SUN(斯坦伏高校網(wǎng)絡)開發(fā)的,SUN是一家從事于硬件生產(chǎn)

的公司,而SUN最聞名的代表作就是小型機,而最勝利的應用是在

amazon上進行的。Amazon是一個在線商店,但是它自己也出版很多

的技術(shù)圖書?,F(xiàn)在amazon比較聞名的服務就是云服務,像CIA也購

買了amazon云服務,搭建的是一個私有云服務。但是特別缺憾的是,

SUN經(jīng)驗了世界的互聯(lián)網(wǎng)低潮,低潮之后就始終沒有重新站起來,在

2009年的時候最終被Oracle收購了。

說明:關(guān)于Oracle收購SUN

?企業(yè)平臺架構(gòu):操作系統(tǒng)+數(shù)據(jù)庫+中間件+編程語言;

?微軟的產(chǎn)品:Windows+SQLServer+IIS+、Office;

?Oracle的產(chǎn)品:UNIX+Oracle+OAS(收購BEA得到WebLogic)

+PL/SQL(收購SUN取得Java)、CRM、ERP;

而Java技術(shù)的發(fā)展又有了幾個分支:

?J2SE(2019年之后更名為JavaSE):供應了

一些基礎版本的支持;

?J2EE(2019年之后更名為JavaEE):供應了

企業(yè)平臺搭建,現(xiàn)在運用最廣泛的架構(gòu);

?J2ME(2019年之后更名為JavaME):供應了嵌入式開發(fā)的支持,

但是卻誕生在了一個不好的時代,Nokia橫行的時代,但是J2ME在

哪個時候只能夠作為嬉戲的出現(xiàn)。后來被Android所取代了。

Java主要的特點:Java語言足夠簡潔、Java是

一門面對對象的編程語言、Java供應了垃圾的自動收集機制、Java

供應了多線程及反射操作機制、Java具備很強的可移植性。

由于全部的程序不是干脆及詳細的操作系統(tǒng)捆綁在一起,那么都是經(jīng)

過JVM處理后執(zhí)行的,所以只要JVM支持的功能不變更,那么程序可

以在不同的平臺間進行隨意的移植。但是由于程序沒有操作系統(tǒng)干脆

接觸,所以會導致性能下降,最早也是簡潔被競爭對手詬病的問題,

但是隨著硬件技術(shù)的發(fā)展,這些問題都解決了。

2、JDK安裝

假如要進行Java程序的開發(fā),那么須要下載JDK(oracle),本

次運用的是JDK1.7版本。但是在進行JDK的安裝之前請保證本機的

病毒防火墻關(guān)閉。

安裝過程之中會詢問用戶是否要安裝JRE,在現(xiàn)

在的操作系統(tǒng)里面都支持了JRE,但是支持的并不是最新的,所以本

次是選擇安裝新的JRE,所謂的JRE指的是JAVA運行時環(huán)境,即:

假如只有JRE,那么表示只能夠運行Java程序,但是卻不能夠進行

開發(fā)。

安裝完成之后可以發(fā)覺全部JDK的可執(zhí)行程序路

徑:D:\Java\jdkl.7.009\bin。但是這些吩咐本身并不屬于windows

系統(tǒng),所以須要首先進行路徑的配置:【我的電腦】一【屬性】一【高

級】一【環(huán)境變量】一【編輯path】。

此時在path環(huán)境變量里面已經(jīng)存在有一些其它

配置,而且多個路徑之間要運用“;”進行分割。把新的路徑放在最

前面,此時的效果如下。

?publicclass類名稱:文件名稱要及類名稱保持一樣,但是一般

而言,在一個*.java文件里面只能夠有一個publicclass定義;

?class類名稱:文件名稱可以及類名稱不同,但是生成的*.class

名稱是定義的類名稱,在一個*.java文件里面可以同時運用class

定義多個類,編譯之后每一個類會自動生成各自的*.class文件;

在日后進行類名稱定義的時候,有一個自己的命

名規(guī)范:每一個單詞的首字母必需大寫,例如:HelloJavaDemoo

2、主方法

主方法表示的是程序的起點,任何的程序都是由

主方法起先執(zhí)行的,在Java中的主方法組成比較長:

publicstaticvoidmain(Stringargs[]){

編寫代碼,今日的代碼都

在此處編寫;

一般主方法都習慣于將其放在運用publicclass

定義的類之中,所以主方法所在的publicclass類,日后稱為主類。

3、系統(tǒng)輸出

系統(tǒng)輸出指的是將提示信息輸出到標準輸出設備

——顯示器上,對于系統(tǒng)輸出有兩種方式:

輸出之后增加換行:(〃內(nèi)容〃);

輸出之后不增加換行:(〃內(nèi)容〃);

把以上的基本程序弄嫻熟了,基本上今日的Java

程序的結(jié)構(gòu)也就都固定了。

3.2CLASSPATH初步分析(重點)

通過單詞的含義就可以清晰的知道,CLASSPATH指的是類的保存路徑。

例如,現(xiàn)在在D:\testjava書目下存在有一個"Hello,class”文件

存在,那么此時吩咐行所在的路徑也是“d:\testjava",所以可以干

脆運用"javaHello"這個類。但是假如說此時吩咐行的所在路徑為

“e:”,在e盤下并沒有存在Hello,class文件。那么一旦執(zhí)行了“java

Hello”吩咐會出現(xiàn)如下的錯誤提示信息:

錯誤:找不到或無法加載主類HelloError:

NotFoundClassError:Hollo

那么現(xiàn)在就希望即使所在的路徑在e盤上,也可

以加載到d:\testjava書目下的Hello.class文件,則可以通過設置

CLASSPATH完成。

范例:設置CLASSPATH

SETCLASSPATHS:\testjava

設置完成之后,那么再次執(zhí)行"javaHello”吩

咐。那么發(fā)覺可以找到Heilo.class文件,所以可以得出一個結(jié)論:

每當運用java吩咐說明一個類的時候,會自動的通過CLASSPATH所

設置的路徑加載所須要的類。

但是假如在實際的工作之中這樣到處亂設置

CLASSPATH并不便利,最好的做法是從當前所在的路徑下去加載所須

要的類文件。那么往往會將CLASSPATH設置為表示從當前所在

路徑加載。

范例:設置從當前所在路徑加載類

SETCLASSPATH=.

默認狀況下全部的CLASSPATH都是通過當前所在

路徑進行加載的,但是在一些軟件配置的時候,有可能會自動的幫你

去修改CLASSPATH路在,那么此時就必需手工設置,但是上面的手工

設置只適合于當前的吩咐行方式。假如要想針對于全部的吩咐行窗口,

則可以建立一個新的環(huán)境屬性。

面試題:請說明PATH和CLASSPATH的區(qū)分?

?PATH:是操作系統(tǒng)的程序配置路徑,通過此路

徑配置可執(zhí)行程序;

?CLASSPATH:是Java程序說明時所運用的路徑,

用戶執(zhí)行java吩咐的時候會自動的依據(jù)CLASSPATH所設置的路徑進

行類的加載,一般都將其設置為”表示從當前所在路徑進行類加

載。

3.3標識符及關(guān)鍵字、注釋(重點)

在定義類、變量名稱、方法名稱的時候?qū)τ诿怯薪M成要求的,

在Java里面任何的一個標識符可以由字母、數(shù)字、_、$符號所組成,

其中不能以數(shù)字開頭,不能是Java的關(guān)鍵字(保留字),像Hello.

JavaDemo,都屬于合法的標識符。但是在定義標識符的時候個人原則:

建議都以字母開頭,由字母和數(shù)字組成,少用堅決不用

在以上所給出的49個關(guān)鍵字之中,有兩個關(guān)鍵字只是介紹不講解:

native、volatile。

在給出的關(guān)鍵字之中,有三個嚴格來講不屬于關(guān)

鍵字,只屬于特別含義的單詞,例如:null.true,false;

Java里面有兩個不運用的關(guān)鍵字:goto>const

在JDK1.4之后增加了一個assert關(guān)鍵字,將在

異樣處理中運用;

在JDK1.5之后增加了一個enum關(guān)鍵字。

除此之外任何的語言都會存在有注釋的概念,所

謂的注釋指的是程序在編譯的時候不會編譯的程序部分,在Java里

面有三類注釋:

?單行注釋:〃注釋;

?多行注釋:/*…*/;

?文檔注釋:/**…*/

此類注釋最終再運用。

3.4Java數(shù)據(jù)類型劃分(重點)

程序的數(shù)據(jù)類型指的是允許操作的數(shù)據(jù)形式,例如數(shù)據(jù)庫之中可

以操作字符串、數(shù)字、日期時間,那么程序也是一樣的。在Java之

中數(shù)據(jù)類型一共分為兩大類:

?基本數(shù)據(jù)類型(只包含

詳細的數(shù)據(jù),不牽扯到內(nèi)存的關(guān)聯(lián)):

數(shù)值

型:

整型hyt.eshort.int

long;默認值:0

實型(浮八占、、型):float、

double;默認值:0.0

字符型*

char;

默認值:

'\u0000'

布爾型*

boolean;

默認值:false

?引用數(shù)據(jù)類型(指的內(nèi)

存的關(guān)聯(lián)數(shù)據(jù),類似于指針的概念):類、數(shù)組、接口。默

認值:null

通過以上的數(shù)據(jù)的保存大小可以發(fā)覺,依據(jù)由小到大的保存依次:

byte<short<int<long<float<double,double可以保存

最大的數(shù)據(jù),運用double可以保存全宇宙之中最有意義的最大的數(shù)

字。以上給出的幾個基木類型,有個人總結(jié)的幾個核心用法:

?表示整數(shù)永恒運用int、

表示小數(shù)永恒運用double;

?在進行數(shù)據(jù)傳輸和字符

轉(zhuǎn)碼的過程之中都運用byte;

?表示日期時間或者是文

件大小的時候都運用long;

?表示邏輯關(guān)系的時候往

往都運用booleano

整型數(shù)據(jù)(byte>short、int、long)

整型數(shù)據(jù)是最為常用的一個數(shù)據(jù)類型,其不能保存小數(shù)數(shù)據(jù),在

Java之中,默認的一個整數(shù)就是int型數(shù)據(jù)類型。

范例:定義整型變量

publicclassTestDemo{

publicstaticvoidmain(Stringargs[]){

//10是一個整數(shù),既然

是整數(shù)就是int數(shù)據(jù)類型

〃10也稱為常量,而num

是一個變量

intnum=

10;//int變量=int型常量

num=

20;//num的內(nèi)容被變更了

(num);

本程序之中首先將一個數(shù)字10(是一個int型常

量)給予int型的變量num,而后修改了num變量的內(nèi)容。提示:關(guān)

于不同版本JDK的問題(說明之前所謂的默認值短暫無法運用的問題)

那么在JDK1.5之后,針對于變量的聲明及賦值

這兩個操作上已經(jīng)發(fā)生了變更。

范例:正確代碼

publicclassTestDemo{

publicstaticvoidmain(Stringargs[]){

intnum;//定

義一個int型變量,定義的時候沒設置數(shù)值

num=10;//為變量設

置內(nèi)容

(num);

范例:錯誤代碼

publicclassTestDemo(

publicstaticvoidmain(Stringargs[]){

intnum;//定

義一個int型變量,定義的時候沒設置數(shù)值

(num);

變量在運用前肯定要設置默認值(不要去依靠系

統(tǒng)供應的默認值),但是假如在JDK1.4及其之前版木的話,連最早

正確的代碼也是錯的(第一行是定義變量、其次行是為變量賦值,這

個是錯誤的),所以最保險的做法是是在聲明變量的同時就設置好內(nèi)

容(intnum=10);

既然是數(shù)值型的變量,那么變量定義之后也是可

以進行數(shù)學計算的。

范例:進行數(shù)學計算

publicclassTestDemo(

publicstaticvoidmain(Stringargs[]){

intnumA=10;

intnumB=20;

intresult=numA+

numB;//int+int=int

(result);

每種數(shù)據(jù)類型都有其自己的最大值和最小值范圍,

那么假如說超過了這個范圍呢?

范例:視察超過數(shù)據(jù)范圍的狀況

publicclassTestDemo{

publicstaticvoidmain(Stringargs[]){

intmax=

Integer.MAX_VALUE;//取得int的最大值

intmin=

Integer.MTN_VALUE;//取得int的最小值

(max);//

最大值:2147483647

(min);//

最小值:-2147483648

//int型+int型=int

(max+

1);//最大值+1=-2147483648(最小值)

(max+

2);//最大值+1=-2147483647(次最小值)

//int型-int型二int

(min-1);//最小值

-1=2147483647(最大值)

發(fā)覺數(shù)據(jù)是一個循環(huán)過程,最大值假如接著進行

加法計算則變?yōu)榱俗钚≈担钚≈导偃缃又M行了減法計算,將變?yōu)?/p>

最大值,這一概念屬于數(shù)據(jù)的溢出。

面對數(shù)據(jù)的溢出問題,假如要想解決,那么唯一

的途徑就是擴大運用的數(shù)據(jù)范圍,比int保存范圍大的數(shù)據(jù)類型是

long,那么假如要想將int變?yōu)閘ong,有兩種方式:

方式一:在數(shù)字前加上一個“(long)”

longx=(long)10;//int變?yōu)?/p>

long

方式二:是在數(shù)字后加上一個字母

longx=10L;//int變?yōu)閘ong

范例:利用long數(shù)據(jù)類型解決數(shù)據(jù)的溢出問題

publicclassTestDemo{

publicstaticvoidmain(Stringargs[]){

intmax

Integer.MAX_VALUE;//取得int的最大值

intmin

Integer.MIN_VALUE;//取得int的最小值

(max);//

最大值:2147483647

(min);//

最小值:-2147483648

//int型(自動向上變?yōu)?/p>

long)+long型=long型

(max+

IL);//2147483648

(max+(long)

2);//2147483649

//int型(自動向上變?yōu)?/p>

long)-long型二long型

(min

IL);//-2147483649

那么通過這樣一個程序就可以得出一個結(jié)論:當

范圍小的數(shù)據(jù)類型及范圍大的數(shù)據(jù)類型一起進行數(shù)學計算的時候,范

圍小的數(shù)據(jù)類型會自動的變?yōu)榉秶蟮臄?shù)據(jù)類型,當類型統(tǒng)一之后再

進行數(shù)學計算。byte-*short-*int->long。

而在整型數(shù)據(jù)之中還存在有一種byte的類型,這

個長度只有“T28、127”之間。

范例:視察byte操作

publicclassTestDemo(

publicstaticvoidmain(Stringargs[]){

intnum=129;

byteb=(byte)

num;//范圍大的數(shù)據(jù)變?yōu)榉秶〉臄?shù)據(jù),須要強制轉(zhuǎn)換

(b);

范圍大的數(shù)據(jù)類型假如要變?yōu)榉秶〉臄?shù)據(jù)類型,

肯定要運用強制轉(zhuǎn)換,但是這之中就有可能出現(xiàn)數(shù)字的錯亂。

但是在運用byte的時候一點很有意思,byte作

了一些特別處理。

范例:視察原始操作

publicclassTestDemo(

publicstaticvoidmain(Stringargs[]){

intnum=10;

byteb=(byte)

num//int變?yōu)閎yte

(b)

范例:視察特別的支持

publicclassTestDemo{

publicstaticvoidmain(Stringargs[]){

byteb=

10;//int變?yōu)閎yte

(b);

任何一個整數(shù)在Java之中都是一個int類型的常

量,現(xiàn)在是將int型變?yōu)閎yte型。因為10正好在byte的范圍之中,

而假如不在byte范圍之中的整型常量,那么依舊須要執(zhí)行強制轉(zhuǎn)型。

3.4.2實型數(shù)據(jù)(float、double)

在程序之中默認的小數(shù)類型就是double,double是范圍最大的數(shù)據(jù)

類型。

范例:視察double的運用

publicclassTestDemo{

publicstaticvoidmain(Stringargs[]){

doublenum二

10.2;//小數(shù)為double類型

(num);

“double型*int型(變

為double型)=double型

(num*2);

但是假如要運用的是float,肯定須要留意,要

執(zhí)行強制類型轉(zhuǎn)換,那么轉(zhuǎn)換的形式也有兩種:

?形式一:(float)變量;

?形式二:在數(shù)字之后運

用字母表示。

范例:聲明float變量

publicclassTestDemo{

publicstaticvoidmain(Stringargs[]){

floatnum=10.2f;

//float*int=float

(num*2);

建議運用小數(shù)還是以double為主,不要去采納

float了。

提示:肯定要留意的是,整型數(shù)據(jù)都是不包含小數(shù)點位的,而float

和double是會包含小數(shù)位

范例:視察程序的問題

publicclassTestDemo{

publicstaticvoidmain(Stringargs[]){

intnumA=10;

intnumB=3;

(numA/numB);//3

publicclassTestDemo{

publicstaticvoidmain(Stringargs[]){

intnumA=10;

intnumB=3;

(numA/

(double)numB);//3.3333333333333335

從Java起先始終到今日,始終都有一個bug:

publicclassTestDemo{

publicstaticvoidmain(Stringargs[]){

(3*

10.1);//30.299999999999997

double可以保存的數(shù)據(jù)是最大的,所以全部的數(shù)

據(jù)類型:bytefint->long->double的依次進行自動類型轉(zhuǎn)換。

3.4.3字符型數(shù)據(jù)(char)

所謂的字符數(shù)據(jù)指的是運用聲明的一個字符信息,例如:’A'

就表示一個字符。字符運用char進行表示,而且char和int之間是

可以進行相互轉(zhuǎn)換的。

范例:視察char及int的轉(zhuǎn)換

publicclassTestDemo{

publicstaticvoidmain(Stringargs[]){

charc=

'z';//字符變量

intnum=

c;//將char變?yōu)閕nt型

(num);

通過一系列的轉(zhuǎn)換操作,可以發(fā)覺,字母和數(shù)值

之間的轉(zhuǎn)換是有肯定的數(shù)據(jù)聯(lián)系的:

?大寫字母(A~Z):65

~90;

?小寫字母(a~z):97

~122,大寫和小寫字母之間差了32個長度;

?數(shù)字字母(0~9):48

“57;

細心的同學可以發(fā)覺,以上的字符編碼過程和在

C語言之中學習到的字符結(jié)果是相同的,但是Java和C所采納的編

碼方式并不相同,Java運用的是UNICODE編碼,這是一種十六進制

的編碼方式。但是考慮到開發(fā)者的運用習慣,所以UNICODE汲取了C

語言之中的ASCH碼的部分編碼規(guī)則,這樣的好處是可以便利的進

行編程習慣的對接。

范例:干脆操作數(shù)字就可以實現(xiàn)字母的變更

publicclassTestDemo(

publicstaticvoidmain(Stringargs[]){

charc

'A';//字符變量

intnum

c//將char變?yōu)閕nt型

num=num+32;〃65+

32=97,num為97

(num);

((char)num);

強調(diào):但是肯定要記,‘O'和數(shù)字0是兩個概念。推斷某一個字符是

否是數(shù)字

publicclassTestDemo{

publicstaticvoidmain(Stringargs[]){

charc=

'6';//字符變量

if(c>=48&&c<=57)

(

(〃是

一個數(shù)字!〃);

if(c>='O'&&c<二'9')

(

(〃是

一個數(shù)字!〃);

而且由于UNICODE編碼的存在,所以Java中的

char數(shù)據(jù)類型是可以保存中文的。

publicclassTestDemo{

publicstaticvoidmain(Stringargs[]){

charc刁

//字符變量

intnum=c;

(num);

但是假如要想保存中文,必需是在中文的電言環(huán)

境下。

3.4.4布爾型數(shù)據(jù)(boolean)

布爾是一個數(shù)學家的名字,對于boolean數(shù)據(jù)類

型只有兩種選擇:true、false。一般而言,布爾數(shù)據(jù)類型往往都作

為一些程序的限制邏輯運用。

范例:程序邏輯

publicclassTestDemo{

publicstaticvoidmain(Stringargs[]){

booleanflag=1<2;

if(flag){//須

要接收的是布爾,flag==true

(〃條

件滿意!〃);

在一些其它語言之中[不支持布爾型數(shù)據(jù)的)可

能會運用0表示false,1表示true,但是Java里面的布爾是肯定

不行能運用數(shù)字來表示的。

3.4.5字符串類型:String(初步相識)

在學習Oracle的時候可以發(fā)覺存在有字符串數(shù)

據(jù),但是在Java之中是沒有供應一種類型可以干脆表示字符串的,

而要想表示出字符串,則可以利用String類完成。運用聲明的

數(shù)據(jù)就表示一個字符串。

范例:定義字符串變量

publicclassTestDemo{

publicstaticvoidmain(Stringargs[]){

Stringstr="Hello

〃;//雙引號聲明

str=str+Z/Wcrld

〃;//“+”表示字符串連接

str+="!!!〃;〃表示字

符串連接

(str);

現(xiàn)在就可以發(fā)覺,在數(shù)學計算之中“+”表示的是

加法計算,而在字符串之中“+”表示字符串連接操作。所以,這個

時候就可能會存在如下一種問題。

publicclassTestDemo{

publicstaticvoidmain(Stringargs[]){

intnumA=10;

doublenumB=20.1;

Stringresult=〃計算結(jié)

果:〃+numA+numB;

(result);

)〃計算結(jié)果:1020.1

在Java里面任何的數(shù)據(jù)類型,只要是及String

進行了“+”連接操作,那么都表示全部的類型自動的變?yōu)镾tring后

進行連接操作。那么為了正確只能夠運用“()”變更優(yōu)先級。

現(xiàn)在可以發(fā)覺程序里面”表示字符,“〃”表示

字符串,那么假如要想包含這樣的信息就必需采納轉(zhuǎn)義字符,有如下

的轉(zhuǎn)義字符:\n(換行)、\t(Tab).\〃(〃)、\'(')、\\(\)o

范例:轉(zhuǎn)義字符

publicclassTestDemo(

publicstaticvoidmain(Stringargs[]){

Stringresult二

"\tVHelloVWorld.\n你好!〃;

(result);

轉(zhuǎn)義字符只在Java學習之中有用處,其它的地方

意義不大。而假如是強制性拼湊字符串操作也會運用到。

3.5運算符(重點)

程序就是一系列的運算符:數(shù)學、關(guān)系、邏輯、位等等。但是對

于運算符的運用,個人的建議是別太困難。

范例:視察如下的HT題目

publicclassTestDemo{

publicstaticvoidmain(Stringargs[]){

intnumA=10;

intnumB=20;

intresult=numA-+

numB*++numA/numB++*numA-+numA-numB+++numB;

(result);//120

以上運算符不建議這樣運用。

任何的時候聰慧點的人都不背,都依靠“()”修改操作的優(yōu)先級。

但是在這里須要強調(diào)三類運算符:三目、邏輯、位。

3.5.1、三目運算符

三目是一種邏輯的賦值運算。其基本操作格式:

數(shù)據(jù)類型變量二布爾表達式?值1:值2;

假如布爾表達式成立,將值1的數(shù)據(jù)給予變量,

否則將值2的數(shù)據(jù)給予變量。

publicclassTestDemo{

publicstaticvoidmain(Stringargs[]){

intnumA=10;

intnumB=20;

intresult=numA>numB?

numA:numB;

(result)//20

publicclassTestDemo{

publicstaticvoidmain(Stringargs[]){

intnumA=10;

intnumB=20;

intresult=0;

if(numA>numB){

resu

It=numA;

}else{

resu

It=numB;

(result);//20

}//三目也可以利用推斷語句實現(xiàn),不過代碼較長。

3.5.2s邏輯運算

邏輯運算主要有及、或、非三種,其中非的實現(xiàn)

主要依靠完成。但是最為麻煩的是及和或兩個運算,因為各自

都有兩組實現(xiàn)。

1、及操作;(&、&&)

范例:視察問題

publicclassTestDemo{

publicstaticvoidmain(Stringargs[]){

if(1=2&10/0=0)

(〃條

件滿意!〃);

Exceptioninthread"main":/byzero

atTestDemo.main(TestDemo.java:3)

此時出現(xiàn)了程序的錯誤,那么就表示兩個推斷條

件事實上都執(zhí)行了,但是來分析一下及操作的特點,及操作必需保證

全部的推斷條件都為true,最終才是true,那么依據(jù)之前的推斷來

講,前面已經(jīng)有條件返回了false,那么后面不管有多少個true,結(jié)

果肯定是false,那么就沒有必要接著向后推斷了,則可以運用短路

范例:運用

publicclassTestDemo{

publicstaticvoidmain(Stringargs[]){

if(1==2&&10/0==

0){

(〃條

件滿意!〃);

此時后面的條件沒有接著推斷,屬于短路操作。

2、或操作:(|、||)

范例:視察一般或“I”運用

publicclassTestDemo{

publicstaticvoidmain(Stringargs[]){

if(1==1|10/0==0)

(

(〃條

件滿意!〃);

Exceptioninthread〃main〃:/byzero

atTestDemo.main(TestDemo.java:3)

由于或操作是若干個條件有一個返回true,結(jié)果

就是true,而在以上的程序之中,發(fā)覺前面有條件返回了true,但

是后面的推斷依舊執(zhí)行了,這就是因為一般或會將全部的條件都推斷

執(zhí)行,而現(xiàn)在運用短路或。

范例:運用短路或(||)

publicclassTestDemo{

publicstaticvoidmain(Stringargs[]){

if(1==1||10/0==

0){

(〃條

件滿意!〃);

此時前面的條件返回了true,而不管后面會返回

多少個false,最終的結(jié)果也肯定是true。

結(jié)論:在任何狀況下編寫邏輯推斷的時候都運用

3.5.3、位操作(了解)

位運算的初步就是須要實現(xiàn)十進制和二進制數(shù)據(jù)之間的轉(zhuǎn)換操作,

轉(zhuǎn)換原則:數(shù)字除2取余,最終依據(jù)倒序排列。

十進制:11-00000000

000000000000000000001011(一進制數(shù)據(jù),int是32位)

*

2

5

??????1

t

?

2

2

??????1

t

*

2

1

??????0

t

2

0

1

在Java里面供應的位運算:&、|、~(取反)、-

(異或)、>>、<<、?>o

移位操作要留意的問題是高(低)位是補0還是補1和對char,byte,

short型的操作:

(1)<<:(left-shift),最低位補0

(2)?:(signedright-shift),右移過程運用符號位擴展(sign

extension),即假如符號為為1則高位補1,是0則補0,也就是邏

輯右移

(3)?>:(unsignedright-shit),右移過程運用零擴展(zero

extension),即最高位一律補0,也就是算術(shù)右移

(4)移位操作的數(shù)據(jù)類型可以是byte,char,short,int,long型,

但是對byte,char,short進行操作時會先把它們變成一個int型,

最終得到一個int型的結(jié)果,對long型操作時得到一個long型結(jié)果,

不行以對boolean型進行操作。

(5)移位操作符可以和=合并起來,即?=、>>:和>>>=。例如

a?=2;表示將a右移兩位后的值重新賦給ao當時在運用這三個

操作符對byte,char,short型數(shù)據(jù)進行操作時要留意,例如有一

下代碼片段:

publicclassShiftTest(

publicstaticvoidmain(String[]args){

bytea;byteb;bytec;a=127;b=127;c=127;a<<

二2;

(a);(b?=2);

(c?2);

}運行結(jié)果是:-4-4508

這說明白在操作a〈<=2執(zhí)行過程是這樣的:先將byte型的數(shù)127

變成int型,左移2位得到508,然后把508賦給byte型變量a時

只是簡潔地〃折斷”(truncate)得到數(shù)-4。編譯時編譯器不會提示你可

能損失精度(事實上在本例中的確是損失精度了),但是假如你把a

?二2改成a=a?2;編譯器就會提示可能損失精度了。

移位操作的簡潔計算方法:>>右移操作x?y就是x除以2的

y此方,取整數(shù)

。左移操作X?y就是x乘以2的y次方

范例:實現(xiàn)操作

publicclassTestDemo(

publicstaticvoidmain(Stringargs[]){

intnumA=17;

intnumB=11;

(numA&numB);

17的二進制:000000000000000000000000

00010001;

11的二進制:000000000000000000000000

00001011;

&操作:00000000

%

000000000000000000000001;e十進制:1

范例:實現(xiàn)“I”操作

publicclassTestDemo(

publicstaticvoidmain(Stringargs[]){

intnumA=17;

intnumB=11;

(numAnumB);

17的二進制:000000000000000000000000

00010001;

11的二進制:000000000000000000000000

00001011;

I操

作:000000000000000000000000

00011011;d十進制:27

面試題:請用最快的方式計算2的3次方

最笨拙的方法是:2*2*2=8;

采納移位:2?2;

publicclassTestDemo(

publicstaticvoidmain(Stringargs[]){

intnum=2;

(num<<2);

面試題:請說明和|”和,|”的區(qū)分?

?在邏輯運算上及和或分別有兩種:

I-及操作:

一般及“&”:全部的推斷條件都要執(zhí)行;

|-

短路及“&&”:假如前面有條件返回了false,那么后血的條件不再

執(zhí)行,最終結(jié)果就是false;

I-或操作:

I-

一般或“I”:全部的推斷條件都要執(zhí)行;

|-

短路或“II”:假如前面有條件返回了true,那么后面條件不再推斷,

最終結(jié)果就是true。

?位操作:

I一位及操作“&”:只有在

兩位都為1的時候才返回1,假如有一位是0返回0;

I一位或操作“I”:只有在

兩位都為0的時候才返回0,假如有一位是1返回1。

3.6程序結(jié)構(gòu)(重點)

程序結(jié)構(gòu)有三種:依次、分支、循環(huán)。

事實上全部的程序都會包含有依次的范疇,依據(jù)

代碼的定義的先后依次執(zhí)行。

3.6.1分支語句:

分支語句一共分為兩種類型:條件分支、開關(guān)語

句。

if語句:if…else語句:if…elseif…else語

句:

if(布爾表達式){if(布爾表達式){if(布爾表達式){

///

/條件滿意時執(zhí)行/條件滿意時執(zhí)行/條件滿意時執(zhí)行

)}else{}elseif(布爾表達

/式){

/條件不滿意時執(zhí)行/

溫馨提示

  • 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

提交評論