Java各種數據類型詳細介紹及其區別


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是個類。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM