国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發(fā)設計 > 正文

Unit6 運算符與表達式

2019-11-08 01:42:43
字體:
供稿:網(wǎng)友

Unit6 運算符與表達式

1、運算符2、表達式3、語句

程序是由許多語句組成,而語句組成的基本單位就是表達式與運算符。java中的運算符主要分為4類:算術運算符、關系運算符、邏輯運算符和位運算符。

運算符:進行運算符的符號。

表達式:運算符+操作數(shù)。

1  運算符

1.1   賦值運算符

為不同類型的變量賦值,就需要用到賦值運算符“=”,將等號右邊的值賦給等號左邊的變量,注意:賦值的數(shù)據(jù)類型要左右一致或左側(cè)接收值變量的類型等級要比值類型的等級高。

//賦值運算符       int num = 100 ;//將100賦值給int類型的num變量       byte num2 = 100 ; //將100賦值給byte類型的num2變量	num= num2;//雖然不是一類型,但是num變量表示范圍比num2范圍大,所以可以接收num2的值

1.2   一元運算符

使用一個運算符完成對操作數(shù)本身的運算,稱為一元運算符。

l  +:正號

      num3 = +num3;//+正號,值為4

l  -:負號

	num3 = -num3;//-:負號值為-4

 

l  !:NOT 非

      boolean boo = !true; //!:取反 NOT 非  值為false 只能操作boolean類型      num3 = !num3;//使用在int類型上報錯

 

l  ~:對補碼按位取反

	byte num4 = 4;	num4 = (byte)~num4;//4的原碼為:0000 0100 補碼與原碼一樣然后按位取反:1111 1011 值為-5  為什么對補碼取反?	在計算機中,存儲的數(shù)據(jù)是二進制格式,負數(shù)是以補碼的形式存儲。所以任何負數(shù)的位運算,都是對補碼的運算。 

l  ++:自增,對自身的值+1

	/*       * 在對數(shù)值進行操作時(包括賦值運算、打印操作、傳參操作),自增符號++在前時,       *先對數(shù)值本身進行+1操作,再執(zhí)行其他操作,++在后時,先執(zhí)行其他操作,再對數(shù)值本身進行+1操作       */      byte num5 = 10;      num5 = num5++;      System.out.PRintln(num5);//打印結果為10      byte num6 = 10;      num6 = ++num6;      System.out.println(num6);//打印結果為11

 

l  --:自減

	/*       * 在對數(shù)值進行操作時(包括賦值運算、打印操作、傳參操作),自減符號--在前時,       *先對數(shù)值本身進行-1操作,再執(zhí)行其他操作,--在后時,先執(zhí)行其他操作,再對數(shù)值本身進行-1操作       */      byte num7 = 10;      num7 = num7--;      System.out.println(num7);//打印結果為10      byte num8 = 10;      num8 = --num8;      System.out.println(num8);//打印結果為9

l  注意事項:

            

      byte num9 = 10;      num9 = num9 +1;//報錯,因為num9是byte類型,1是整數(shù)類型,需要強制轉(zhuǎn)換一下      num9= num9++;//不報錯,是因為是在其本身進行一個自我的遞增操作,java底層代碼內(nèi)部實現(xiàn) 

1.3   算術運算符

