3塘幅、運(yùn)算符
算術(shù)運(yùn)算符
關(guān)系運(yùn)算符
邏輯運(yùn)算符
字符串連接運(yùn)算符
三元運(yùn)算符
賦值類運(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)先級蒙揣,沒有必要刻意記住優(yōu)先級靶溜,不確定就用括號確定優(yōu)先級
2、關(guān)系運(yùn)算符
>大于
<小于
==等于
<=小于等于
>=大于等于
!=不等于
3懒震、邏輯運(yùn)算符(邏輯運(yùn)算符要求兩邊的算子必須是布爾類型罩息,并且最終的返回結(jié)果也是布爾類型)
& 與
| 或
! 非
^ 邏輯異或
&& 短路與(運(yùn)算結(jié)果跟邏輯與完全相同个扰,但是在int x=10瓷炮,inty=8;system.out.println(x<y&++x<y)時&前面是false已經(jīng)是false了但是還是會執(zhí)行后面的表達(dá)式
使得y的值會自加递宅,而int x=10娘香,inty=8;system.out.println(x<y&&++x<y))時&前面是false已經(jīng)是false了后面的++x<y就不執(zhí)行也不判斷了办龄。
|| 短路或
4烘绽、賦值類運(yùn)算符;
基本賦值運(yùn)算符
=
先執(zhí)行等號右邊的表達(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;
編譯會報錯,因為b是byte類型玷禽,5是int類型赫段,加到一起是int類型,這是必須要進(jìn)行變量數(shù)據(jù)類型轉(zhuǎn)換矢赁。
改為b=(byte)(b+5)糯笙;
byte b=10;
b+=5;
編譯可以通過,因為b+=5;和b=b+5;并不相同撩银,而是與b=(byte)(b+5)相同给涕。
結(jié)論:擴(kuò)展類的賦值運(yùn)算符不改變運(yùn)算結(jié)果類型。
5额获、java中的“+”運(yùn)算符够庙;
1、加法運(yùn)算:+運(yùn)算符兩邊是數(shù)字抄邀,進(jìn)行的是加法運(yùn)算
2耘眨、字符串的連接運(yùn)算:1、+號兩邊都是字符串2境肾、+號兩邊有一個是字符串剔难,返回結(jié)果還是字符串胆屿。
3、在一個表達(dá)式當(dāng)中可以出現(xiàn)多個“+”偶宫,在沒有添加小括號的前提下非迹,遵守從左向右順序依次運(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))//“動態(tài)表示a+b”
引用類型string
string是sun公司在javase中提醒的字符串類型
string.class字節(jié)碼文件,
string是引用數(shù)據(jù)類型吵冒,s是變量名纯命,“abc”是string類型的字面值
string s=“abc”;
6桦锄、三元運(yùn)算符:
布爾表達(dá)式扎附?表達(dá)式1:表達(dá)式2蔫耽;
三元運(yùn)算符執(zhí)行原理结耀;當(dāng)布爾表達(dá)式的結(jié)果是真的時候選表達(dá)式1的結(jié)果作為表達(dá)式結(jié)果否則選擇表大四2作為執(zhí)行結(jié)果。
boolea sex=false;
sex匙铡?"nan":"nv"
編譯會報錯图甜,因為"nan"和"nv"不是語句
boolea sex=false;
string? c=sex?"nan":"nv"
system.out.println(c);
編譯通過
string? c=sex鳖眼?"nan":'nv'//編譯不通過黑毅,不符合語法,又有字符串又有字符是無法賦值給同一個類型的變量钦讳。
system.out.println(c);
//編譯通過矿瘦,println既可以打印字符有可以打印字符串
system.out.println(string? c=sex?"nan":'nv');
7愿卒、控制語句
if語句語法:四種編寫方式(只要一個分支執(zhí)行程序在執(zhí)行完該分支后程序立刻就結(jié)束)
1缚去、if(布爾表達(dá)式)
{
Java語句
}
2、if(布爾表達(dá)式)
{
java語句
}
else{
java語句
}
3琼开、if(布爾表達(dá)式)
{
java語句
}
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語句
}
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的語句就保證至少有一個分支執(zhí)行,但是沒有else語句柜候,就不是一定執(zhí)行至少一個分支搞动。
在寫代碼時必須要縮進(jìn)保證可讀性。
if語句中如果只有一條java語句時渣刷,大括號可以不寫鹦肿,但這種方式不推薦使用但別人寫要能看
鍵盤輸入的語句
public class KeyInputTest
{
public static void main(String[]args)
{ //創(chuàng)建鍵盤掃描器對象
java.uti1.Scanner s=new java.util.Scanner(System.in);
//第二步;調(diào)用Scanner對象的next()方法開始接收輸入
//當(dāng)用戶輸入的時候辅柴,并且最終敲回車鍵的時候箩溃,鍵入的信息會自動賦值給userInputContent
//程序執(zhí)行到這里高诺,用戶輸入的信息已經(jīng)在內(nèi)存條中了
String userInputContent=s.next();//輸入字符串
int userInputContent=s.nextint();//輸入數(shù)字值
//將內(nèi)存中的數(shù)據(jù)輸出到控制臺
system.out.println("您輸入了"+userInputContent);
}
}
判斷天氣:
public class KeyInputTest
{
public static void main(String[]args)
{ //創(chuàng)建鍵盤掃描器對象
java.uti1.Scanner s=new java.util.Scanner(System.in);
system.out.println("歡迎使用本系統(tǒng)");
system.out.println("說明1:1表示下雨,0表示晴天");
system.out.println("說明2:1表示男碾篡,0表示女");
system.out.println("說明3:溫度為數(shù)字");
system.out.println("請輸入當(dāng)前天氣情況:");
String userInputContent=s.next("請輸入當(dāng)前天氣情況:");//提示輸入天氣
int weather=s.nextint();//輸入天氣
//將內(nèi)存中的數(shù)據(jù)輸出到控制臺
判斷天氣情況
if ( weather==1)
{
system.out.println("下雨天");
{
else if(weather==0)
{
system.out.println("下雨天");
}
}
}
控制語句:
選擇結(jié)構(gòu)
1虱而、switch語句
2、語法結(jié)構(gòu)switch也是選擇結(jié)構(gòu)开泽,也是分支語句
語法:
switch(int或者string類型的字面值或者變量)
{
case int或者string類型的字面值或者變量牡拇;
java語句
break;
case int或者string類型的字面值或者變量穆律;
java語句
break惠呼;
case int或者string類型的字面值或者變量;
java語句
break峦耘;
.........
default://所有情況都不符合
java語句
}
3剔蹋、switch語句的執(zhí)行原理:
switch后面小括號當(dāng)中的數(shù)據(jù)和后面case后面的數(shù)據(jù)進(jìn)行一一匹配,匹配成功的分支執(zhí)行
自上而下的順序以此匹配
4辅髓、匹配成功的分支執(zhí)行泣崩,分支當(dāng)中最后有break語句的話,整個switch語句終止洛口。
5矫付、匹配成功的分支執(zhí)行,分支中沒有break語句的話第焰,直接進(jìn)入下一個分支執(zhí)行买优,不進(jìn)行匹配。這種現(xiàn)象被稱為穿透的現(xiàn)象挺举。
6杀赢、所有分支都沒有匹配成功,當(dāng)有default的語句時湘纵,會執(zhí)行default分支里面的語句脂崔。
7、switch后面和case后面只能是int或者string類型的數(shù)據(jù)瞻佛,不能參測其他類型脱篙,其他類型的數(shù)據(jù)當(dāng)作為參數(shù)時會被默認(rèn)轉(zhuǎn)換成int和string類型,并且在大轉(zhuǎn)小的時候會報錯可能精度錯誤伤柄。
8绊困、case可以合并;
int i=10适刀;
switch(i)
{case1:case2:case3:case10秤朗;
system.out.println("Test code!");
}//在i為1,2,3,10的時候執(zhí)行語句。
pubulic class switch_Test
{
public static void main(string[]args
{
long X=100L;
switch(X){}//編譯會報錯笔喉,因為X是長整型取视,默認(rèn)轉(zhuǎn)換成int類型后硝皂,報錯可能損失精度。
long X=100L;
switch((int)X){}//這次編譯通過作谭,因為已經(jīng)轉(zhuǎn)換完全稽物,這是就是用括號中的數(shù)據(jù)進(jìn)行判斷。
}
}
實現(xiàn)計算器:
思路:1折欠、選擇所有數(shù)據(jù)從鍵盤上輸入
? 2贝或、使用switch語句進(jìn)行判斷
? 3、需要從控制臺輸入三次:
*第一個數(shù)字:10
*輸入運(yùn)算符+
*請輸入第二個數(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("歡迎使用簡單計算器系統(tǒng)");
system.out.println("請輸入第一個數(shù)字");
int num1=s.nextint()
system.out.println("請輸入第一個運(yùn)算符");
int operator=s.next();
system.out.println("請輸入第二個數(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("只能計算加減乘除");
}
system.out.println("計算結(jié)果為"+result);
}
}
循環(huán)語句:
循環(huán)結(jié)構(gòu):在程序當(dāng)中總有一些代碼必須重復(fù)執(zhí)行锐秦;需要重復(fù)執(zhí)行的代碼放在循環(huán)體里咪奖,在聯(lián)合計數(shù)器,共同控制這段按需要反復(fù)之行的代碼酱床。
總共有三種循環(huán):
for循環(huán)
while循環(huán)
do..while循環(huán)
1羊赵、for循環(huán)
語法;
for(初始化表達(dá)式扇谣;布爾表達(dá)式昧捷;更新表達(dá)式)
{
需要重復(fù)的代碼片段
}
1、初始化表達(dá)式揍堕、布爾表達(dá)式料身、更新表達(dá)式都不是必須的必須的是兩個分號
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);//此時只能輸出i=0,因為for循環(huán)對變量的作用只在for循環(huán)中有作用汇鞭,出了for循環(huán)就不會有任何作用凉唐。
}
}
}
2庸追、while循環(huán):
語法:
1、while循環(huán)的語法結(jié)構(gòu):
while(布爾表達(dá)式)
{
循環(huán)體台囱;
}
語法結(jié)構(gòu):
執(zhí)行原理
先判斷布爾表達(dá)式淡溯,再執(zhí)行循環(huán)體,判斷布爾表達(dá)式
執(zhí)行次數(shù)
0到N
3簿训、do......while 循環(huán)
語法結(jié)構(gòu):
do{
循環(huán)體血筑;
? }
while(布爾表達(dá)式);
執(zhí)行原理 先執(zhí)行再判斷
執(zhí)行次數(shù) 1到N次
注意事項注意while(布爾表達(dá)式)后面的分號別丟了。
控制循環(huán)的語句煎楣;
1豺总、break語句:跳出內(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//此時可以直接跳出最外層循環(huán)
}
}
}
2喻喳、comtinue語句:跳出本次循環(huán),進(jìn)入下一次循環(huán)困曙。不影響外層循環(huán)
方法:
方法的基礎(chǔ)語法以及方法的重載機(jī)制:overload
某個功能的代碼只需要寫一遍表伦,使用這個功能只需要傳遞具體的數(shù)據(jù)即可,這個功能完成后返回一個最終的結(jié)果慷丽。這樣的代碼可以重復(fù)的使用這就是方法
使用這個方法我們成為調(diào)用invoke蹦哼,方法在c語言中又叫做函數(shù)。
方法的定義可以在任何位置要糊,因為只有調(diào)用時才有順序纲熏,但是不能在方法中再定義方法,在方法體中代碼遵守自上而下的順序依次執(zhí)行锄俄。
語法
語法結(jié)構(gòu):[修飾符列表]返回值類型 方法名(形式參數(shù)列表)
{
方法體局劲;
}
注意:
1、關(guān)于修飾符選項:
可選項不是必須的
目前統(tǒng)一寫成:public static【以后講】
方法的修飾符列表當(dāng)中有static關(guān)鍵字的話奶赠,怎么調(diào)用這個方法鱼填?
類名.方法名(實際參數(shù)列表)
2、返回值類型:
返回值是調(diào)用方法后方法最終給出的結(jié)果
返回值類型包括所有基本數(shù)據(jù)類型和所有的引用數(shù)據(jù)類型
有些方法沒有返回值毅戈,那么返回值類型必須寫個void
寫代碼的時候苹丸,return語句必須在沒有void關(guān)鍵字的所有方法里存在,但是return的值必須與方法定義的時候返回值類型必須要相同苇经。
寫代碼return 值赘理;就可以返回值了,只要帶有return的語句執(zhí)行塑陵,這個return語句所在的方法結(jié)束感憾。
3、方法名;
只要是合法的標(biāo)識符就行
方法名最好見名知意
方法名遵序駝峰命名規(guī)則
方法名首字母要求小寫阻桅,后面每一個單詞的首字母大寫
4凉倚、形式參數(shù)列表
形參是局部變量,且可以有多個形參嫂沉,不同的形參用“稽寒,”隔開,調(diào)用形參時實參必須與形參的數(shù)據(jù)類型相同趟章。實參列表和形參列表必須滿足數(shù)量相同杏糙,且類型對應(yīng)相同。
如果類型不同將會進(jìn)行自動數(shù)據(jù)類型轉(zhuǎn)換蚓土。
5宏侍、方法體
方法體必須由大括號括起來
方法體中的代碼必須有順序
自上而下執(zhí)行
每一個方法體必須由java語句組成,每一個java語句必須以蜀漆;結(jié)尾