国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【Java基礎(chǔ)教程】(四)程序概念篇 · 中:探索Java編程基礎(chǔ),解析各類(lèi)運(yùn)算符功能、用法及其應(yīng)用場(chǎng)景~

這篇具有很好參考價(jià)值的文章主要介紹了【Java基礎(chǔ)教程】(四)程序概念篇 · 中:探索Java編程基礎(chǔ),解析各類(lèi)運(yùn)算符功能、用法及其應(yīng)用場(chǎng)景~。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

【Java基礎(chǔ)教程】(四)程序概念篇 · 中:探索Java編程基礎(chǔ),解析各類(lèi)運(yùn)算符功能、用法及其應(yīng)用場(chǎng)景~,# Java基礎(chǔ)教程,java,開(kāi)發(fā)語(yǔ)言,jar,后端,經(jīng)驗(yàn)分享,java-ee

本節(jié)學(xué)習(xí)目標(biāo)

  • 掌握J(rèn)ava中各類(lèi)運(yùn)算符及其運(yùn)算使用;

1?? 運(yùn)算符

Java中的語(yǔ)句有很多種形式,表達(dá)式就是其中一種形式。Java中的表達(dá)式由操作數(shù)、運(yùn)算符、結(jié)果類(lèi)型和求值順序等元素組成,這些元素共同構(gòu)成了復(fù)雜的邏輯和計(jì)算過(guò)程。

  • 操作數(shù)(Operands):操作數(shù)是表達(dá)式中的值或者變量,它們可以是字面值、變量、常量或函數(shù)調(diào)用的返回值。例如,5、xtrue等都是操作數(shù);
  • 運(yùn)算符(Operators):運(yùn)算符是用于組合和操作操作數(shù)的符號(hào)。Java中有多種類(lèi)型的運(yùn)算符,包括算術(shù)運(yùn)算符(如加法 +、減法 -、乘法 * 等)、關(guān)系運(yùn)算符(如等于 ==、不等于 !=、大于 > 等)、邏輯運(yùn)算符(如與 &&、或 ||、非 ! 等)、賦值運(yùn)算符(如賦值 =、復(fù)合賦值 += 等)等;
  • 表達(dá)式的結(jié)果類(lèi)型:表達(dá)式的結(jié)果類(lèi)型可以是任意有效的Java數(shù)據(jù)類(lèi)型,包括基本數(shù)據(jù)類(lèi)型(如整數(shù)、浮點(diǎn)數(shù)、布爾值等)和引用數(shù)據(jù)類(lèi)型(如對(duì)象、數(shù)組等)。表達(dá)式的結(jié)果類(lèi)型取決于所使用的運(yùn)算符和操作數(shù)的類(lèi)型;
  • 表達(dá)式的求值順序:Java中的表達(dá)式通常按照特定的優(yōu)先級(jí)和結(jié)合性規(guī)則進(jìn)行求值。例如,多個(gè)操作符同時(shí)出現(xiàn)時(shí),按照算術(shù)運(yùn)算符優(yōu)先級(jí)的順序進(jìn)行求值。

以下面的表達(dá)式(z+100)為例,“z”與“100”都是操作數(shù),而“+”就是運(yùn)算符:

【Java基礎(chǔ)教程】(四)程序概念篇 · 中:探索Java編程基礎(chǔ),解析各類(lèi)運(yùn)算符功能、用法及其應(yīng)用場(chǎng)景~,# Java基礎(chǔ)教程,java,開(kāi)發(fā)語(yǔ)言,jar,后端,經(jīng)驗(yàn)分享,java-ee
圖1 表達(dá)式的結(jié)構(gòu)

Java提供了許多運(yùn)算符,這些運(yùn)算符除了可以處理一般的數(shù)學(xué)運(yùn)算外,還可以做邏輯運(yùn)算、地址運(yùn)算等。

根據(jù)不同的類(lèi)型,運(yùn)算符可分為賦值運(yùn)算符、算術(shù)運(yùn)算符、關(guān)系運(yùn)算符、邏輯運(yùn)算符、條件運(yùn)算符、括號(hào)運(yùn)算符等,將這些常見(jiàn)的運(yùn)算符及其基本的操作范例信息匯總?cè)缦卤恚?/p>