數(shù)值與數(shù)值之間的基本運算:+、-、*、/、%。

   

    

   //算術運算符       int num10 = 10;       num10 = num10+ 10;//這里的"+"表示加法運算。       System.out.println("結果為:"+num10);//打印結果20,+字符串與數(shù)字連接表示連接符,連接的數(shù)字被轉(zhuǎn)為字符串。       int num11 = 10;       num11 = num11- 10;//這里的"-"表示減法運算。       System.out.println("結果為:"+num11);//打印結果0       int num12 = 10;       num12 = num12* 10;//這里的"*"表示乘法運算。       System.out.println("結果為:"+num12);//打印結果100       int num13 = 13;       num13 = num13/ 10;//這里的"/"表示除法運算,如果是整數(shù)類型運算,就是整除。需要保留小數(shù)位,則將參與運算的操作數(shù)轉(zhuǎn)為浮點型,并且以浮點型變量來接收。       num3 = numf / num2;       System.out.println("結果為:"+num13);//打印結果3       int num14 = 14;       num14 = num14% 10;//這里的"%"表示取余數(shù)運算。通過判斷運算結果,可以知道一個是是否可以被另一個數(shù)整除       System.out.println("結果為:"+num14);//打印結果4       //注意,當進行除法時,需要保留小數(shù)位,運算式中,必須有浮點型數(shù)據(jù)參與運算。       float num15 = (float)num15/4;//int類型14除以浮點型4,自動將結果轉(zhuǎn)為浮點型,或者使用強制轉(zhuǎn)換       System.out.println(num15);//打印結果:3.75       float num16 = 4 * 4;//當進行乘法運算時,int類型的結果可以自動轉(zhuǎn)為float類型	System.out.println(num16);//打印結果16.0	float num17 = 15.15f;//如果不包含小數(shù)位以后的數(shù)字,那么寫不寫f都可以,為什么??        System.out.println(num17 % 10);//結果為5.1499996,浮點型也可以進行取余數(shù)運算

      

 

1.4   邏輯運算符

邏輯運算符只對boolean數(shù)據(jù)類型操作數(shù)進行運算,參與運算的數(shù)據(jù)與返回的數(shù)據(jù)類型都是boolean類型。(true或false)

&、&&:“與”運算符兩邊值都是true,結果則為true。(真真為真)

|、||:“或”運算符兩邊有一個值為true,結果則為true。(有真則真)

!:“非”運算符,對數(shù)據(jù)值進行取反。

	//&、&&真真為真     System.out.println(true&true);//true     System.out.println(true&false);//false     System.out.println(false&false);//false     System.out.println(true&&true);//true     System.out.println(true&&false);//false     System.out.println(false&&false);//false     //|、||有真則真     System.out.println(true|true);//true     System.out.println(true|false);//true     System.out.println(false|false);//false     System.out.println(true||true);//true     System.out.println(true||false);//true     System.out.println(false||false);//false     //取反	System.out.println(!true);//false

          &&、||和&、|的區(qū)別:當使用這兩個運算符運算時,當運算符左邊的結果已經(jīng)起到?jīng)Q定性作用時,就不會再去判斷運算符右側(cè)的數(shù)值。

        

  	//&&、||的區(qū)別:       int num18 = 10;       int num19 = 20;       boolean boo1 = ++num18==18&--num19==19;//當num18==18結果已經(jīng)為flase時候,還會去執(zhí)行右邊的操作       System.out.println("結果"+boo1+"---num18的值為:"+num18+"----num19的值為:"+num19);       int num20 = 10;       int num21 = 20;       boolean boo2 =++num20==20&&--num21==19;//當num==20結果已經(jīng)為flase時候,就不再去執(zhí)行右邊的操作       System.out.println("結果"+boo2+"---num20的值為:"+num20+"----num21的值為:"+num21);             int num22 = 10;       int num23 = 20;       boolean boo3 =++num22==11|--num23==19;//當num22==11結果已經(jīng)為true時候,還會去執(zhí)行右邊的操作       System.out.println("結果"+boo3+"---num22的值為:"+num22+"----num23的值為:"+num23);       int num24 = 10;       int num25 = 20;       boolean boo4 =++num24==11||--num25==19;//當num24==11結果已經(jīng)為ture時候,就不再去執(zhí)行右邊的操作       System.out.println("結果"+boo4+"---num24的值為:"+num24+"----num25的值為:"+num25);

1.5   位運算符

對操作數(shù)的二進制數(shù)據(jù)的補碼按位進行運算操作。

l  >>:右移;

	//位運算      //>>:右移      int num26 = 16;	System.out.println(num26>>1);//結果:8      System.out.println(num26>>2);//結果:4      System.out.println(num26>>3);//結果:2      System.out.println(num26>>4);//結果:1      System.out.println(num26>>5);//結果:0      /*       *規(guī)律:向右每移動一位相當于在上一次一動基礎上除以2,右移n次為:num26/2^n,空出來的部分正數(shù)補0,負數(shù)補1       *代碼分析:       *16:0000 0000 0000 0000 0000 0000 0001 0000 向右移動2位:0000 0000 0000 0000 0000 0000 0000 0010 結果為4       *思考:負數(shù)右移結果?       *-16>>2=? 1000 0000 0000 0000 0000 00000001 0000 向右一動2位:0010 00000000 0000 0000 0000 0000 0010 結果為:536,870,914       *應該按照存儲的數(shù)據(jù)來運算,即補碼運算:1111 1111 1111 1111 1111 1111 1111 0000 向右移動2位:1111 1111 1111 1111 1111 1111 1111 1100       */      System.out.println(-16>>2);//結果為:-4 1111 1111 1111 1111 1111 1111 1111 1100 

