天天看點

黑馬程式員_Java基礎_進制轉換、基本資料類型、運算符、流程控制語句等

一、進制轉換

參考這篇文章:

二進制、八進制、十進制、十六進制之間轉換

注意:

負數的二進制表現形式:

6= 110  

-6:其實就是6的二進制取反+1

取反:将二進制的1變成0,将0變成1。

      0000-0000  0000-0000   0000-00000  000-0110                (二進制6)

     1111-1111  1111-1111    1111-1111   1111-1001          (二進制6取反)

+   0000-0000  0000-0000   0000-0000    0000-0001            (二進制1)

     1111-1111  1111-1111    1111-1111   1111-1010      =            -6 

總結:負數的最高位都是1。

二、基本資料類型

8種

         1) 整型

                   byte       1B          8位       -128到127

                   short      2B       16位       -2^15到(2^15)-1

                   int          4B        32位      -2^31到(2^31)-1

                   long        8B        64位      -2^63到(2^63)-1

         2) 浮點類型

                   float       4B       32位      

                   double    8B      64位

         3) 字元類型

                    char       2B     16位    

         4) 布爾型         

                   boolean   1B      8位          false/true

         注:

                   1、Java中的自動類型提升問題。

                            1)、正向過程:從低位元組到高位元組可以自動轉換。

                                     byte->short->int->long->float->double

                            2)、逆向過程:從高位元組到低位元組用強制類型轉換。

                                    例:int a = (int)3.141592653;//結果是3

                                    注:逆向轉換将丢失精度。

                    2、boolean:隻有true和false。

                    3、char:Java中用" \u四位十六進制的數字 (即使在注釋中出現\u,後面如果跟的不是4個數字,也會報錯)"表示将字元轉換成對應的unicode編碼,字元類型要用單引号括起來。

                    4、黙認浮點類型為double,float資料類型有一個字尾為" f "或" F "。

                    5、long類型有一個字尾,為" l "或者" L "

三、自動類型提升

[java]  view plain copy

  1. byte a = 2;  
  2. byte b = 3;  
  3. a = a+b;   //編譯出錯自動類型提升成int  
  4. a += b;    //自加沒有自動類型提升問題  

         類型自動提升規則:

                   a和b作某種運算

                   a和b中有double,結果就是double

                   a和b中有float, 結果就是float

                   a和b中有long, 結果就是long

                   除此之外,結果都是int

         注意:把高位元組轉成低位元組,需要作強制類型轉換. byte c=(byte)a+b;

四、移位運算符:

效率最高

         >>   有符号右移,補符号位

                   移負數位,則将該數值加32後再進行移位

                   數值的2進制是按照補碼儲存的

         >>>  右移後高位都補0

         分析:交換兩個變量中的值

[java]  view plain copy

  1. //1.借助temp臨時變量  
  2. int temp;  
  3. temp=n;  
  4. n=m;  
  5. m=temp;  
  6. System.out.println("交換後的值:"+"\n"+"n="+n+"\n"+"m="+m);  

[java]  view plain copy

  1. //2.不借助臨時變量  
  2. n=n+m;  
  3. m=n-m;  
  4. n=n-m;  
  5. System.out.println("交換後的值:"+"\n"+"n="+n+"\n"+"m="+m);  

[java]  view plain copy

  1. //3.一個數異或同一個數兩次,結果不變  
  2. n=n^m;  
  3. m=n^m;//n^m^m等于n  
  4. n=n^m;  
  5. System.out.println("交換後的值:"+"\n"+"n="+n+"\n"+"m="+m);  

[java]  view plain copy

  1. //位運算符,進制轉換(十進制轉換為十六進制)  
  2. int num=60;  
  3. int n1=num & 15;//擷取num最低4位  
  4. System.out.println((char)(n1-10+'A'));  
  5. int temp=num>>>4;//要擷取下一組四位,将60右移4位  
  6. int n2=temp & 15;//對temp的值進行最低四位的擷取  
  7. System.out.println(n2);  

五、邏輯運算符:

         &      與  and

          |       或    or

         &&   先判斷前面一個條件,如果為假,則不用計算後一個條件

         ||       先判斷前面一個條件,如果為真,則不用計算後一個條件

         ^      異或(相同為flase,不同為true)

         !   非  (!true=flase  )

         " + "運算符:兩個操作的對象是數值時,是加法。如果有一個是字元串時,則是字元串的連接配接。

六、轉義字元(常用)

         \n換行

         \b倒退。

         \r按下回車

         \t制表符(Tab鍵)

七、算數運算符

         + (數值相加,字元串相連。),-(雙目:減号。單目:負号), *,  /, %(膜), ++(自增),--(自減)," + "運算符:兩個操作的對象是數值時,是加法。如果有一個是字元串時,則是字元串的連接配接。

八、指派和比較運算符

         指派運算符:=,+=, -=,*=, /=, %=

比較運算符:==,!=,>,<,>=,<=,instanceof(檢查是否是類的對象)

         int a,b,c;

         a=b=c=3;//指派

         注意:

         short s=3;

         s=s+2;//編譯失敗,s被提升為int類型,運算後結果還是int類型,無法指派給short類型。

         s+=2;//編譯通過,因為+=運算符在給s指派時,自動完成了強制轉換工作。

         比較運算符的結果都是boolean型(要麼true,要麼false)。

九、流程控制語句:

         Java與C++相同。

         If    if…..else      if….. else if…..else

         switch中的變量類型隻能是byte、 short、int、char四種類型。

複習了兩天,做做小程式吧!

源代碼:

[java]  view plain copy

  1. public class Narcissus  
  2. {  
  3.     public static void main(String args[])  
  4.     {  
  5.         System.out.println("100~999之間水仙花數:");  
  6.         int k,a,b,c,d;  
  7.         for(k=100;k<1000;k++)  
  8.         {  
  9.             a=k/100;  
  10.             b=k%100/10;  
  11.             c=k%10;  
  12.             d=a*a*a+b*b*b+c*c*c;  
  13.         if(d==k)  
  14.             System.out.println(k);  
  15.         }  
  16.     }  
  17. }  
黑馬程式員_Java基礎_進制轉換、基本資料類型、運算符、流程控制語句等