運(yùn)算符 類(lèi)型 示例 結(jié)果 描述
= 賦值運(yùn)算符 int x=10; x=10 為變量x賦值為數(shù)字常量10
?: 三目運(yùn)算符 int x=10>5?10:5 x=10 將兩個(gè)數(shù)字中較大的值賦予x
+ 算術(shù)運(yùn)算符 int x=20+10; x=30 加法計(jì)算
- 算術(shù)運(yùn)算符 int x=20-10; x=10 減法計(jì)算
* 算術(shù)運(yùn)算符 int x=20*10; x=200 乘法計(jì)算
/ 算術(shù)運(yùn)算符 int x=20/10; x=2 除法計(jì)算
% 算術(shù)運(yùn)算符 int x=10%3; x=1 取模(取余)計(jì)算
> 關(guān)系運(yùn)算符 boolean x=20>10; x=true 大于
< 關(guān)系運(yùn)算符 boolean x=20<10; x=false 小于
>= 關(guān)系運(yùn)算符 boolean x=20>=20; x=true 大于等于
<= 關(guān)系運(yùn)算符 boolean x=20<=20; x=true 小于等于
== 關(guān)系運(yùn)算符 booleanx=20==20; x=true 等于
!= 關(guān)系運(yùn)算符 booleanx=20!=20; x=false 不等于
++ 自增運(yùn)算符 int x=10;int y=x++*2; x=11 y=20 “++”放在變量x之后,表示先使用x計(jì)算,之后x的內(nèi)容再自增
int x=10;int y=++x*2; x=11 y=22 “++”放在變量x之前,表示先將x的內(nèi)容自增,再進(jìn)行計(jì)算
自減運(yùn)算符 int x=10;int y=x–*2; x=9 y=20 “–”放在變量x之后,先使用x計(jì)算,之后x的內(nèi)容再自減
int x=10;int y=–x*2; x=9 y=18 “–”放在變量x之前,表示先將x的內(nèi)容自減,再進(jìn)行計(jì)算
& 邏輯運(yùn)算符 boolean x=false & true; x=false AND,與,全為true時(shí)結(jié)果才為true
&& 邏輯運(yùn)算符 boolean x=false&& true; x=false 短路與,全為true結(jié)果為true
| 邏輯運(yùn)算符 boolean x=false | true; x=true OR,或,有一個(gè)為true結(jié)果為true
|| 邏輯運(yùn)算符 boolean x=false|| true; x=true 短路或,有一個(gè)為true結(jié)果為true
! 邏輯運(yùn)算符 boolean x=!false; x=true NOT,否,true變false,false變true
() 括號(hào)運(yùn)算符 int x=10*(1+2); x=30 使用()改變運(yùn)算的優(yōu)先級(jí)
& 位運(yùn)算符 int x=19&20; x=16 按位與
| 位運(yùn)算符 int x=19|20; x=23 按位或
^ 位運(yùn)算符 int x=19^20; x=7 異或(相同為0,不同為1)
~ 位運(yùn)算符 int x=~19; x=-20 取反
<< 位運(yùn)算符 int x=19<<2; x=76 左移位
>> 位運(yùn)算符 int x=19>>2; x=4 右移位
>>> 位運(yùn)算符 int x=19>>>2; x=4 無(wú)符號(hào)右移位
+= 復(fù)合賦值運(yùn)算符 a+=b - a+b的值存放到a中(a=a+b)
-= 復(fù)合賦值運(yùn)算符 a-=b - a-b的值存放到a中(a=a-b)
*= 復(fù)合賦值運(yùn)算符 a*=b - ab的值存放到a中(a=ab)
/= 復(fù)合賦值運(yùn)算符 a/=b - a/b的值存放到a中(a=a/b)
%= 復(fù)合賦值運(yùn)算符 a%=b - a%b的值存放到a中(a=a%b)

需要注意的是,在Java中不同的運(yùn)算符具有不同的優(yōu)先級(jí)。當(dāng)一個(gè)表達(dá)式中存在多個(gè)運(yùn)算符時(shí),優(yōu)先級(jí)較高的運(yùn)算符會(huì)先于優(yōu)先級(jí)較低的運(yùn)算符進(jìn)行計(jì)算。將各運(yùn)算符的優(yōu)先級(jí)信息匯總?cè)缦卤恚?/p>