l  <<左移;

	//<<:左移      int num27 = 3;      System.out.println(num27<< 1);//結果:6      System.out.println(num27<< 2);//結果:12      System.out.println(num27<< 3);//結果:24      System.out.println(num27<< 4);//結果:48      System.out.println(num27<< 5);//結果:96      //規(guī)律:向左移動一位,相當于在原有的基礎上乘以2,高位拋棄,低位補0,左移n次為:num27*2^n      System.out.println(-3<< 2);//結果為:-12 11111111111111111111111111110100

     

l  >>>:無符號右移;

    

  	//無符號右移,高位補零,低位舍去      //也就是說,正數(shù)無符號右移和正數(shù)的右移是一樣的      //越大的負數(shù)的無符號右移是一個越大的正數(shù)           int num28 = -16;      System.out.println(-4>>> 2);//變?yōu)檎龜?shù)      System.out.println(8>>> 2);//與右移一致

     

 

l  &:與 AND;

	//&:與運算,兩個二進制數(shù)按位運算,都為1,則該位結果為1,否則為0(一一得一)    System.out.println(5 &6);//0000 0101 & 0000 0110 = 0000 0100 結果為:4

l  |:或 OR;

     

 //|:或運算,兩個二進制數(shù)按位運算,有1,則為1,都為0,才是0 (有一得一)      System.out.println(5 | 6);//0000 0101 | 0000 0110 = 0000 0111結果為:7

l  ^:異或 XOR;

      //^:異或運算,兩個二進制數(shù)按位運算,不一樣,則為1,一樣則為0(一零得一)      System.out.println(5 ^ 6);//0000 0101 ^ 0000 0110 = 0000 0011結果為:3	//一個數(shù),異或一個數(shù)字兩次,還是原來的數(shù)字。

l  ~:按位取反 NOT。

    

  //~:取反運算,按位取反      System.out.println(~4);//0000 0000 0000 0000 0000 0000 0000 0100 取反:1111 1111 1111 1111 1111 1111 1111 1011 值為 -5      System.out.println(~-4);//:1111 11111111 1111 1111 1111 1111 1100 取反:0000 0000 0000 0000 0000 0000 0000 0011 值為3

 

1.6   三元運算符

又稱三目運算符:結果 = 表達式 ?結果1:結果2

結果可以是任意類型,表達式成立返回結果1,不成立返回結果2。

   

    //三目運算符       int num29 = 5;       int num30 = 5;       int num31 = num29 >num30 ?num29 :num30;//num29大于num30表達式成立,返回num29,不成立返回num30       System.out.println(num31);//結果為5       String str1 =num29 > num30 ?"num29比num30大":"num29沒有num30大";//條件成立返回值1,不成立返回值2       //三目運算符的嵌套       str1 = num29> num30 ?"num29比num30大":num29 == num30 ?"num29與num30相等":"num30比num29大";  System.out.println(str1);

    

1.7   關系運算符與if語句

使用關系運算符對數(shù)據(jù)進行判斷運算,返回布爾類型值。

     

  //關系運算符       System.out.println(1 > 2);//false       System.out.println(1 < 2);//true       System.out.println(1 != 2);//true       System.out.println(1 >=2);//false       System.out.println(1 <=1);//true	System.out.println("aaa"=="aaa");//true,字符串可以使用==進行內(nèi)容判斷

 

   If語句

         使用if語句進行條件判斷,判斷的結果為boolean類型值。

            if(條件){代碼}

         當運算結果為true時,執(zhí)行if后面代碼塊的代碼

  

     if (num29 > num30){           System.out.println("if語句成立,num29比num30大");       }

1.8   遞增與遞減運算符

++:自增;--:自減。

