Java中long和Long有什麼區別 (轉載)

愛做飯的小瑩子發表於2015-01-18

“Long is a class. long is a primitive. That means Long can be null, where long can't. Long can go anywhere that takes an Object, long can't (since it isn't a class it doesn't derive from Object).

Java will usually translate a Long into a long automatically (and vice versa), but won't for nulls (since a long can't be a long), and you need to use the Long version when you need to pass a class (such as in a generic declaration).

 

 

Java的資料型別分兩種:
1.基本型別:long,int,byte,float,double,char
2. 物件型別(類): Long,Integer,Byte,Float,Double,Char,String,其它一切java提供的,或者你自己建立的類。

其中Long又叫 long的包裝類。而Byte和Float也類似,一般包裝類的名字首寫是數值名的大寫開頭。

什麼叫包裝類?
在java中有時候的運算必須是兩個類物件之間進行的,不充許物件與數字之間進行運算。所以需要有一個物件,這個物件把數字進行了一下包裝,這樣這個物件就可以和另一個物件進行運算了。

比如我們也可以定義一個類:

1 class Long {
2     int i=0;
3     public Long (int i){
4     this.i=i;
5     }
6 }

 

 這樣這個Long就是一個包裝類,他包裝了一個整數值,然後可以在裡面寫一些運算子過載的方法使它支援某些運算。這個時候可以賦值:
Long it=new Long(10);
現在變數it就是一個物件,不是一個數字。

 

Long 是長整型,在怎麼長本身也是整型,12.10的整形部分是12,當然結果是12,

byte: 八位整數 -128——127,可用來節省記憶體的使用。
short: 16位整數 -32768——32,767,也比較省記憶體。
int: 32位整數 -2,147,483,648——2,147,483,647,一般來說整數都夠用了
long: 64位整數 -9,223,372,036,854,775,808—— 9,223,372,036,854,775,807,一般不需要用
float: 32位浮點,如果浮點需要節省記憶體用這個。
Double: 64位浮點,一般非整數浮點可用這個。

但是要記住float和double都不是精確的,如果要儲存錢一類的必須精確的,用java.math.BigDecimal

 

相關文章