優(yōu)先級(jí) 運(yùn)算符 類(lèi)型 結(jié)合順序
1 () 括號(hào)運(yùn)算符 由左至右
1 [] 方括號(hào)運(yùn)算符 由左至右
2 !(非)、+(正號(hào))、-(負(fù)號(hào)) 一元運(yùn)算符 由右至左
2 ~(取反) 位運(yùn)算符 由右至左
2 ++、– 自增、自減運(yùn)算符 由右至左
3 *、/、% 算術(shù)運(yùn)算符 由左至右
4 +、- 算術(shù)運(yùn)算符 由左至右
5 <<、>> 位左移、位右移運(yùn)算符 由左至右
6 >、>=、<、<= 關(guān)系運(yùn)算符 由左至右
7 ==、!= 關(guān)系運(yùn)算符 由左至右
8 &(AND,與) 位運(yùn)算符 由左至右
9 ^(XOR,異或) 位運(yùn)算符 由左至右
10 |(OR,或) 位運(yùn)算符 由左至右
11 && 邏輯運(yùn)算符 由左至右
12 || 邏輯運(yùn)算符 由左至右
13 ?: 三目運(yùn)算符 由右至左
14 =、+=、-=、*=… 賦值運(yùn)算符 由右至左

如果表達(dá)式中含有相同優(yōu)先級(jí)的運(yùn)算符,則會(huì)按照表格所示結(jié)合性規(guī)則(從左到右或從右到左)進(jìn)行求值。此外,使用括號(hào)可以改變運(yùn)算符的默認(rèn)優(yōu)先級(jí),確保表達(dá)式按照所需順序進(jìn)行計(jì)算。

而從實(shí)際運(yùn)用來(lái)講,這些運(yùn)算符的優(yōu)先級(jí)沒(méi)有必要專(zhuān)門(mén)去記,熟能生巧,也建議讀者在必要時(shí)可以使用“()”去改變優(yōu)先級(jí)。

需要注意在實(shí)際運(yùn)用時(shí),不要寫(xiě)太過(guò)復(fù)雜的運(yùn)算操作。比如以下類(lèi)似的代碼:

//	案例1:不建議的代碼
public class TestDemo{
	public static void main(String args[]){
		int numA=10;
		int numB=20;
		int result=numA*2numB*numA+++numBnumA+numB;
		System.out.println(result);
	}
}

程序執(zhí)行結(jié)果:

-143

雖然以上程序可以得到最終的計(jì)算結(jié)果,但是如此復(fù)雜的運(yùn)算代碼,代碼的可讀性和可維護(hù)性就變得太差了,可能其他的同事或領(lǐng)導(dǎo)看到都想叼人了,所以在編寫(xiě)程序的時(shí)候,應(yīng)該本著編寫(xiě)“簡(jiǎn)單代碼”的原則,而像本程序這樣的代碼盡量不要去編寫(xiě)。

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

關(guān)系運(yùn)算符的主要功能是進(jìn)行數(shù)據(jù)的大小關(guān)系比較,返回的結(jié)果是boolean型數(shù)據(jù)(只有true、false兩種取值),常用的關(guān)系運(yùn)算符有:大于(>)、大于等于(>=)、小于(<)、小于等于(<=)、等于(==)、不等于(!=)。

//	案例2:使用關(guān)系運(yùn)算符
public class TestDemo{
	public static void main(String args[]){
		System.out.println("3>1=" + (3>1));		//使用大于號(hào)
		System.out.println("3<1=" + (3<1));		//使用小于號(hào)
		System.out.println("3>=1=" + (3>=1));	//使用大于等于號(hào)
		System.out.println("3<=1=" + (3<=1));	//使用小于等于號(hào)
		System.out.println("3==1=" + (3==1));	//使用等于號(hào)
		System.out.println("3!=1="+(3!=1));		//使用不等于號(hào)
	}
}

程序執(zhí)行結(jié)果:

3>1=true
3<1=false
3>=1=true
3<=1=false
3==1=false
3!=1=true

此程序演示了各種關(guān)系運(yùn)算符的使用,考慮到運(yùn)算符的優(yōu)先級(jí)問(wèn)題,使用了“()”運(yùn)算符先進(jìn)行關(guān)系運(yùn)算,避免字符串直接拼接出現(xiàn)錯(cuò)誤的結(jié)果。而對(duì)于關(guān)系運(yùn)算符的使用往往是結(jié)合后續(xù)的分支、循環(huán)等程序邏輯控制語(yǔ)句一同進(jìn)行使用。

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

算術(shù)運(yùn)算符在開(kāi)發(fā)中經(jīng)常使用到,例如,進(jìn)行四則運(yùn)算、求模(取余)、自增等操作。

//	案例3:使用四則運(yùn)算
public class TestDemo{
	public static void main(String args[]){
		int numA=10;
		int numB=20;
		System.out.println("加法計(jì)算:"+(numA+numB));
		System.out.println("減法計(jì)算:"+(numA-numB));
		System.out.println("乘法計(jì)算:"+(numA*numB));
		System.out.println("除法計(jì)算:"+(numA/(double)numB));
	}
}

程序執(zhí)行結(jié)果:

加法計(jì)算:30
減法計(jì)算:-10
乘法計(jì)算:200
除法計(jì)算:0.5

四則運(yùn)算符的基本操作就是“+”、“-”、“*”、“/”,在程序中進(jìn)行除法計(jì)算時(shí),考慮到計(jì)算的精度問(wèn)題,所以將其中一個(gè)int型變量強(qiáng)制轉(zhuǎn)換為了double型變量。而“”也是在開(kāi)發(fā)之中較為常見(jiàn)的計(jì)算,所謂的“”實(shí)際上就是余數(shù)的概念,例如:10÷3的結(jié)果是商3余1,其中余數(shù)1就是“”,對(duì)于求模,可以使用“%”運(yùn)算符。

//	案例4:使用求模計(jì)算
public class TestDemo{
	public static void main(String args[]){
		int numA=10;
		int numB=3;
		System.out.println(numA % numB);
	}
}

程序執(zhí)行結(jié)果:

1

本程序分別定義了兩個(gè)int型變量,隨后使用“%”進(jìn)行了求模計(jì)算,最終的結(jié)果就是1。

雖然Java提供了四則運(yùn)算操作,但是為了簡(jiǎn)化用戶(hù)的編寫(xiě),在運(yùn)算符里面又提供了一些簡(jiǎn)化的復(fù)合賦值運(yùn)算符:*=/=、+=-=、%=,這些運(yùn)算符表示參與運(yùn)算后直接進(jìn)行賦值操作,下面來(lái)看一個(gè)具體的代碼。

//	案例5:使用復(fù)合賦值運(yùn)算符
public class TestDemo{
	public static void main(String args[]){
		int num=10;
		num*=2;//等價(jià):num=num*2;
		System.out.println(num);
	}
}

程序執(zhí)行結(jié)果:

20

此程序使用了“num*=2”語(yǔ)句替代了“num=num*2”的語(yǔ)句,相比較后者,代碼的長(zhǎng)度更加簡(jiǎn)短。

而還有一類(lèi)運(yùn)算符是“++”(自增)、“--”(自減),它根據(jù)位置不同,執(zhí)行的順序也不同。

  • 前置用法:++變量、--變量:先在前面表示的是先進(jìn)行變量?jī)?nèi)容的自增1或自減1,再使用變量進(jìn)行數(shù)學(xué)計(jì)算;
  • 后置用法:變量++、變量--:先使用變量?jī)?nèi)容進(jìn)行計(jì)算,而后再實(shí)現(xiàn)自增或自減的操作。
//	案例6:使用前置自增
public class TestDemo{
	public static void main(String args[]){
		int numA=10;	//定義整型變量
		int	numB=20;
		//“++”寫(xiě)在變量前面,表示先對(duì)numA的變量?jī)?nèi)容加1
		//而后使用處理后的numA變量的內(nèi)容+numB變量的內(nèi)容
		int result=++numA+numB;
		System.out.println("numA=" + numA);
		System.out.println("result="+result);
	}
}

程序執(zhí)行結(jié)果:

numA=11
result=31

本程序中 “int result=++numA+numB;”,語(yǔ)句使用了“++numA”,表示在與numB進(jìn)行加法計(jì)算時(shí),首先先對(duì)numA的變量?jī)?nèi)容進(jìn)行自增1的操作,即執(zhí)行完“++numA”之后,numA的內(nèi)容首先變?yōu)?code>11,然后利用11這個(gè)值與numB變量的20進(jìn)行計(jì)算,最終的結(jié)果就是31

//	案例7:使用后置自增
public class TestDemo{
	public static void main(String args[]){
		int numA=10;	//定義整型變量
		int	numB=20;
		//“++”寫(xiě)在后面,表示先使用numA的內(nèi)容進(jìn)行加法計(jì)算
		//而加法計(jì)算完成之后再對(duì)numA的內(nèi)容進(jìn)行自增
		int result = numA+++numB;
		System.out.println("numA=" + numA);
		System.out.println("result=" + result);
	}
}

程序執(zhí)行結(jié)果:

numA=11
result=30

此程序與前一程序的區(qū)別在于“++”出現(xiàn)的位置,在計(jì)算中由于“++”在numA的后面(numA+++numB),所以表示先使用numA當(dāng)前的內(nèi)容與numB進(jìn)行加法計(jì)算,再進(jìn)行自己的自增1操作,所以最終的計(jì)算結(jié)果為30。

1.3 三目運(yùn)算符