1.9   括號運算符

使用()來對運算順序進行控制。

              //括號運算符              System.out.println((1+2)*3);//結果為9     		 System.out.println(1+2*3);//結果為7

1.10 運算符的優(yōu)先級

實際中沒有必要死死的遵守這個順序,一般遇到多個運算符直接使用()進行順序控制即可。

1.11 賦值運算符

	 //賦值運算符	int num32 = 32;//普通賦值運算符	num32 -= 1;//簡寫的賦值運算符,結果為31	System.out.println(num32);

2   表達式

2.1   算術表達式

用于數(shù)值計算。由算術運算符和操作數(shù)組成。

	//算術表達式    int num33 = 2 * 8;

2.2   關系表達式

用于程序判斷語句中,由關系運算符組成,返回一個布爾類型值。

              //關系表達式              if (1 < 2) {              System.out.println("輸出代碼");   		 }

2.3   邏輯表達式

使用邏輯運算符進行運算,返回一個布爾類型值。

     

         //邏輯表達式    System.out.println(true & true);

2.4   賦值表達式

由賦值運算符和操作數(shù)組成,用于給變量賦值。

   

           //賦值表達式      int num34 = num33;

3   語句

3.1   語句中的空格

代碼中,語句中的空格不會影響代碼的執(zhí)行。可以使用空格分隔運算符,便于閱讀。

  

  Int     num33 =     2 * 8;

3.2   空語句

代碼中,什么都不寫或者使用;來表示一行代碼,也可以運行成功。

           if (1 < 2) {            }

 

3.3   聲明語句

基本數(shù)據(jù)類型變量的聲明:數(shù)據(jù)類型 變量名 = 值;

引用數(shù)據(jù)類型變量的聲明:數(shù)據(jù)類型 變量名 = new 數(shù)據(jù)類型();

3.4   賦值語句

使用 = 進行對變量的賦值操作。

4   練習

做一個計算器,可以進行普通運算、以及位運算。

普通計算:加減乘除取余;

位運算:輸入位運算的數(shù)據(jù),返回位運算的二進制表現(xiàn)形式。

