int與Integer的區別(基本類型與復雜類型的對比)轉
基本類型,或者叫做內置類型,是JAVA中不同於類的特殊類型。
Java中的簡單類型從概念上分為四種:實數、整數、字符、布爾值。但是有一點需要說明的是,Java裏面只有八種原始類型,其列表如下:
實數:double、float
整數:byte、short、int、long
字符:char
布爾值:boolean
復雜類型和基本類型的內存模型本質上是不一樣的,簡單數據類型的存儲原理是這樣的:所有的簡單數據類型不存在“引用”的概念,簡單數據類型都是直接存儲在內存中的內存棧上的,數據本身的值就是存儲在棧空間裏面,而Java語言裏面只有這八種數據類型是這種存儲模型;而其他的只要是繼承於Object類的復雜數據類型都是按照Java裏面存儲對象的內存模型來進行數據存儲的,
Java的簡單數據講解列表如下:
int:int為整數類型,在存儲的時候,用4個字節存儲,範圍為-2,147,483,648到2,147,483,647,在變量初始化的時候,int類型的默認值為0。
short:short也屬於整數類型,在存儲的時候,用2個字節存儲,範圍為-32,768到32,767,在變量初始化的時候,short類型的默認值為0,一般情況下,因為Java本身轉型的原因,可以直接寫為0。
long:long也屬於整數類型,在存儲的時候,用8個字節存儲,範圍為-9,223,372,036,854,775,808到9,223,372,036, 854,775,807,在變量初始化的時候,long類型的默認值為0L或0l,也可直接寫為0。
byte:byte同樣屬於整數類型,在存儲的時候,用1個字節來存儲,範圍為-128到127,在變量初始化的時候,byte類型的默認值也為0。
float:float屬於實數類型,在存儲的時候,用4個字節來存儲,範圍為32位IEEEE 754單精度範圍,在變量初始化的時候,float的默認值為0.0f或0.0F,在初始化的時候可以寫0.0。
double:double同樣屬於實數類型,在存儲的時候,用8個字節來存儲,範圍為64位IEEE 754雙精度範圍,在變量初始化的時候,double的默認值為0.0。
char:char屬於字符類型,在存儲的時候用2個字節來存儲,因為Java本身的字符集不是用ASCII碼來進行存儲,是使用的16位Unicode字符集,它的字符範圍即是Unicode的字符範圍,在變量初始化的時候,char類型的默認值為‘u0000‘。
boolean:boolean屬於布爾類型,在存儲的時候不使用字節,僅僅使用1位來存儲,範圍僅僅為0和1,其字面量為true和false,而boolean變量在初始化的時候變量的默認值為false。
Integer是int的封裝類,裏面有很多進行處理的靜態方法
Integer是對象而int不是,內存的分配位置也不一樣
Integer的屬性和其他類一樣的!在方法裏都是引用傳遞,而原始類型是值傳遞!
jdk1.5以後可以從int自動裝箱Integer類。
int是為了兼容以前的編程語言使用的基本類型,目的是讓程序效率更高,以為它是直接分配到棧上的。所以它不是對象,不能有類似 int.operation()的操作。
Integer是java中一切都是對象這個大前提下的int的包裝類型,可以使用方法,是個對象,是用new分配到堆上的。
jdk1.5後,引入了類似c#中的自動裝、拆箱,使得Integer i = 1;這樣的表達直接可行。
int是一種基本數據類型,而Integer是相應於int的類類型,稱為對象包裝。
實現這種對象包裝的目的主要是因為類能夠提供必要的方法,用於實現基本數據類型的數值與可打印字符串之間的轉換,以及一些其他的實用程序方法;
另外,有些數據結構庫類只能操作對象,而不支持基本數據類型的變量,包裝類提供一種便利的方式,能夠把基本數據類型轉換成等價的對象,從而可以利用數據結構庫類進行處理。
int 是基本類型,(int)(Math.Random()*100)就是一個數,可以進行加見乘除。 Integer是class ,那麽 new Integer(temp)就是一個對象了,可以用到Integer這個class的方法,例如用intvalue()可以返回這個int的值。int a=1;這是基本數據類型是能參與運算的.而Integer b= new Integer(1);c=b.floatvalue;Float a= new Float(null);是可以的用Float初始化一個對象這個a有很多方法而float a;就沒有因為原始沒有引用類,java 提供兩種不同的類型:引用類型(或者封裝類型,Warpper)和原始類型(或內置類型,Primitive)。Int是java的原始數據類型,Integer是java為int提供的封裝類。Java為每個原始類型提供了封裝類。
原始類型 封裝類
boolean Boolean
char Character
byte Byte
short Short
int Integer
long Long
float Float
double Double
引用類型和原始類型的行為完全不同,並且它們具有不同的語義。引用類型和原始類型具有不同的特征和用法,它們包括:大小和速度問題,這種類型以哪種類型的數據結構存儲,當引用類型和原始類型用作某個類的實例數據時所指定的缺省值。對象引用實例變量的缺省值為 null,而原始類型實例變量的缺省值與它們的類型有關。
1 、Boolean VS boolean
public final class Boolean extends Object implementsSerializable,Comparable
Boolean 類將基本類型為boolean的值包裝在一個對象中。一個Boolean類型的對象只包含一個類型為boolean的字段。此外,此類還為boolean和String的相互轉換提供了許多方法,並提供了處理 boolean時非常有用的其他一些常量和方法。
2、 Byte VS byte
public final class Byte extends Number implements Comparable Byte類將基本類型 byte的值包裝在一個對象中。一個Byte類型的對象只包含一個類型為 byte的字段。此外,該類還為 byte和 String的相互轉換提供了幾種方法,並提供了處理 byte時非常有用的其他一些常量和方法。
3、 Character VS char
public final class Character extends Object implements Serializable, Comparable
Character類在對象中包裝一個基本類型char的值。
Character類型的對象包含類型為char的單個字段。此外,該類提供了幾種方法,以確定字符的類別(小寫字母,數字,等等),並將字符從大寫轉換成小寫,反之亦然。
4 、Double VS double
public final class Double extends Number implements Comparable Double類在對象中包裝了一個基本類型double的值。每個Double類型的對象都包含一個double類型的字段。此外,該類還提供了多個方法,可以將double轉換為String,將String轉換為double,還提供了其他一些處理double時有用的常量和方法。
5、 Float VS float
public final class Float extends Number implements Comparable
Float類在對象中包裝了一個float基本類型的值。Float類型的對象包含一個float類型的字段。此外,此類提供了幾種方法,可在float類型和String類型之間互相轉換,並且還提供了處理float類型時非常有用的其他一些常量和方法。
6、 Integer VS int
public final class Integer extends Number implements Comparable
Integer類在對象中包裝了一個基本類型int的值。Integer類型的對象包含一個int類型的字段。
此外,該類提供了多個方法,能在int類型和String類型之間互相轉換,還提供了處理int類型時非常有用的其他一些常量和方法。
7 Long VS long
public final class Long extends Number implements Comparable
Long類在對象中封裝了基本類型long的值。每個Long類型的對象都包含一個long類型的字段。
此外,該類提供了多個方法,可以將long轉換為String,將String轉換為long,除此之外,還提供了其他一些處理long時有用的常量和方法。
8、 Short VS short
public final class Short extends Number implements Comparable
Short類在對象中包裝基本類型short的值。一個Short類型的對象只包含一個short類型的字段。另外,該類提供了多個方法,可以將short轉換為String,將String轉換為short,同時還提供了其他一些處理short時有用的常量和方法。
9、public final class Voidextends Object
Void 類是一個不可實例化的占位符類,它保持一個對代表 Java 關鍵字 void 的 Class 對象的引用。
類的對象才能為null,不能把null賦值給一個變量不能,如int m=null;但可以String s=null;因為String是個類。
int與Integer的區別(基本類型與復雜類型的對比)轉