第二章、java語(yǔ)言基礎(chǔ)-運(yùn)算符詳解

3、運(yùn)算符

算術(shù)運(yùn)算符

關(guān)系運(yùn)算符

邏輯運(yùn)算符

字符串連接運(yùn)算符

三元運(yùn)算符

賦值類(lèi)運(yùn)算符

1、算術(shù)運(yùn)算符

+求和

-相減

*乘積

/商

%求余

++自加(b=k++是先賦值再自加1,b=++k是先自加1再賦值。

e=100;

system.out.println(e++);100

system.out.println(e);101

--自減

運(yùn)算符有優(yōu)先級(jí),沒(méi)有必要刻意記住優(yōu)先級(jí),不確定就用括號(hào)確定優(yōu)先級(jí)

2、關(guān)系運(yùn)算符

>大于

<小于

==等于

<=小于等于

>=大于等于

!=不等于

3、邏輯運(yùn)算符(邏輯運(yùn)算符要求兩邊的算子必須是布爾類(lèi)型,并且最終的返回結(jié)果也是布爾類(lèi)型)

& 與

| 或

! 非

^ 邏輯異或

&& 短路與(運(yùn)算結(jié)果跟邏輯與完全相同,但是在int x=10,inty=8;system.out.println(x<y&++x<y)時(shí)&前面是false已經(jīng)是false了但是還是會(huì)執(zhí)行后面的表達(dá)式

使得y的值會(huì)自加,而int x=10,inty=8;system.out.println(x<y&&++x<y))時(shí)&前面是false已經(jīng)是false了后面的++x<y就不執(zhí)行也不判斷了。

|| 短路或

4、賦值類(lèi)運(yùn)算符;

基本賦值運(yùn)算符

=

先執(zhí)行等號(hào)右邊的表達(dá)式,將執(zhí)行的結(jié)果賦值給右邊的變量。(k++)不是這樣的

擴(kuò)展的賦值運(yùn)算符

+=:i+=5等同于i=i+5

-=:i-=5等同于i=i-5

*=:i*=5等同于i=i*5

/=:i/=5等同于i=i/5

%=:i%=5等同于i=i%5

byte b=10;

b=b+5;

編譯會(huì)報(bào)錯(cuò),因?yàn)閎是byte類(lèi)型,5是int類(lèi)型,加到一起是int類(lèi)型,這是必須要進(jìn)行變量數(shù)據(jù)類(lèi)型轉(zhuǎn)換。

改為b=(byte)(b+5);

byte b=10;

b+=5;

編譯可以通過(guò),因?yàn)閎+=5;和b=b+5;并不相同,而是與b=(byte)(b+5)相同。

結(jié)論:擴(kuò)展類(lèi)的賦值運(yùn)算符不改變運(yùn)算結(jié)果類(lèi)型。

5、java中的“+”運(yùn)算符;

1、加法運(yùn)算:+運(yùn)算符兩邊是數(shù)字,進(jìn)行的是加法運(yùn)算

2、字符串的連接運(yùn)算:1、+號(hào)兩邊都是字符串2、+號(hào)兩邊有一個(gè)是字符串,返回結(jié)果還是字符串。

3、在一個(gè)表達(dá)式當(dāng)中可以出現(xiàn)多個(gè)“+”,在沒(méi)有添加小括號(hào)的前提下,遵守從左向右順序依次運(yùn)算。

system.out.println(10+20+"30")輸出結(jié)果是3030

system.out.println(10+(20+"30"))輸出結(jié)果是102030

int a=10;

int b=20;

system.out.println(“10+20=”+a+b)//“10+20=1020”

system.out.println(“10+20=”+(a+b))//“10+20=30”

system.out.println(a+"+"+b+"="+(a+b))//“動(dòng)態(tài)表示a+b”

引用類(lèi)型string

string是sun公司在javase中提醒的字符串類(lèi)型

string.class字節(jié)碼文件,

string是引用數(shù)據(jù)類(lèi)型,s是變量名,“abc”是string類(lèi)型的字面值

string s=“abc”;

6、三元運(yùn)算符:

布爾表達(dá)式?表達(dá)式1:表達(dá)式2;

三元運(yùn)算符執(zhí)行原理;當(dāng)布爾表達(dá)式的結(jié)果是真的時(shí)候選表達(dá)式1的結(jié)果作為表達(dá)式結(jié)果否則選擇表大四2作為執(zhí)行結(jié)果。

boolea sex=false;

sex?"nan":"nv"

編譯會(huì)報(bào)錯(cuò),因?yàn)?nan"和"nv"不是語(yǔ)句

boolea sex=false;

string? c=sex?"nan":"nv"

system.out.println(c);

編譯通過(guò)

