1. 程式人生 > >java int short long float double精度最大值整理

java int short long float double精度最大值整理

對於java的資料型別,既熟悉又陌生,於是整理了這篇文件。
最近的面試讓我開始注意細節,細節真的很重要。

一、分析基本資料型別的特點,最大值和最小值。
1、
基本型別:int 二進位制位數:32
包裝類:java.lang.Integer

最小值:Integer.MIN_VALUE= -2147483648 (-2的31次方)
最大值:Integer.MAX_VALUE= 2147483647  (2的31次方-1)

2、
基本型別:short 二進位制位數:16
包裝類:java.lang.Short
最小值:Short.MIN_VALUE=-32768 (-2的15此方)
最大值:Short.MAX_VALUE=32767 (2的15次方-1)

3、
基本型別:long 二進位制位數:64
包裝類:java.lang.Long
最小值:Long.MIN_VALUE=-9223372036854775808 (-2的63次方)
最大值:Long.MAX_VALUE=9223372036854775807 (2的63次方-1)

4、
基本型別:float 二進位制位數:32
包裝類:java.lang.Float
最小值:Float.MIN_VALUE=1.4E-45 (2的-149次方)
最大值:Float.MAX_VALUE=3.4028235E38
 (2的128次方-1)
5、
基本型別:double 二進位制位數:64
包裝類:java.lang.Double
最小值:Double.MIN_VALUE=4.9E-324 (2的-1074次方)

最大值:Double.MAX_VALUE=1.7976931348623157E308
 (2的1024次方-1)

二、經實踐證明,在程式碼中,能夠寫的位數。
1、首先是整型
      int和long只能寫10個數字,short只能寫5個數字,多了就會報錯。

  1. int h=1234567890;
  2. long w=1234567890;
  3. short s=12345;
如果此時我在它們每個上面再加上一個數字,就會:

2、其次浮點
float的小數點後6位,double的小數點後16位。

  1. float m=123.45566778465651454545f;
  2. double n=3.1234567890123456789;
然後打印出來的結果是這樣的:


三、小插曲 -----int和Integer的區別
1.從定義上來看  int 是基本型別,直接存數值(類似的還有float、double、String、char)  Integer是物件,用一個引用指向這個物件(類似的有Float、Double、String) 2.從複雜度來看,Java 中的資料型別分為基本資料型別和複雜資料型別 int 是前者;Integer 是後者(也就是一個類) 3.初始化的方式不同  int i =1;  Integer i= new Integer(1);//integer 是一個類  int 是基本資料型別(面向過程留下的痕跡,不過是對java的有益補充);Integer 是一個類,是int的擴充套件,定義了很多的轉換方法 注意:類似的還有:float Float;double Double;String等,其中String較為特殊,基本型別和複雜類似關鍵字相同。  例如,當需要往ArrayList,HashMap中放東西時,像int,double這種內建型別是放不進去的,因為容器都是裝 object的,這是就需要這些內建型別的外覆類了。Java中每種內建型別都有相應的外覆類。 Java中int和Integer關係是比較微妙的。關係如下:
  • int是基本的資料型別;
  • Integer是int的封裝類;
  • int和Integer都可以表示某一個數值;
  • int和Integer不能夠互用,因為他們兩種不同的資料型別;
舉例說明 ArrayList A_List=new ArrayList();  int n=40;  Integer In=new Integer(n);  A_List.add(n);//error  A_List.add(In);//ok