1. 程式人生 > >Integer和int的區別,包裝類,基本資料型別,區別

Integer和int的區別,包裝類,基本資料型別,區別

int 是基本資料型別。

Integer是其包裝類,注意是一個類。

https://zhidao.baidu.com/question/322364721.html

----

包裝類,和資料型別,使用上,有什麼區別?下面舉個例子:

int test0;

TestBean test2;//TestBean是我自定義的類 test2.getName();//報錯The local variable aa may not have been initialized

Integer test1; test1.byteValue();//報錯The local variable aa may not have been initialized

1基本資料型別,不是類,即不是物件,即不能進行new這樣來建立物件。所以其也就不能使用"物件.function()",其也就少了好多處理函式,很不方便。因此才有了封裝類,沒有封裝類,好多資料都不能處理,很不方便。

比如我現在要用泛型
List<Integer> nums;
這裡<>需要類。如果你用int。它會報錯的,因為int是基本資料型別,不是類

2類的物件必須初始化,即new才可以訪問成員函式,否則訪問成員函式報錯。而基本資料型別,不是類,不能new,否則報錯。

int bb=new int();//Syntax error on token "int", invalid ClassType

Integer test1;
test1.byteValue();//報錯The local variable aa may not have been initialized

----

這裡就牽扯出來另幾個問題,①java基本資料型別有哪些?

http://www.cnblogs.com/simplefrog/archive/2012/07/15/2592011.html


②String是不是基本資料型別?

不是。因為基本資料型別不能new,更不可能有“物件.function”這種用法。

String test = new String();//編譯通過,不報錯



----------在此總結,java的變數,有幾種型別?


1基本資料型別,int、float等8種。不用new,new會報錯。

2Class,即類。可以使用Test test=new Test();這種“對稱”初始化的方式,進行new。

3Interface,即介面。不可以使用Test test=new Test();這種“對稱”初始化的方式,進行new。會報錯。

必須非對稱,要用介面的實現類,給介面new。

5陣列。其new的方式也比較特殊,有如下三種,


所以,綜上所述,是根據什麼區分各種變數的型別的?是new的方式

其實,我們發現,class、interface、陣列這三者都要new,因此可以將interface、陣列當成特殊的class看待,因此三者都可以當成是class。