string? c=sex?"nan":'nv'//編譯不通過(guò),不符合語(yǔ)法,又有字符串又有字符是無(wú)法賦值給同一個(gè)類(lèi)型的變量。

system.out.println(c);

//編譯通過(guò),println既可以打印字符有可以打印字符串

system.out.println(string? c=sex?"nan":'nv');

7、控制語(yǔ)句

if語(yǔ)句語(yǔ)法:四種編寫(xiě)方式(只要一個(gè)分支執(zhí)行程序在執(zhí)行完該分支后程序立刻就結(jié)束)

1、if(布爾表達(dá)式)

{

Java語(yǔ)句

}

2、if(布爾表達(dá)式)

{

java語(yǔ)句

}

else{

java語(yǔ)句

}

3、if(布爾表達(dá)式)

{

java語(yǔ)句

}

else if(布爾表達(dá)式)

{

java表達(dá)式

}

else if(布爾表達(dá)式)

{

java表達(dá)式

}

else if(布爾表達(dá)式)

{

java表達(dá)式

}

else if(布爾表達(dá)式)

{

java表達(dá)式

}

else if(布爾表達(dá)式)

{

java表達(dá)式

}

else if(布爾表達(dá)式)

{

java表達(dá)式

}

4、if(布爾表達(dá)式)

{

java語(yǔ)句

}

else if(布爾表達(dá)式)

{

java表達(dá)式

}

else if(布爾表達(dá)式)

{

java表達(dá)式

}

else if(布爾表達(dá)式)

{

java表達(dá)式

}

else if(布爾表達(dá)式)

{

java表達(dá)式

}

else if(布爾表達(dá)式)

{

java表達(dá)式

}

else if(布爾表達(dá)式)

{

java表達(dá)式

}

else

{

java表達(dá)式

}

只要有else的語(yǔ)句就保證至少有一個(gè)分支執(zhí)行,但是沒(méi)有else語(yǔ)句,就不是一定執(zhí)行至少一個(gè)分支。

在寫(xiě)代碼時(shí)必須要縮進(jìn)保證可讀性。

if語(yǔ)句中如果只有一條java語(yǔ)句時(shí),大括號(hào)可以不寫(xiě),但這種方式不推薦使用但別人寫(xiě)要能看

鍵盤(pán)輸入的語(yǔ)句

public class KeyInputTest

{

public static void main(String[]args)

{ //創(chuàng)建鍵盤(pán)掃描器對(duì)象

java.uti1.Scanner s=new java.util.Scanner(System.in);

//第二步;調(diào)用Scanner對(duì)象的next()方法開(kāi)始接收輸入

//當(dāng)用戶(hù)輸入的時(shí)候,并且最終敲回車(chē)鍵的時(shí)候,鍵入的信息會(huì)自動(dòng)賦值給userInputContent

//程序執(zhí)行到這里,用戶(hù)輸入的信息已經(jīng)在內(nèi)存條中了

String userInputContent=s.next();//輸入字符串

int userInputContent=s.nextint();//輸入數(shù)字值

//將內(nèi)存中的數(shù)據(jù)輸出到控制臺(tái)

system.out.println("您輸入了"+userInputContent);

}

}

判斷天氣:

public class KeyInputTest