三目是一種賦值運(yùn)算的形式,執(zhí)行三目時(shí)可以以一個(gè)布爾表達(dá)式的結(jié)果進(jìn)行賦值,基本的語(yǔ)法結(jié)構(gòu)如下。

數(shù)據(jù)類(lèi)型變量 = 布爾表達(dá)式 ? 滿(mǎn)足此表達(dá)式時(shí)設(shè)置的內(nèi)容:不滿(mǎn)足此表達(dá)式時(shí)設(shè)置的內(nèi)容;
//	案例8:使用三目運(yùn)算符實(shí)現(xiàn)賦值
public class TestDemo(
	public static void main(String args[){
		int numA=10;  // 定義int型變量
		int numB=20;
		//如果numA 大于numB, 返回 true,則將numA 的內(nèi)容賦值給max
		//如果numA 小于numB, 返回 false,則將numB 的內(nèi)容賦值給max
		int max= numA>numB ? numA:numB;
		System.outprintln(max);
	}
}

程序執(zhí)行結(jié)果:

20

此程序主要是判斷 numAnumB 哪個(gè)變量的內(nèi)容較大 (numA > numB), 如果此時(shí)的判斷條件成立,則表示使用 numA 的變量?jī)?nèi)容為 max 變量賦值,反之,則使用 numB 的變量?jī)?nèi)容為max 變量賦值。

對(duì)于上面案例的操作,實(shí)際上也可以不使用三目運(yùn)算符完成,可以通過(guò)編寫(xiě)如下形式的判斷體語(yǔ)句完成:

//	案例9:利用判斷語(yǔ)句實(shí)現(xiàn)三目運(yùn)算的功能
public class TestDemo{
	public static void main(String args[]){
		int numA=10;
		int numB=20;
		int max=0;
		//用if語(yǔ)句替代:int
		if(numA>numB){ // 如果numA 的內(nèi)容大于numB,max 變量的內(nèi)容為numA 的內(nèi)容
			max=numA;
		}else{		//如果numA 的內(nèi)容小于numB,max 變量的內(nèi)容為numB 的內(nèi)容
			max=numB;
		}
		System.out.println(max);
	}
}

程序執(zhí)行結(jié)果:

20

此程序使用一個(gè)分支語(yǔ)句的形式替代了三目運(yùn)算符的使用,但可以發(fā)現(xiàn)的是使用三目運(yùn)算的賦值操作要明顯比 if….else分支語(yǔ)句的判斷賦值代碼更簡(jiǎn)單。

1.4 邏輯運(yùn)算

邏輯運(yùn)算一共包含3種:與(多個(gè)條件一起滿(mǎn)足)、或(多個(gè)條件有一個(gè)滿(mǎn) 足)、非(使用“!”操作,可以實(shí)現(xiàn) true 變 false 以及 false 變 true 的結(jié)果轉(zhuǎn)換), 而與和或操作的真值表,如下表所示:

條件1 條件2 &、&&(與)結(jié)果 |、||(或)結(jié)果
true true true true
true false false true
false true false true
false false false false

1.4.1 與操作

與操作表示將若干個(gè)條件一起進(jìn)行連接判斷,同時(shí)滿(mǎn)足返回 true,有一個(gè)不滿(mǎn)足返回 false,對(duì)于與 操作有兩種運(yùn)算符:&(普通與)、&&(短路與)。

//	案例10:使用普通與“&”
public class TestDemo {
	public static void main(String args[]){
		if ((1!=2)&(10%2==0){     // 使用普通與判斷多個(gè)條件
			System.out.printIn("Hello World!");
		}
	}
}

程序執(zhí)行結(jié)果:

Hello World!

程序邏輯:

【Java基礎(chǔ)教程】(四)程序概念篇 · 中:探索Java編程基礎(chǔ),解析各類(lèi)運(yùn)算符功能、用法及其應(yīng)用場(chǎng)景~,# Java基礎(chǔ)教程,java,開(kāi)發(fā)語(yǔ)言,jar,后端,經(jīng)驗(yàn)分享,java-ee
圖2 案例程序執(zhí)行邏輯

此程序最后輸出了字符串,說(shuō)明&的表達(dá)式中的結(jié)果值都為true,而現(xiàn)在有一種情況是,如果前面的條件已經(jīng)返回了 false,后面不管有多少個(gè) true, 按照與操作的 定義,最終的結(jié)果還是false,那么完全沒(méi)有必要進(jìn)行后續(xù)的判斷,所以可以使用短路與進(jìn)行操作:

//	案例11:使用短路與(&&)
public class TestDemo {
	public static void main(String args[]){
		if  ((1 ==2)&&(10/0==0)){
			System.out.printin("Hello World!");
		}
	}
}

程序執(zhí)行結(jié)果: 正常結(jié)束。
程序邏輯:

【Java基礎(chǔ)教程】(四)程序概念篇 · 中:探索Java編程基礎(chǔ),解析各類(lèi)運(yùn)算符功能、用法及其應(yīng)用場(chǎng)景~,# Java基礎(chǔ)教程,java,開(kāi)發(fā)語(yǔ)言,jar,后端,經(jīng)驗(yàn)分享,java-ee
圖3 案例程序執(zhí)行邏輯

注意此程序不會(huì)因?yàn)?code>(10/0==0)而報(bào)錯(cuò),因?yàn)榍懊娴臈l件返回了false(“1== 2”的結(jié)果為false),所以后面的所有判斷都沒(méi)有繼續(xù)執(zhí)行到,所以最終的結(jié)果只會(huì)是false, 而如果此時(shí)使用的是&而非&&則會(huì)導(dǎo)致報(bào)錯(cuò),此處不再做更多演示。

