基本數據類型及其包裝類

之前的文章,可能完全出於筆記,或者記錄而言,並沒有帶着分享的心得去寫,有一些內容筆記知識點寫的不夠全面,希望讀者可以多給點建議,這次我也總結下基本數據類型及其包裝類這一刻的內容,查閱了網上資料,大家可以瞭解下,翻翻看。


一 基本數據類型的系統描述:

  1. 總述:Java基本數據類型分爲兩大類:boolean類型和數值類型。數值類型可分爲整數類型和浮點類型,而其中字符類型可單獨對待。所以Java只包含8種基本數據類型。
      1 boolean 數值只有true和false,不能用0代替。其他數值類型不能轉換成boolean。包裝類–Boolean
      2 byte -內存8位,無符號位時最大存儲255,表數範圍:-128~127。包裝類–Byte
      3 short -內存16位,無符號位時最大存儲65536,表數範圍:-32768~32767。包裝類–Short
      4 int -內存32位,無符號位時最大存儲2的32次方減1,表數範圍:負的2的31次方到正的2的31次方減1。包裝類–Integer。
      5 long -內存64位,無符號位時最大存儲2的64次方減1,表數範圍:負的2的63次方到正的2的63次方減1。包裝類–Long。
      6 float -內存32位,數據範圍在3.4e-45~1.4e38,直接賦值時必須在數字後加上f或F。包裝類–Float。
      7 double -內存64位,數據範圍在4.9e-324~1.8e308,賦值時可以加d或D也可以不加。包裝類–Double。
      8 char:-16位,存儲Unicode字符集,用單引號賦值。可以參與加減乘除運算的,也可以比較大小的!!包裝類–Character。

二  包裝類

1. 包裝類把基本類型數據轉換爲對象

每個基本類型在java.lang包中都有一個相應的包裝類
這裏寫圖片描述


2. 包裝類有何作用

這裏寫圖片描述
2.1 提供了一系列實用的方法
  java提供相應的包裝類的目的:爲了方便操作基本數據類型值,將其封裝成了對象,在對象中定義了屬性和行爲,豐富了該數據的操作,面向對象

包裝類共性:

  • 和String類型相互轉換

      a)基本類型 轉換 String:
       1)用String類中的靜態方法valuOf(基本類型數值)
      b.String 轉換 基本類型:
       1).使用包裝類中的靜態方法 xxx parseXxx(“xxx類型的字符串”):

  Byte.parseByte()
  Short.parseShort()
  Integer.parseInt() 字符串轉成int整數
  Long.parseLong()
  Float.parseFloat()
  Double.parseDouble()
  Boolean.parseBoolean()

   只有Character沒有parse方法,不需要
   2)如果字符串被Integer進行了封裝。
可以用另一個非靜態的方法,intValue():

Integer i = new Integer("123");
i.intValue();
  • 進制轉換:
1.十進制  轉換 其他進制:
String  toBinaryString(int i); 轉換成二進制
        toOctalString(int i); 轉換成八進制
        toHexString(int i); 轉換成十六進制
        toString(int i, int radix); 轉換成指定進制

2.其他進制 轉換 十進制:
int     parseInt(String s, int radix);  
(Integer  valueOf(String s, int radix);  返回的值不能運算,還是字符串。)
  • 數字對象的運算
    //數字對象的運算:
    Integer  a = new Integer("3");
    Integer b = new Integer(3);
    Integer c = new Integer(1);

    System.out.println(a==b);   //false
    System.out.println(a.equals(b));   //true , 比較數值是否相同
    System.out.println(c.compareTo(a)); //比較
  • JDK1.5自動裝箱拆箱:
     l自動裝箱
    Integer a = 5
    編譯器編譯爲:
    Integer a = Integer.valueOf(5);
    自動拆箱
    int i = a;
    編譯爲:
    int i = a.intValue();
    a = a+1;
    編譯爲:
    a = Integer.valueOf(a.intValue()+1);
    自動拆箱要當心 null 值
    a+1 –> a.intValue()+1
    如果a是null,程序出錯

  • Integer的緩存機制
       Integer 類中,存在[-128,127]範圍的緩存對象,如果指定範圍內的值,直接訪問緩存對象,如果指定範圍外的值,創建新對象

    2.2集合不允許存放基本數據類型數據,存放數字時,要用包裝類型

     自動裝包與拆包:自動裝包/拆包大大方便了基本類型數據和它們包裝類地使用。
       自動裝包:基本類型自動轉爲包裝類.(int >> Integer)
       自動拆包:包裝類自動轉爲基本類型.(Integer >> int)

3.String 基本數據類型 包裝類 三者的轉換

這裏寫圖片描述

/**
 * 【面試題】——"34 9 -7 67 25"要求對這個字符串中的數值進行從小到大的排序,
 * 生成一個數值有序的字符串。
 * 思路:
 * 1. 把其中的數拿出來,——對字符串進行切割。
 * 2. 對數進行排序
 * 3. 再追加成字符串。
 *步驟:1.將字符串切割成字符串數組。split。
 *     2.定義一個int數組,將字符串數組中的元素轉成整數存儲      到int數組中
 *     3.對int數組排序
 *     4.將int數組排序後轉成字符串數組
 * @author asus
 *
 */
public class Test3 {
    public static void main(String[] args) {
        String s ="34 9 -7 67 25";
        //用空格對原字符串進行切割,轉成字符串數組
        String[] s1 =s.split(" ");
        int[] arr = new int[s1.length];
        //將字符串數組轉成int類型數組
        for (int i = 0; i < s1.length; i++) {
            arr[i] = Integer.parseInt(s1[i]);
        }
        //對int類型的數組進行排序
        for (int i = 0; i < s1.length-1; i++) {
            for(int j=0;j<s1.length-1-i;j++) {
                if(arr[j]>arr[j+1]) {
                    int temp=arr[j];
                    arr[j]=arr[j+1];
                    arr[j+1] =temp;
                }
            }
        }

        //定義字符串緩衝區,並將int類型數組轉換成字符串類型的數組
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < arr.length; i++) {
            if(i!=arr.length-1)
                sb.append(arr[i]+" ");
            else
                sb.append(arr[i]);
        }
            System.out.println(sb); 
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章