Java各種數據類型詳細介紹及其區別
基本類型,或者叫做內置類型,是JAVA中不同於類的特殊類型。
Java中的簡單類型從概念上分為四種:實數、整數、字符、布爾值。但是有一點需要說明的是,Java里面只有八種原始類型,其列表如下:
實數:double、float
整數:byte、short、int、long
字符:char
布爾值:boolean
復雜類型和基本類型的內存模型本質上是不一樣的,簡單數據類型的存儲原理是這樣的:所有的簡單數據類型不存在“引用”的概念,簡單數據類型都是直接存儲在內存中的內存棧上的,數據本身的值就是存儲在棧空間里面,而Java語言里面只有這八種數據類型是這種存儲模型;而其他的只要是繼承於Object類的復雜數據類型都是按照Java里面存儲對象的內存模型來進行數據存儲的,使用Java內存堆和內存棧來進行這種類型的數據存儲,簡單地講,“引用”是存儲在有序的內存棧上的,而對象本身的值存儲在內存堆上的。
Java的簡單數據講解列表如下:
int:int為整數類型,在存儲的時候,用4個字節存儲,范圍為-2,147,483,648到2,147,483,647,在變量初始化的時候,int類型的默認值為0。(2的32次方)
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。(2的64次方)
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不是,內存的分配位置也不一樣
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的字段。此外,此類還為boolean和String的相互轉換提供了許多方法,並提供了處理 boolean時非常有用的其他一些常量和方法。
2、 Byte VS byte
public final class Byte extends Number implements Comparable<Byte>
Byte類將基本類型 byte的值包裝在一個對象中。一個Byte類型的對象只包含一個類型為 byte的字段。此外,該類還為 byte和 String的相互轉換提供了幾種方法,並提供了處理 byte時非常有用的其他一些常量和方法。
3、 Character VS char
public final class Character extends Object implements Serializable, Comparable<Character>
Character類在對象中包裝一個基本類型char的值。
Character類型的對象包含類型為char的單個字段。此外,該類提供了幾種方法,以確定字符的類別(小寫字母,數字,等等),並將字符從大寫轉換成小寫,反之亦然。
4 、Double VS double
public final class Double extends Number implements Comparable<Double>
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類型的字段。此外,此類提供了幾種方法,可在float類型和String類型之間互相轉換,並且還提供了處理float類型時非常有用的其他一些常量和方法。
6、 Integer VS int
public final class Integer extends Number implements Comparable<Integer>
Integer類在對象中包裝了一個基本類型int的值。Integer類型的對象包含一個int類型的字段。
此外,該類提供了多個方法,能在int類型和String類型之間互相轉換,還提供了處理int類型時非常有用的其他一些常量和方法。
7 Long VS long
public final class Long extends Number implements Comparable<Long>
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類型的字段。另外,該類提供了多個方法,可以將short轉換為String,將String轉換為short,同時還提供了其他一些處理short時有用的常量和方法。
9、public final class Voidextends Object
Void 類是一個不可實例化的占位符類,它保持一個對代表 Java 關鍵字 void 的 Class 對象的引用。
類的對象才能為null,不能把null賦值給一個變量不能,如int m=null;但可以String s=null;因為String是個類。