1.4.2 或操作

或操作是若干個(gè)條件一起判斷,其中只要有一個(gè)返回 true, 結(jié)果就是 true, 只有都返回 false 的時(shí)候結(jié)果才是 false, 或操作有兩種運(yùn)算: |||。

//	案例12:使用普通或操作(|)
public class TestDemo(
	public static void main(String args[])(
		if((1==1)|(10/0==0)){
			System.out.println("Hello World !");
		}
	}
}

程序運(yùn)行結(jié)果:

Exception  in  thread"main"java.lang.ArithmeticException:/  by  zero at TestDemo.main(TestDemo.java:3)

此程序中使用普通或“|”操作,但在程序運(yùn)行的時(shí)候出現(xiàn)了異常,即程序中給出的兩個(gè)判斷條件都執(zhí)行了:

【Java基礎(chǔ)教程】(四)程序概念篇 · 中:探索Java編程基礎(chǔ),解析各類(lèi)運(yùn)算符功能、用法及其應(yīng)用場(chǎng)景~,# Java基礎(chǔ)教程,java,開(kāi)發(fā)語(yǔ)言,jar,后端,經(jīng)驗(yàn)分享,java-ee
圖4 案例程序執(zhí)行邏輯

通過(guò)程序發(fā)現(xiàn),使用普通或操作的過(guò)程中,即使前面的條件滿(mǎn)足了,后面的也會(huì)進(jìn)行正常的判斷,而或運(yùn)算中,只要有一個(gè)為 true, 那么最終的結(jié)果就一定是 true, 所以對(duì)于后面的判斷似乎沒(méi)有任何意義,因?yàn)椴还芊祷厥呛畏N結(jié)果都不會(huì)影響最終的結(jié)果—true, 下面使用短路或(||) 來(lái)調(diào)整程序。

//	案例13:使用短路或操作(||)
public class TestDemo(
	public static void main(String args[]){
		if((1==1)||(10/0==0)){	
			System.out printIn("Hello World!");
		}
	}
}

程序執(zhí)行結(jié)果:正常結(jié)束。

可以發(fā)現(xiàn),前面的條件(1== 1)滿(mǎn)足了就會(huì)返回 true, 不管后面是何條件最終的結(jié)果都是true, 所以后面的表達(dá)式不再執(zhí)行,程序也沒(méi)有任何異常產(chǎn)生。程序邏輯如下:

【Java基礎(chǔ)教程】(四)程序概念篇 · 中:探索Java編程基礎(chǔ),解析各類(lèi)運(yùn)算符功能、用法及其應(yīng)用場(chǎng)景~,# Java基礎(chǔ)教程,java,開(kāi)發(fā)語(yǔ)言,jar,后端,經(jīng)驗(yàn)分享,java-ee
圖5 案例程序執(zhí)行邏輯

需要注意的是,在實(shí)際生產(chǎn)應(yīng)用編寫(xiě)代碼的過(guò)程中考慮到性能問(wèn)題,都會(huì)優(yōu)先考慮短路與和短路或操作。

1.4.3 非操作

非就是針對(duì)布爾結(jié)果進(jìn)行求反。

//	案例14:使用非操作(!)
public class TestDemo {
	public static void main(String args[]){
		boolean flag = true;                          //定義布爾型變量
		System.out.println(!flag);                  //對(duì)變量結(jié)果進(jìn)行非操作
	}
}

程序執(zhí)行結(jié)果:

false

