在寫java代碼的時候,所有的變量都需要聲明一種數據類型,在java的代碼中,數據類型分為基本數據類型和引用數據類型。下面先介紹基本數據類型
基本數據類型由8個:
1、byte字節數據類型,取值范圍為-128到127。
2、short短整數數據類型,取值范圍為-2^15到2^15-1。
3、int整數數據類型,取值范圍為-2^31到2^31-1。
4、long長整數數據類型,取值范圍為-2^63到2^63-1。
5、float單精度浮點型,取值范圍為4個字節,當數值范圍過大或者過小的時候,會出現數值精度的問題,因此對數據精度要求較高的,不推薦使用。
6、double雙精度浮點型,取值范圍為8個字節,同樣的會發生數據計算過后數值精度的問題。
7、char字符數據類型,用單引號括起來的單個字符。
8、boolean布爾數據類型,這種數據類型只有兩個值,true和false,true表示真,false表示假。
以下是定義變量,並聲明數據類型的事例代碼:
public void method_1(){ //byte字節數據類型:byte,取值只能是-128到127 byte b = 127; //short短整形數據類型,不常用 short s = 100; //int整形數據類型,常用 int i = 100; //long長整形數據類型,不常用,定義的值必須在后面加上一個L long l = 100L; //float單精度數據類型,取值范圍為4個字節,在定義的值后面加上f float f = 100.1f; //double雙精度數據類型,取值范圍8個字節,值后面的d可以省略 double d = 100.1; //char字符數據類型,用單引號括起來的單個字符 char c = 'a'; //boolean布爾數據類型,只有兩個值,true和false boolean bool = true; }
java一共只有8種基本數據類型,那么,對於一個變量,怎么進行數據類型的轉換呢?比如,將int類型轉換成long或者其他數據類型等。
對於數據類型的轉換分為兩種:隱式轉換和顯示轉換(強制轉換)。
1)隱式轉換:數據類型自動的轉換,這種方式是用在小范圍的數據向大范圍的數據進行轉換,比如:int類型向long類型進行轉換。
用圖示舉例:

以上圖為例:比如int數據類型為一個容器,現在int里面是裝滿了水的,要將int里面的水,倒入long數據類型的容器里面,會發現,long的數據類型容量比int的數據類型容量要大,則可以將int容器里面的水裝入long數據類型的水中,這就是long數據類型的取值范圍比int數據類型的取值范圍大,則虛擬機會自動的將int數據類型的變量,自動的轉換成long數據類型。
事例代碼:
public void method_2(){ //定義一個變量a,數據類型為int int a = 1000; //定義一個變量b,數據類型為long,並且將a的變量賦值給b long b = a; }
以上代碼中,a的數據類型為int,b的數據類型為b,但是卻能夠將a的值直接賦值給b變量,這里面就涉及的是隱式轉換,int b = a,就是將a的int型轉換成long類型,再賦值給b。
2)顯示轉換(強制轉換):
用圖示舉例:

如上圖為例:還是將long數據類型和int數據類型分別看成一個容器,現在要將long數據類型里面的水,裝入int數據類型中,顯而易見,int數據類型可能並裝不下long數據類型的所有水,這個時候就會發生溢出,數據也是一樣,如果將大范圍的數據類型轉換成小范圍的數據類型,就可能造成數據丟失。因此代碼會報錯,錯誤原因:
但是有可能是這種情況:

如上圖所示,我們自己明確的知道,long數據類型里面的水,裝入int數據類型中,也是不會出現溢出的,這個時候,就需要進行強制轉換,將long數據類型的變量,強制轉換成int。
事例代碼:
1 public void method_3(){ 2 //定義一個變量a,數據類型為long 3 long a = 1000; 4 //定義一個變量為b,數據類型為int,並且將數據上面的a賦值給b 5 int b = (int)a; 6 }
如以上代碼,想要將數據類型為long的變量a賦值賦值給數據類型為int的變量b,則需要先將a進行強制轉換成int:(int)a,再賦值給b,否則會報錯,導致編譯失敗
