java 数据类型转换的一场_Java基础 — 四类八种基本数据类型
整型:整數類型int 一般的數據。
long 極大的數據。
short 用于特定的場合,比如底層的文件處理或者需要控制占用存儲單元空間量的大數組。
byte 用于特定的場合,比如底層的文件處理或者需要控制占用存儲單元空間量的大數組。
byte、short、int、long都是整數類型,并且是有符號整數 分別占用1、2、4、8個字節。
取值范圍分別是-128—127、-2的15次方到2的15次方減一、-2的31次方到2的31次方減一、-2的63次方到2的63次方減一 byte在內存中占用一個字節 取值范圍是 -128—127。在定義一個變量時。比如月份的取值是1到12。因此把代表月份的month變量定義為byte類型會節省內存空間。
在實際應用中 通常把month定義為int類型,因為這樣可以簡化數據運算時強制類型轉換操作。
byte month = 1;
month = month+2;//編譯錯誤 需要強轉
month = (byte) (month+2); //編譯正確
浮點數float 有效數字最長是7位。
double 有效數字最長是15位。
float:占四個字節,共32位,稱為單精度浮點數
double:占八個字節,共64位,稱為雙精度浮點數
Java中的浮點型常量數值默認是double類型
注意: java提供的浮點類型不適合進行精確的運算
public static void main(String[] args) throws Exception {
double money = 1;
double price = 0.1;
System.out.println(money-price*9);//打印出來0.09999999999999998(本應該是0.1)
}
解決辦法: java.math.BigDecimal類可以滿足用戶的精度 注意 構造BigDecimal類時 構造方法中的參數 不建議是浮點類型 需要轉成String類型
booleanBoolean在內存中占用一個字節。
當java編譯器把java源代碼編譯為字節碼時,會用int或byte來表示boolean。在java虛擬機中,用整數零來表示false,用任意一個非零整數表示true。 java虛擬機這種底層處理方式對java虛擬機是透明的,在java源程序中boolean類型的變量取值只能是true或false
char
char是字符類型 占用兩個字節,java語言對字符采用Unicode字符編碼。由于計算機內存只能存儲二進制數據。因此必須對各個字符進行編碼。
所謂字符編碼是指用一串二進制數據來表示特定的字符。常見的字符編碼包括,ASCII編碼(1Byte=8bit 一共能表示2的7次方 128個字符) 是單字節編碼系統,ISO-8859-1編碼(也是單字節編碼系統) GB2312編碼 GBK編碼 Unicode編碼。
Unicode編碼由國際Unicode協會編制,收錄了全世界所有語言文字中的字符,是一種跨平臺的字符編碼USC(Universal Character Set)是指采用Unicode編碼的通用字符集。
如果實際上要存儲的字節都是ASCII字符(只占7位),采用Unicode編碼及其浪費存儲空間。UTF-8編碼能夠更加有效的利用存儲空間,它對ASCII字符采用一個字節形式的編碼,對非ASCII字符則采用兩個或兩個以上字節形式的編碼。
Unicode有兩種編碼方案。
用兩個字節(16位)編碼,采用這個編碼方案的字符集稱為UCS-2。java語言采用的就是兩個字節的編碼方案
用四個字節(32位)編碼(實際上只用了31位,最高位必須為0),采用這個編碼的字符集被稱為UCS-4。
1994年公布的Unicode,為每種語音中的每個字符都設定了唯一編碼,以滿足跨語言的交流,分為編碼方式和實現方式。
實現Unicode的編碼格式 有UTF編碼。可以理解為對Unicode的壓縮方式,常見的UTF編碼有 utf-8,utf-7,utf-16
有些操作系統不完全支持16位或32位的Unicode編碼,UTF(UnicodeTransformation Format) 編碼能夠把Unicode編碼轉換為操作系統支持的編碼。
ASCII編碼,ISO-8859-1編碼 GB2312編碼 GBK編碼 Unicode編碼 都屬于編碼方式,UTF屬于實現方式(實現Unicode編碼)。
基本數據類型轉換
上面四類八種基本數據類型。除了boolean類型。整型 浮點型和字符型數據可以進行混合轉換。
從低位到高位會自動進行類型轉換,即int類型的數和Long類型的數一起運算時 結果會自動轉成Long類型(向上轉型)
從高位到低位需要進行強制類型轉換。(向下轉型)
從低位到高位 byte、char、short、int、long、float、double
float f = 3.14; //編譯錯誤,不能把double類型直接賦值給float類型變量 需要強制類型轉換
應用中,強制類型轉換有可能會導致數據溢出或者精度下降,應該避免使用強制類型轉換。
下面代碼中 把int強制轉換為byte類型,會導致數據溢出。
int a = 256;
byte aa = (byte) a;
int b = 222;
byte bb = (byte) b;
System.out.println(aa); // 打印結果0System.out.println(bb); //打印結果-34
對于基本類型的變量,java虛擬機會為其分配數據類型實際占用內存的大。
最后
如果覺得文章不錯,對你幫助,記得給我點個贊~另外需要Java入門全套視頻,可以關注我然后私我~
總結
以上是生活随笔為你收集整理的java 数据类型转换的一场_Java基础 — 四类八种基本数据类型的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 吴京的新片(攀登者)大家听过没有?
- 下一篇: java struts2值栈ognl_S