非操作的主要功能是進(jìn)行布爾結(jié)果的轉(zhuǎn)換,由于程序中定義的 flag 變量的內(nèi)容為 true, 所以經(jīng)過(guò) 非處理之后其結(jié)果變?yōu)?false

1.5 位運(yùn)算

位運(yùn)算在Java 中有:&、|、^、>>、<<、>>>, 而所有的位運(yùn)算都是采用 二進(jìn)制數(shù)據(jù)進(jìn)行操作的。

Java 定義的位運(yùn)算(bitwise operators)直接對(duì)整數(shù)類(lèi)型的位進(jìn)行操作,這些整數(shù)類(lèi)型包括 long,int,short,char 和 byte。
位運(yùn)算符主要用來(lái)對(duì)操作數(shù)二進(jìn)制的位進(jìn)行運(yùn)算,按位運(yùn)算表示按每個(gè)二進(jìn)制位(bit)進(jìn)行計(jì)算,其操作數(shù)和運(yùn)算結(jié)果都是整型值。

Java 語(yǔ)言中的位運(yùn)算符分為位邏輯運(yùn)算符和位移運(yùn)算符兩類(lèi):
(1)位邏輯運(yùn)算符包含 4 個(gè):&(與)、|(或)、~(非)和 ^(異或)
(2)位移運(yùn)算符包含3個(gè):<< 位左移、>> 位右移、>>> 無(wú)符號(hào)右移

??位運(yùn)算規(guī)則

Java 定義的位運(yùn)算直接對(duì)整數(shù)類(lèi)型的位進(jìn)行操作,運(yùn)算時(shí)會(huì)先將十進(jìn)制數(shù)據(jù)變?yōu)槎M(jìn)制數(shù)據(jù)。而十進(jìn)制和二進(jìn)制之間的數(shù)據(jù)轉(zhuǎn)換規(guī)則如下:

十進(jìn)制數(shù)據(jù)變?yōu)槎M(jìn)制數(shù)據(jù)的原則為:數(shù)據(jù)除2取余,隨后倒著排列。例如:25 的二進(jìn)值為11001,但是由于Java的int型數(shù)據(jù)為32位,所以實(shí)際上最終的數(shù)據(jù) 為:“0000000000000000000000000011001”。轉(zhuǎn)變過(guò)程如下圖:

【Java基礎(chǔ)教程】(四)程序概念篇 · 中:探索Java編程基礎(chǔ),解析各類(lèi)運(yùn)算符功能、用法及其應(yīng)用場(chǎng)景~,# Java基礎(chǔ)教程,java,開(kāi)發(fā)語(yǔ)言,jar,后端,經(jīng)驗(yàn)分享,java-ee


然后再將二進(jìn)制原碼轉(zhuǎn)成二進(jìn)制補(bǔ)碼,之后再正式進(jìn)行運(yùn)算。其中需要注意的點(diǎn)有:

  • 正數(shù)的原碼,反碼和補(bǔ)碼都一樣;
  • 負(fù)數(shù)的反碼:符號(hào)位保持不變,其他位取反;
  • 負(fù)數(shù)的補(bǔ)碼:反碼 + 1;
  • 最高位為符號(hào)位,0表示正數(shù),1表示負(fù)數(shù);
  • 0的反碼和補(bǔ)碼都是0。

1.5.1 位與運(yùn)算

//	案例15:使用位與操作
public class TestDemo{
	public static void main(String args[]){
		int numA= 9;                                           //定義整型變量
		int numB=11;                                         //定義整型變量
		System.out.println(numA & numB);//位與操作
	}
}

程序執(zhí)行結(jié)果:

9

計(jì)算過(guò)程分析:
9的二進(jìn)制: 00000000000000000000000000001001
11的二進(jìn)制:00000000000000000000000000001011
&”結(jié)果: 00000000000000000000000000001001 轉(zhuǎn)換為十進(jìn)制是: 9

1.5.2 位或運(yùn)算

//	案例16:使用位或操作
public class TestDemo {
	public static void main(String args[]){
		int numA =9;                                           //定義整型變量
		int numB=11;                                         //定義整型變量
		System.out.println(numA  |  numB);    // 位或操作
	}
}

程序執(zhí)行結(jié)果:

11

計(jì)算過(guò)程分析:
9的二進(jìn)制:00000000000000000000000000001001
11的二進(jìn)制: 00000000000000000000000000001011
|”結(jié)果: 00000000000000000000000000001011 轉(zhuǎn)換為十進(jìn)制是: 11


?? 總結(jié)

