java數據類型歸集,整理

原始數據類型-包括byte,short,int,long, float,double,boolean和char
type Size Range default
byte 1字節(Byte)/8位(bit) -128(-2^7) to 127(2^7-1) 0
short 2字節(Byte)/16位(bit) -32768(-2^15) to 32767(2^15 - 1) 0
int 4字節(Byte)/32位(bit) -2,147,483,648(-2^31) to 2,147,483,647(2^31 - 1) 0
long 8字節(Byte)/64位(bit) -9,223,372,036,854,775,808(-2^63) to 9,223,372,036,854,775,807(2^63 -1) 0L
float 4字節(Byte)/32位(bit) -2^128 to +2^128 0.0f
double 8字節(Byte)/64位(bit) -2^1024 to +2^1024 0.0d
boolean 1位(bit) true or false false
char 2字節(Byte)/16位(bit) \u0000(即爲0) to \uffff(即爲65535) ‘u0000’

float的範圍爲-2^128 ~ +2^128,也即-3.40E+38 ~ +3.40E+38;double的範圍爲-2^1024 ~ +2^1024,也即-1.79E+308 ~ +1.79E+308。

Float和Double的最小值和最大值都是以科學記數法的形式輸出的,結尾的"E+數字"表示E之前的數字要乘以10的多少次方。比如3.14E3就是3.14 × 103 =3140,3.14E-3 就是 3.14 x 10-3 =0.00314。

非原始數據類型 - 例如字符串,數組和 類

非原始數據類型稱爲引用類型,因爲它們引用對象。

之間的主要區別原始和非原始數據類型爲:

  • 原始類型是在Java中預定義的(已定義)。非原始類型由程序員創建,不由Java定義(除外String)。
  • 非基本類型可用於調用方法以執行某些操作,而基本類型則不能。
  • 基本類型總是一個值,而非基本類型可以是null。
  • 基本類型以小寫字母開頭,而非基本類型以大寫字母開頭。
  • 基本類型的大小取決於數據類型,而非基本類型具有相同的大小。
類型自動轉換

byte- > short- > char- > int- > long- > float- >double

類型自動轉換示意圖:(實線表示自動轉換時不會造成數據丟失,虛線則可能會出現數據丟失問題。)
在這裏插入圖片描述

強制類型轉換

double- > float- > long- > int- > char- > short- >byte

事例:

int a = 100000000;
int b = 1000;
long c = a * b;

編譯沒任何問題,但結果卻輸出的是負數
因爲兩個 int 相乘得到的結果是 int, 相乘的結果超出了 int 的代表範圍(簡稱:溢出),一般把第一個數據轉換成範圍大的數據類型與其運算

解決事例:

int a = 100000000;
int b = 1000;
long c =long)a * b;

直接將 int 常量字面量賦值給 byte、short、char 等數據類型,而不需要強制轉換,只要該常量值不超過該類型的表示範圍都能自動轉換

強制類型轉換

double a = 9.78;
int b = (int) a;

不同數據類型的表達式中,類型會自動向範圍表示大的值的數據類型提升。
事例:

long a = 100000000;
int b = 1000;
long c = a * b;
int 和 String類型轉換

int -> String

int i=12345;
String s="";
第一種方法:s=i+"";    //會產生兩個String對象
第二種方法:s=String.valueOf(i);  //直接使用String類的靜態方法,只產生一個對象
第三種方法:String s = Integer.toString(i); 

String -> int

s="12345";
int i;
第一種方法:i=Integer.parseInt(s); 
//直接使用靜態方法,不會產生多餘的對象,但會拋出異常
第二種方法:i=Integer.valueOf(s).intValue(); 
//Integer.valueOf(s) 相當於 new Integer(Integer.parseInt(s)),也會拋異常,但會多產生一個對象

在轉換過程中需要注意,因爲字符串中可能會出現非數字的情況,所以在轉換的時候需要捕捉處理異常

String str = "12345";

try {

    int a = Integer.parseInt(str);

} catch (NumberFormatException e) {

    e.printStackTrace();

}

try {

    int b = Integer.valueOf(str).intValue()

} catch (NumberFormatException e) {

    e.printStackTrace();

}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章