{

public static void main(String[]args)

{ //創(chuàng)建鍵盤(pán)掃描器對(duì)象

java.uti1.Scanner s=new java.util.Scanner(System.in);

system.out.println("歡迎使用本系統(tǒng)");

system.out.println("說(shuō)明1:1表示下雨,0表示晴天");

system.out.println("說(shuō)明2:1表示男,0表示女");

system.out.println("說(shuō)明3:溫度為數(shù)字");

system.out.println("請(qǐng)輸入當(dāng)前天氣情況:");

String userInputContent=s.next("請(qǐng)輸入當(dāng)前天氣情況:");//提示輸入天氣

int weather=s.nextint();//輸入天氣

//將內(nèi)存中的數(shù)據(jù)輸出到控制臺(tái)

判斷天氣情況

if ( weather==1)

{

system.out.println("下雨天");

{

else if(weather==0)

{

system.out.println("下雨天");

}

}

}

控制語(yǔ)句:

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

1、switch語(yǔ)句

2、語(yǔ)法結(jié)構(gòu)switch也是選擇結(jié)構(gòu),也是分支語(yǔ)句

語(yǔ)法:

switch(int或者string類(lèi)型的字面值或者變量)

{

case int或者string類(lèi)型的字面值或者變量;

java語(yǔ)句

break;

case int或者string類(lèi)型的字面值或者變量;

java語(yǔ)句

break;

case int或者string類(lèi)型的字面值或者變量;

java語(yǔ)句

break;

.........

default://所有情況都不符合

java語(yǔ)句

}

3、switch語(yǔ)句的執(zhí)行原理:

switch后面小括號(hào)當(dāng)中的數(shù)據(jù)和后面case后面的數(shù)據(jù)進(jìn)行一一匹配,匹配成功的分支執(zhí)行

自上而下的順序以此匹配

4、匹配成功的分支執(zhí)行,分支當(dāng)中最后有break語(yǔ)句的話(huà),整個(gè)switch語(yǔ)句終止。

5、匹配成功的分支執(zhí)行,分支中沒(méi)有break語(yǔ)句的話(huà),直接進(jìn)入下一個(gè)分支執(zhí)行,不進(jìn)行匹配。這種現(xiàn)象被稱(chēng)為穿透的現(xiàn)象。

6、所有分支都沒(méi)有匹配成功,當(dāng)有default的語(yǔ)句時(shí),會(huì)執(zhí)行default分支里面的語(yǔ)句。

7、switch后面和case后面只能是int或者string類(lèi)型的數(shù)據(jù),不能參測(cè)其他類(lèi)型,其他類(lèi)型的數(shù)據(jù)當(dāng)作為參數(shù)時(shí)會(huì)被默認(rèn)轉(zhuǎn)換成int和string類(lèi)型,并且在大轉(zhuǎn)小的時(shí)候會(huì)報(bào)錯(cuò)可能精度錯(cuò)誤。

8、case可以合并;

int i=10;

switch(i)

{case1:case2:case3:case10;

system.out.println("Test code!");

}//在i為1,2,3,10的時(shí)候執(zhí)行語(yǔ)句。

pubulic class switch_Test

{

public static void main(string[]args

{

long X=100L;

switch(X){}//編譯會(huì)報(bào)錯(cuò),因?yàn)閄是長(zhǎng)整型,默認(rèn)轉(zhuǎn)換成int類(lèi)型后,報(bào)錯(cuò)可能損失精度。

long X=100L;

switch((int)X){}//這次編譯通過(guò),因?yàn)橐呀?jīng)轉(zhuǎn)換完全,這是就是用括號(hào)中的數(shù)據(jù)進(jìn)行判斷。

}

}

實(shí)現(xiàn)計(jì)算器:

思路:1、選擇所有數(shù)據(jù)從鍵盤(pán)上輸入

? 2、使用switch語(yǔ)句進(jìn)行判斷

? 3、需要從控制臺(tái)輸入三次:

*第一個(gè)數(shù)字:10

*輸入運(yùn)算符+

*請(qǐng)輸入第二個(gè)數(shù)字:20

*運(yùn)算結(jié)果:10+20=30

public class switch04

{

public static void main(string[]args)

{

java.util.scanner s=new java.util.scanner(system.in);

system.out.println("歡迎使用簡(jiǎn)單計(jì)算器系統(tǒng)");

system.out.println("請(qǐng)輸入第一個(gè)數(shù)字");

int num1=s.nextint()

system.out.println("請(qǐng)輸入第一個(gè)運(yùn)算符");

int operator=s.next();

system.out.println("請(qǐng)輸入第二個(gè)數(shù)字");

int num2=s.nextint();

switch(operator)

{ case"+":

result=nuum1+num2;

break;

case"-":

result=nuum1-num2;

break;

case"*":

result=nuum1*num2;

break;

case"/":

result=nuum1*num2;

break;

default:

system.out.println("只能計(jì)算加減乘除");

}

system.out.println("計(jì)算結(jié)果為"+result);

}

}

循環(huán)語(yǔ)句:

循環(huán)結(jié)構(gòu):在程序當(dāng)中總有一些代碼必須重復(fù)執(zhí)行;需要重復(fù)執(zhí)行的代碼放在循環(huán)體里,在聯(lián)合計(jì)數(shù)器,共同控制這段按需要反復(fù)之行的代碼。

總共有三種循環(huán):

for循環(huán)

while循環(huán)

do..while循環(huán)

1、for循環(huán)

語(yǔ)法;

for(初始化表達(dá)式;布爾表達(dá)式;更新表達(dá)式)

{

需要重復(fù)的代碼片段

}

1、初始化表達(dá)式、布爾表達(dá)式、更新表達(dá)式都不是必須的必須的是兩個(gè)分號(hào)

2、初始化表達(dá)式最先執(zhí)行,并且只在循環(huán)中執(zhí)行一次

3、先進(jìn)行初始換表達(dá)式,1、判斷布爾表達(dá)式,2、執(zhí)行循環(huán)體,3、執(zhí)行更新表達(dá)式,1、然后布爾表達(dá)式,2、若為真然后執(zhí)行循環(huán)體,3、執(zhí)行更新表達(dá)式,1然后布爾表達(dá)式。

public class for_Test

{

public static void main(string[]args)

{ int i=0;

for(;i<=10;i++)

{

system.out.println("i="+i);//此時(shí)只能輸出i=0,因?yàn)閒or循環(huán)對(duì)變量的作用只在for循環(huán)中有作用,出了for循環(huán)就不會(huì)有任何作用。

}

}

}

2、while循環(huán):

語(yǔ)法:

1、while循環(huán)的語(yǔ)法結(jié)構(gòu):

while(布爾表達(dá)式)

{

循環(huán)體;

}

語(yǔ)法結(jié)構(gòu):

執(zhí)行原理

先判斷布爾表達(dá)式,再執(zhí)行循環(huán)體,判斷布爾表達(dá)式

執(zhí)行次數(shù)

0到N

3、do......while 循環(huán)

語(yǔ)法結(jié)構(gòu):

do{

循環(huán)體;

? }

while(布爾表達(dá)式);

執(zhí)行原理 先執(zhí)行再判斷

執(zhí)行次數(shù) 1到N次

注意事項(xiàng)注意while(布爾表達(dá)式)后面的分號(hào)別丟了。

控制循環(huán)的語(yǔ)句;

1、break語(yǔ)句:跳出內(nèi)層for循環(huán),使得循環(huán)結(jié)束。不影響外層循環(huán)

forA:for (int j=0;j<=9 ; j++)

{

forB:for (inti=0;i<=10 ;i++ )

{

if(i==5)

{

break forA//此時(shí)可以直接跳出最外層循環(huán)

}

}

}

2、comtinue語(yǔ)句:跳出本次循環(huán),進(jìn)入下一次循環(huán)。不影響外層循環(huán)

方法:

方法的基礎(chǔ)語(yǔ)法以及方法的重載機(jī)制:overload

某個(gè)功能的代碼只需要寫(xiě)一遍,使用這個(gè)功能只需要傳遞具體的數(shù)據(jù)即可,這個(gè)功能完成后返回一個(gè)最終的結(jié)果。這樣的代碼可以重復(fù)的使用這就是方法

使用這個(gè)方法我們成為調(diào)用invoke,方法在c語(yǔ)言中又叫做函數(shù)。

方法的定義可以在任何位置,因?yàn)橹挥姓{(diào)用時(shí)才有順序,但是不能在方法中再定義方法,在方法體中代碼遵守自上而下的順序依次執(zhí)行。

語(yǔ)法

語(yǔ)法結(jié)構(gòu):[修飾符列表]返回值類(lèi)型 方法名(形式參數(shù)列表)

{

方法體;

}

注意:

1、關(guān)于修飾符選項(xiàng):

可選項(xiàng)不是必須的

目前統(tǒng)一寫(xiě)成:public static【以后講】

方法的修飾符列表當(dāng)中有static關(guān)鍵字的話(huà),怎么調(diào)用這個(gè)方法?

類(lèi)名.方法名(實(shí)際參數(shù)列表)

2、返回值類(lèi)型:

返回值是調(diào)用方法后方法最終給出的結(jié)果

返回值類(lèi)型包括所有基本數(shù)據(jù)類(lèi)型和所有的引用數(shù)據(jù)類(lèi)型

有些方法沒(méi)有返回值,那么返回值類(lèi)型必須寫(xiě)個(gè)void

寫(xiě)代碼的時(shí)候,return語(yǔ)句必須在沒(méi)有void關(guān)鍵字的所有方法里存在,但是return的值必須與方法定義的時(shí)候返回值類(lèi)型必須要相同。

寫(xiě)代碼return 值;就可以返回值了,只要帶有return的語(yǔ)句執(zhí)行,這個(gè)return語(yǔ)句所在的方法結(jié)束。

3、方法名;

只要是合法的標(biāo)識(shí)符就行

方法名最好見(jiàn)名知意

方法名遵序駝峰命名規(guī)則

方法名首字母要求小寫(xiě),后面每一個(gè)單詞的首字母大寫(xiě)

4、形式參數(shù)列表

形參是局部變量,且可以有多個(gè)形參,不同的形參用“,”隔開(kāi),調(diào)用形參時(shí)實(shí)參必須與形參的數(shù)據(jù)類(lèi)型相同。實(shí)參列表和形參列表必須滿(mǎn)足數(shù)量相同,且類(lèi)型對(duì)應(yīng)相同。

如果類(lèi)型不同將會(huì)進(jìn)行自動(dòng)數(shù)據(jù)類(lèi)型轉(zhuǎn)換。

5、方法體

方法體必須由大括號(hào)括起來(lái)

方法體中的代碼必須有順序

自上而下執(zhí)行

每一個(gè)方法體必須由java語(yǔ)句組成,每一個(gè)java語(yǔ)句必須以;結(jié)尾

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容