下面是我練習的代碼:

		package day06;		public class Operator {		public static void main(String[] args) {		//賦值運算符		int num = 100 ;//將100賦值給int類型的num變量		byte num2 = 100 ; //將100賦值給byte類型的num2變量		num = num2;//雖然不是一類型,但是num變量表示范圍比num2范圍大,所以可以接收num2的值		//一元運算符		int num3 = 4;		num3 = +num3;//+正號,值為4		num3 = -num3;//-:負號 值為-4		boolean boo = !true; //!:取反 NOT 非  值為false 只能操作boolean類型		//num3 = !num3;//使用在int類型上報錯		byte num4 = 4;		num4 =  (byte)~num4;//4的原碼為:0000 0100 補碼與原碼一樣 然后按位取反:1111 1011 值為-5,為什么對補碼取反?		/*		 * 在對數(shù)值進行操作時(包括賦值運算、打印操作、傳參操作),自增符號++在前時,		 *先對數(shù)值本身進行+1操作,再執(zhí)行其他操作,++在后時,先執(zhí)行其他操作,再對數(shù)值本身進行+1操作		 */		byte num5 = 10;		num5 = num5++;		System.out.println(num5);//打印結果為10		byte num6 = 10;		num6 = ++num6;		System.out.println(num6);//打印結果為11		/*		 * 在對數(shù)值進行操作時(包括賦值運算、打印操作、傳參操作),自減符號--在前時,		 *先對數(shù)值本身進行-1操作,再執(zhí)行其他操作,--在后時,先執(zhí)行其他操作,再對數(shù)值本身進行-1操作		 */		byte num7 = 10;		num7 = num7--;		System.out.println(num7);//打印結果為10		byte num8 = 10;		num8 = --num8;		System.out.println(num8);//打印結果為9		byte num9 = 10;		//num9 = num9 +1 //報錯,因為num8是byte類型,1是整數(shù)類型,需要強制轉(zhuǎn)換一下		num9 = num9++;//不報錯,是因為是在其本身進行一個自我的遞增操作,java底層代碼內(nèi)部實現(xiàn)				//算術運算符		int num10 = 10;		num10 = num10 + 10;//這里的"+"表示加法運算。		System.out.println("結果為:"+num10);//打印結果20,字符串與數(shù)字連接表示連接符,連接的數(shù)字被轉(zhuǎn)為字符串。		int num11 = 10;		num11 = num11 - 10;//這里的"-"表示減法運算。		System.out.println("結果為:"+num11);//打印結果0		int num12 = 10;		num12 = num12 * 10;//這里的"*"表示乘法運算。		System.out.println("結果為:"+num12);//打印結果100		int num13 = 13;		num13 = num13 / 10;//這里的"/"表示除法運算。		System.out.println("結果為:"+num13);//打印結果3		int num14 = 14;		num14 = num14 % 10;//這里的"%"表示取余數(shù)運算。通過判斷運算結果,可以知道一個是是否可以被另一個數(shù)整除		System.out.println("結果為:"+num14);//打印結果4		//注意,當進行除法時,需要保留小數(shù)位,運算式中,必須有浮點型數(shù)據(jù)參與運算。		float num15 = 15/4f;//int類型14除以浮點型4,自動將結果轉(zhuǎn)為浮點型,或者使用強制轉(zhuǎn)換		System.out.println(num15);//打印結果:3.75		float num16 = 4 * 4;//當進行乘法運算時,int類型的結果可以自動轉(zhuǎn)為float類型		System.out.println(num16);//打印結果16.0		float num17 = 15.15f;//如果不包含小數(shù)位以后的數(shù)字,那么寫不寫f都可以,為什么??		System.out.println(num17 % 10);//結果為5.1499996,浮點型也可以進行取余數(shù)運算						//邏輯運算符:		//&、&&真真為真		System.out.println(true&true);//true		System.out.println(true&false);//false		System.out.println(false&false);//false		System.out.println(true&&true);//true		System.out.println(true&&false);//false		System.out.println(false&&false);//false		//|、||有真則真		System.out.println(true|true);//true		System.out.println(true|false);//true		System.out.println(false|false);//false		System.out.println(true||true);//true		System.out.println(true||false);//true		System.out.println(false||false);//false		//取反		System.out.println(!true);//false		//&&、||的區(qū)別:		int num18 = 10;		int num19 = 20;		boolean boo1 = ++num18==18&--num19==19;//當num18==18結果已經(jīng)為flase時候,還會去執(zhí)行右邊的操作		System.out.println("結果"+boo1+"---num18的值為:"+num18+"----num19的值為:"+num19);		int num20 = 10;		int num21 = 20;		boolean boo2 = ++num20==20&&--num21==19;//當num==20結果已經(jīng)為flase時候,就不再去執(zhí)行右邊的操作		System.out.println("結果"+boo2+"---num20的值為:"+num20+"----num21的值為:"+num21);				int num22 = 10;		int num23 = 20;		boolean boo3 = ++num22==11|--num23==19;//當num22==11結果已經(jīng)為true時候,還會去執(zhí)行右邊的操作		System.out.println("結果"+boo3+"---num22的值為:"+num22+"----num23的值為:"+num23);		int num24 = 10;		int num25 = 20;		boolean boo4 = ++num24==11||--num25==19;//當num24==11結果已經(jīng)為ture時候,就不再去執(zhí)行右邊的操作		System.out.println("結果"+boo4+"---num24的值為:"+num24+"----num25的值為:"+num25);				//位運算		//>>:右移		int num26 = 16;		System.out.println(num26>>1);//結果:8		System.out.println(num26>>2);//結果:4		System.out.println(num26>>3);//結果:2		System.out.println(num26>>4);//結果:1		System.out.println(num26>>5);//結果:0		/*		 *規(guī)律:向右每移動一位相當于在上一次一動基礎上除以2,右移n次為:num26/2^n,空出來的部分整數(shù)補0,負數(shù)補1		 *代碼分析:		 *16:0000 0000 0000 0000 0000 0000 0001 0000 向右移動2位:0000 0000 0000 0000 0000 0000 0000 0010 結果為4		 *思考:負數(shù)右移結果?		 *-16>>2=? 1000 0000 0000 0000 0000 0000 0001 0000 向右一動2位:0010 0000 0000 0000 0000 0000 0000 0010 結果為:536,870,914		 *應該按照存儲的數(shù)據(jù)來運算,即補碼運算:1111 1111 1111 1111 1111 1111 1111 0000 向右移動2位:1111 1111 1111 1111 1111 1111 1111 1100 		 */		System.out.println(-16>>2);//結果為:-4 1111 1111 1111 1111 1111 1111 1111 1100		//<<:左移		int num27 = 3;		System.out.println(num27 << 1);//結果:6		System.out.println(num27 << 2);//結果:12		System.out.println(num27 << 3);//結果:24		System.out.println(num27 << 4);//結果:48		System.out.println(num27 << 5);//結果:96		//規(guī)律:向左移動一位,相當于在原有的基礎上乘以2,高位拋棄,低位補0,左移n次為:num27*2^n		System.out.println(-3 << 2);//結果為:-12 ?11111111111111111111111111110100?				//無符號右移,高位補零,低位舍去		int num28 = -16;		System.out.println(-4 >>> 2);//變?yōu)檎龜?shù)		System.out.println(8 >>> 2);//與右移一致				//&:與運算,兩個二進制數(shù)按位運算,都為1,則該位結果為1,否則為0(一一得一)		System.out.println(5 & 6);//0000 0101 & 0000 0110 = 0000 0100 結果為:4		//|:或運算,兩個二進制數(shù)按位運算,有1,則為1,都為0,才是0 (有一得一)		System.out.println(5 | 6);//0000 0101 | 0000 0110 = 0000 0111結果為:7		//^:異或運算,兩個二進制數(shù)按位運算,不一樣,則為1,一樣則為0(一零得一)		System.out.println(5 ^ 6);//0000 0101 ^ 0000 0110 = 0000 0011結果為:3		//~:取反運算,按位取反		System.out.println(~4);//0000 0000 0000 0000 0000 0000 0000 0100 取反:1111 1111 1111 1111 1111 1111 1111 1011 值為 -5		System.out.println(~-4);//:1111 1111 1111 1111 1111 1111 1111 1100 取反:0000 0000 0000 0000 0000 0000 0000 0011 值為3		//三目運算符		int num29 = 51;		int num30 = 5;		int num31 = num29 > num30 ?num29 :num30;//num29大于num30表達式成立,返回num29,不成立返回num30		System.out.println(num31);//結果為5		String str1 = num29 > num30 ?"num29比num30大":"num29沒有num30大";//條件成立返回值1,不成立返回值2		//三目運算符的嵌套		str1 = num29 > num30 ?"num29比num30大":num29 == num30 ?"num29與num30相等":"num30比num29大";		System.out.println(str1);		//關系運算符		System.out.println(1 > 2);//false		System.out.println(1 < 2);//true		System.out.println(1 != 2);//true		System.out.println(1 >= 2);//false		System.out.println(1 <= 1);//true		System.out.println("aaa"=="aaa");//true,字符串可以使用==進行內(nèi)容判斷		if (num29 > num30) {			System.out.println("if語句成立,num29比num30大");		}		//括號運算符		System.out.println((1+2)*3);//結果為9		System.out.println(1+2*3);//結果為7		//賦值運算符		int num32 = 32;//普通賦值運算符		num32 -= 1;//簡寫的賦值運算符,結果為31		System.out.println(num32);		//算術表達式		int num33 = 2 * 8;		//關系表達式		if (1 < 2) {			System.out.println("輸出代碼");		}		//邏輯表達式		System.out.println(true & true);		//賦值表達式		int num34 = num33;	}		}

 


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 禄劝| 寿宁县| 山东| 云南省| 霍林郭勒市| 屯昌县| 江城| 六盘水市| 卢湾区| 广州市| 宁德市| 右玉县| 民权县| 临清市| 淮阳县| 唐海县| 玉门市| 于田县| 怀仁县| 正宁县| 长宁县| 中江县| 大方县| 富锦市| 岳西县| 新绛县| 兴仁县| 根河市| 马鞍山市| 榕江县| 交城县| 堆龙德庆县| 乌鲁木齐市| 昌平区| 延边| 嘉兴市| 威远县| 兴山县| 汨罗市| 莲花县| 三台县|