Java基礎02-基本類型相關知識

1.基本數據類型:
 byte:佔一個字節,-128-127
 short:佔兩個字節,-32768-32767
 int:佔四個字節,
 long:長整型,佔八個字節,使用時加上"L"(不要使用小寫的"l",容易混淆): long x = 3L;
 float:單精度,佔四個字節, float x = 2.3f;
 double:雙精度,佔八個字節,
 boolean:布爾型,佔一個字節,只能是true或false 
 char:佔兩個字節,0-65535 
  a.對於字符'\u0061':使用的是Unicode碼錶定義的字符,其中"0061"是十六進制的數據
  b.特殊含義的字符:
   \r: 回車
   \n: 換行
   鍵盤上按下回車鍵: \r\n
   \t: 製表符,代表tab
   \b: 退格鍵,類似backspace
   System.out.println('\'');
   System.out.println("\"");
   System.out.println("\\");
  c.
   System.out.print(' ');//正確
   System.out.print('');//錯誤
   System.out.print('  ');//錯誤
   
2.浮點數的八進制與十六進制表示的特殊之處:
 a.對於浮點數沒有八進制表示,所以在下面代碼中,等價於十進制表示:
  float e1 = 03.3f;
  System.out.println(e1);
  float e2 = 3.3f;
  System.out.println(e2);
  
 b.對於浮點數的十六進制表示形式,只有指數表示形式,而且使用符號是"p"或"P"(十進制的指數表示符號是e或E)
  //double f1= 0x1.0; //編譯報錯
  double f2=0x1.0p3;
  System.out.println(f2);
   
3.不同進制之間的轉換方法:
 a.十進制->二進制/八進制/十六進制
  方法:將十進制數,除以目標進制的進制數,並取得餘數
    
  //改進版:編程實現十進制轉成十六進制
  int x = 198;
  StringBuilder sb = new StringBuilder();
  int temp = 0;  
  while(x > 0){   
   temp = x % 16;
   switch(temp){
    case 10:
    case 11:
    case 12:
    case 13:
    case 14:
    case 15:
     sb.append("temp-10+'A'");
     break;
    default:
     sb.append(temp);
   }
   x = x / 16; 
  } 
  System.out.println(sb.reverse());
  
  //最簡版:使用if實現
  int x = 198;
  StringBuilder sb = new StringBuilder();
  int temp = 0;  
  while(x > 0){   
   temp = x % 16;
   if(temp < 10)
   {
    sb.append(temp); 
   }else {
    sb.append((char)(temp-10+'A')); 
   }
   x = x / 16; 
  } 
  System.out.println(sb.reverse());
  
 b.二進制/八進制/十六進制->十進制
  方法:對源進制數按位進行編號(從0開始),將每位上的數字乘以源進制數的編號次方,進行相加
  例:
   八進制306->十進制?
   =3*8^2+6*8^0
   =198
   結果:十進制198
   
 c.二進制->八進制/十六進制的快速轉換
  方法:1.二進制轉換八進制:每三位一看(因爲三位二進制正好表示0-7,即八進制)
    2.二進制轉換十六進制:每四位一看
  例:
   二進制11000110
    011-000-110(從低位開始,高位處不夠補0)
     3   0   6
   結果:八進制306
   
4.碼錶
 a.ASCII表: 英文碼錶,每個字符佔一個字節
 b.GB2312,GBK,GB18030碼錶: 包含中文,一個英文字符佔一個字節,一箇中文字符佔兩個字節(第一個字節一定是負數)
 c.Unicode碼錶:國際碼錶,一個字符佔兩個字節(無論是英文還是中文);java中就是使用的是這個碼錶
 d.UTF-8碼錶:國際碼錶,一個英文字符佔一個字節,一箇中文字符佔三個字節
 
5.類型轉換
 a.自動提升:
  表達式的數據類型自動提升
   所有的byte型、short型和char的值將被提升到int型。
   如果一個操作數是long型,計算結果就是long型;
   如果一個操作數是float型,計算結果就是float型;
   如果一個操作數是double型,計算結果就是double型
  注意:
   運算中,使用常量整形數值如10時,默認是int型;使用小數格式的數據如3.5,默認是double!
 
 b.強制類型轉換
  可以直接將小類型賦值給大類型,而當將大類型數據賦值給小類型時,就需要強制類型轉換,轉換時就將大類型數據的低位字節值給目的類型
  
  注意:
   char,byte,short之間的轉換:
   char <---> byte
   char <---> short
   (由於char類型的範圍爲0-65535,轉換時必須使用類型轉換運算符)
   參考代碼:
    byte a=10;
    char b=(char)a;
    System.out.println(b);
    System.out.println(-b);
    
    byte c=-10;
    char d=(char)c;
    System.out.println(d);
    System.out.println(-d);
 
 c.變量的作用域與生命週期:
  作用域:在定義的大括號中
  生命週期:從定義開始,直到作用域結束
  例:
   public static void main(String [] args)
   {
    {
     int a = 2;
     System.out.print(a);
    }
    int a = 4;              //這樣書寫是可以的,因爲第一個a的生命週期已經結束!
    System.out.print(a);
   }
   
  注意:
   變量定義過可以先不初始化,但是在你使用前必須進行初始化!
   
6.其他: 
 包裝類的緩存值:(對於重複使用,系統會在緩存中創建重複使用的包裝類對象,再次使用時直接使用緩存中的對象)
  boolean: true或false
  byte: -128-127
  short: -128-127
  int: -128-127
  long: -128-127
  char: 0-127
  (對於float和double沒有)
  
  例:
  //程序輸出:i==j
  Integer i = 3;
  Integer j = Integer.valueOf(3);
  if(i==j)
   System.out.println("i==j");
  else
   System.out.println("i!=j");
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章