本文介紹了Java中常見(jiàn)的各類(lèi)運(yùn)算符,包括一元運(yùn)算符、算術(shù)運(yùn)算符、移位運(yùn)算符、關(guān)系運(yùn)算符、相等運(yùn)算符、位運(yùn)算符、邏輯運(yùn)算符、條件運(yùn)算符和賦值運(yùn)算符等等。每種運(yùn)算符都有其特定的運(yùn)算方式和特征,可以應(yīng)用于不同的場(chǎng)景。

運(yùn)算符類(lèi)型 作用 應(yīng)用場(chǎng)景
一元運(yùn)算符 用于對(duì)單個(gè)操作數(shù)進(jìn)行操作,例如邏輯非、求反以及自增和自減等 在控制流語(yǔ)句和邏輯判斷中非常有用
算術(shù)運(yùn)算符 支持基本的數(shù)學(xué)運(yùn)算,如加法、減法、乘法和除法等 用于處理數(shù)字計(jì)算和相關(guān)算術(shù)問(wèn)題
移位運(yùn)算符 可對(duì)二進(jìn)制數(shù)據(jù)進(jìn)行位級(jí)操作,包括左移、帶符號(hào)右移和無(wú)符號(hào)右移 用于編碼、解碼和處理位模式數(shù)據(jù)
關(guān)系運(yùn)算符 用于比較兩個(gè)操作數(shù)的大小關(guān)系,例如小于、大于、小于等于和大于等于 用于判斷條件和排序問(wèn)題
相等運(yùn)算符 用于判斷兩個(gè)操作數(shù)是否相等或不相等 在條件判斷和對(duì)象比較等方面非常有用
位運(yùn)算符 用于對(duì)整數(shù)類(lèi)型的二進(jìn)制數(shù)據(jù)進(jìn)行位級(jí)操作,包括位與、位或和位異或等 在處理位標(biāo)志、掩碼和位操作等方面非常常見(jiàn)
邏輯運(yùn)算符 用于對(duì)布爾值進(jìn)行邏輯運(yùn)算,包括邏輯與、邏輯或和邏輯非等 用于條件判斷和邏輯表達(dá)式求值
條件運(yùn)算符 是Java中唯一的三元運(yùn)算符用于根據(jù)條件的結(jié)果選擇執(zhí)行不同的操作 經(jīng)常用于編寫(xiě)替換簡(jiǎn)單的if-else語(yǔ)句
賦值運(yùn)算符 用于將右側(cè)的值賦給左側(cè)的變量,并支持一些復(fù)合賦值運(yùn)算符的使用 在數(shù)值計(jì)算和變量操作中非常頻繁

在編寫(xiě)復(fù)雜的Java程序時(shí),了解各類(lèi)運(yùn)算符的運(yùn)算方式、特征以及運(yùn)算符優(yōu)先級(jí)是至關(guān)重要的。正確地應(yīng)用運(yùn)算符可以簡(jiǎn)化代碼邏輯,提高程序的效率和可讀性。

通過(guò)本文所提供的應(yīng)用場(chǎng)景案例,讀者可以進(jìn)一步理解不同運(yùn)算符的實(shí)際應(yīng)用。掌握這些運(yùn)算符的用法將幫助開(kāi)發(fā)人員更好地處理問(wèn)題并設(shè)計(jì)出更高效的算法。


? 溫習(xí)回顧上一篇(點(diǎn)擊跳轉(zhuǎn))《【Java基礎(chǔ)教程】(三)程序概念篇 · 上:探索Java編程基礎(chǔ),注釋、標(biāo)識(shí)符、關(guān)鍵字、數(shù)據(jù)類(lèi)型~》
? 繼續(xù)閱讀下一篇(點(diǎn)擊跳轉(zhuǎn))《【Java基礎(chǔ)教程】(五)程序概念篇 · 下:夯實(shí)基礎(chǔ)!全面解析Java程序的邏輯控制體:順序、選擇與循環(huán)結(jié)構(gòu)~》


本文部分案例及圖片來(lái)源:
《第一行代碼JAVA》文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-528180.html

【Java基礎(chǔ)教程】(四)程序概念篇 · 中:探索Java編程基礎(chǔ),解析各類(lèi)運(yùn)算符功能、用法及其應(yīng)用場(chǎng)景~,# Java基礎(chǔ)教程,java,開(kāi)發(fā)語(yǔ)言,jar,后端,經(jīng)驗(yàn)分享,java-ee

到了這里,關(guān)于【Java基礎(chǔ)教程】(四)程序概念篇 · 中:探索Java編程基礎(chǔ),解析各類(lèi)運(yùn)算符功能、用法及其應(yīng)用場(chǎng)景~的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶(hù)投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包