標籤:關鍵字 單引號 雙引號 資料類型 類型轉換
Java資料類型簡介:
Java是一種強型別的語言,數實值型別主要分為基礎資料型別 (Elementary Data Type)和引用資料類型,其中基本的資料類型分為8種,具體細節點及一些注意點如下。
java中的基礎資料型別 (Elementary Data Type):
字元類型:
關鍵字:char 所佔位元組:2位元組
細節點:1、java中的字元類型採用Unicode編碼,加之2位元組,因此java中的資料類型可以直接儲存一個漢字,例如:char sex = ‘男‘;
注意點:1、聲明字元類型時用的是單引號‘ ‘,而不是雙引號"";
2、其實在正常開發中,絕大多數漢字所佔的位元組不止2個位元組,所以在這裡要特別注意;
布爾類型:
關鍵字:boolean 所佔位元組:1位元組
細節點:1、只有兩個值:true 或者 false
注意點:在條件陳述式中java是不允許像C/C++語言將數實值型別0或非0充當true或者false的,而是僅僅允許true或false。
數實值型別:
java中的數實值型別又分為整數型和浮點型,其中整數型可以理解為整數,浮點類型可以通俗的理解為小數。
整數型:
關鍵字:byte 所佔位元組:1位元組 中文簡稱:位元組型
關鍵字:short 所佔位元組:2位元組 中文簡稱:短整型
注意點:使用short類型時應注意其數實值型別範圍,避免越界溢出
關鍵字:int 所佔位元組:4位元組 中文簡稱:整型
細節點:1、java中對於整型如沒有特定的類型指定,則預設被聲明為int型
2、通常把整數聲明為int型
所以在平時開發中,int類型是用的最多的;
例 聲明:
int i;
int num = 1;
在這裡多說明一個知識點,自動拆裝箱
有時需要將int這樣的基礎資料型別 (Elementary Data Type)轉換為參考型別對象,
例如:
Integer i = 10;
相當於:Integer i = new Integer(10);
這樣的話,這裡的i,就已經是一個參考型別了;
還有一種方法,耍點小聰明:
int i = 10;
String str = i+"";
這裡的 str 值同樣是10,但是它已經是引用資料類型了;
同理:引用資料類型轉換為基礎資料型別 (Elementary Data Type);
String str = "10";
int i = new Integer(str);
這裡的i就已經變數一個基礎資料型別 (Elementary Data Type)了,可以進行正常的數值計算了;
關鍵字:long 所佔位元組:8位元組 中文簡稱:長整型
注意點:由於java預設將整型定義為int型,所以當使用long類型時應該加上尾碼L或小寫l,但是小寫l通常和1容易混淆,通常用大寫的L作為其尾碼
浮點類型:
Java中的浮點類型又分為兩種,單精確度浮點型和雙精確度浮點型,其中雙經度浮點型的精確度要比單經度浮點型的精確度要高。
單精確度浮點型:
關鍵字:float 所佔位元組:4位元組 中文簡稱:單精確度浮點型
細節點:由於在Java中預設對於浮點型數值使用Double類型儲存,當使用float類型時應在聲明其後加上大寫的F或小寫f作為其尾碼。
注意點:short a = 1.35; short b = a + 12.56;注意這裡由於12.56沒有為其執行數實值型別,所以預設為double類型,+會對前面的a自動進行精度提升為double類型的,那麼其整個計算結果就是double類型的,而與short類型的結果聲明的不符。
雙精確度浮點型:
關鍵字:double 所佔位元組:8位元組 中文簡稱:雙精確度浮點型
注意點:Java中對於小數預設定義的數實值型別為double類型,當使用double類型時可在其後加上大寫的D或小寫d作為其尾碼。
java中的自動型別提升:
當進行計算時,java會對類型自動進行數實值型別提升,具體來說就是提升表示範圍小的數實值型別到整個運算式中資料類型表示範圍最大的,常常發生在以下兩個方面:
1、運算式中作為運算元或運運算元整型提升:12.3f + 12.5 其中12.5沒有顯式的為其指定資料類型,則對於浮點型數值java預設為其指定為double類型,再參與運算式的運算,但前面是float類型,java為了不讓整體精度丟失會預設把float類型的運運算元自動提升為精度更高的double類型並讓其繼續參與運算。
2、運算式中為結果進行的自動型別提升:例如 double a = 12.5f + 12.3f;雖然整個運算式中的運算部分均為float類型但是所要賦予的結果是double類型的,則java會對其進行精度提升為double類型的。
java的強制類型轉換:
java中的自動類型轉換某些方面說是發生在 低精度 → 高精度 的情況的,而java中的強制類型轉換某些方面說是發生在 高精度 → 低精度 的情況。
java中的自動類型轉換是系統自動的,而java中的高精度類型轉換則是手動的由程式編製人員手工強制的,因為顯然提升精度並不會造成什麼傷害而降低精度則常常會產生傷害,例如銀行中所存定的錢數或者利息等。所以一個Java自動一個要程式員手動強制。
java中的強制類型轉換的文法為:(要轉換到的資料類型)要轉換的參數或值 例如:(int)12.5 + 12.3 其中12.5會自動轉換為12,對於正數java無論四捨五入,都將其轉換為向下最靠近的正整數,負數則將其向上轉換為最靠近的負整數例如:(int)-12.5會被轉換為-12,注意這裡僅僅轉換距離(int)最近的一個參數,此例子中僅僅對12.5發生強制轉換而不會連12.3也轉換。
其他:
不恰當的轉換會造成數值的溢出,關於溢出的具體情況大家可以參考部落格園的其他園友的文章。另外Java中的數實值型別的長度無論在什麼機器上都是固定的,而非像C/C++語言一樣在16位機器上int是多少位而到32位的機器上int又變成了多少位的適應性固定。
如果工作涉及到資料分析方面的時候,一般我們的這些基礎資料型別 (Elementary Data Type)並不能滿足正常的開發需求的,總會有一些小的bug,例如有些計算會讓我們的數值失去精度,關於這點,下次我們再詳細講解!
謝謝!
本文出自 “18639831250” 部落格,請務必保留此出處http://18639831250.blog.51cto.com/12652635/1903379
細談JAVA中的資料類型