1. 程式人生 > >Java 八大基本資料型別以及包裝類的詳解

Java 八大基本資料型別以及包裝類的詳解

一、java中八種基本資料型別對應的包裝型別: 
 原始型別 包裝類 原始型別所佔的位元組數  
 short    Short       2個位元組                        
 int        Integer     4個位元組
 long     Long        8個位元組
 float     Float       4個位元組
 double  Double   8個位元組
 byte      Byte        1個位元組
 char       Character  2個位元組
 boolean Boolean 這個試編譯環境而定

思考:java中提供的八種基本資料型別不夠用嗎?為什麼java中還要提供對應的包裝類呢?

1.基本資料型別之間的相互轉換不是都可以制動轉換的,而你強制轉換又會出問題,比如String型別的轉換為int型別的,那麼jdk為了方便使用者就提供了相應的包裝類。

2.便於函式傳值 

3.就是在一些地方要用到Object的時候方便將基本資料型別裝換

例子:

public class Integer{
 private int i;
 public Integer(int a){
 i =a;
 }

 public static int parseToInt(){
 return i;
 }
 public static Integer valueOf(String str){
 //封裝一系列的邏輯最終將str轉換成int型別的IntegerStr
 return new Integer(IntegerStr);
 }
}
上面是jdk關於Integer的一個例子 比如Integer intg = Integer.valueOf(str); int i = intg.parseToInt();
這樣使用者就很方便的完成了 String和int的轉換 這樣就方便了使用者

有時候一個函式需要傳遞一個Object的變數 而你想傳遞int型別的進去顯然不行,怎麼辦呢,用到了包裝類。

public void test(Object obj){
}
你想傳遞5進去就可以這樣
test(new Integer(5));

二,包裝類的使用

以Integer為例子~

public class IntegerTest{
 public static void main(String[] args){ 
  //獲取int型別的最大值和最小值
  System.out.println("int最小值:" + Integer.MIN_VALUE);
  System.out.println("int最大值:" + Integer.MAX_VALUE);  
  //以int推byte
  System.out.println("byte最小值:" + Byte.MIN_VALUE);
  System.out.println("byte最大值:" + Byte.MAX_VALUE); 
  //建立Integer型別的物件
  Integer i1 = new Integer(10); //int--> Integer
  Integer i2 = new Integer("123"); //String --> Integer  
  System.out.println(i1); //10
  System.out.println(i2); //123  
  //以下程式編譯可以通過。但是執行的時候會報異常.數字格式化異常.
  //雖然可以將字串轉換成Integer型別,但是該字串也必須是"數字字串".
  //Integer i3 = new Integer("abcd"); //NumberFormatException  
 }
}
效果圖:

Integer中常用的方法:

public class IntegerTest1{ 
 public static void main(String[] args){  
  //int-->Integer
  //基本資料型別-->引用型別
  Integer i1 = new Integer(10);  
  //Integer-->int
  //引用型別-->基本型別
  int i2 = i1.intValue(); 
  System.out.println(i2 + 1); //11  
  //重要:static int parseInt(String s);
  //String-->int
  int age = Integer.parseInt("25");
  System.out.println(age+1); //26  
  //"abc"這個字串必須是“數字字串”才行.
  //int price = Integer.parseInt("abc"); //NumberFormatException
  //重要:static double parseDouble(String s);
  double price = Double.parseDouble("3.0");
  System.out.println(price+1.0); //4.0 
  //將int型別的十進位制轉換成2進位制
  String s1 = Integer.toBinaryString(10);
  System.out.println(s1); //1010 
  //將int型別的十進位制轉換成16進位制
  String s2 = Integer.toHexString(10);
  System.out.println(s2); //a  
  //將int型別的十進位制轉換成8進位制
  String s3 = Integer.toOctalString(10);
  System.out.println(s3); //12  
  //int-->Integer
  Integer i3 = Integer.valueOf(10);  
  //String--->Integer
  Integer i4 = Integer.valueOf("10");
  System.out.println(i3);
  System.out.println(i4); 
 }
}
效果圖如下:


包裝類的作用還是很強大的~