數據類型在java 語言中包括兩種:java
第一種:基本數據類型,能夠劃分紅4大類8小種ide
整數型:byte,short,int,long byte:1 個字節,short :2 個字節 ;int :4個字節 ;long :8個字節 編碼
浮點型 :float,double float 4 個字節,double 8 個字節spa
布爾型:boolean 佔用 1 個字節 code
字符型:char,佔用 2 個字節blog
第二種:引用數據類型 ,字符串屬於引用數據類型unicode
4個類型的取值範圍字符串
byte: [-128 ~127]編譯器
short: [-32768 ~ 32767]字符編碼
int : [-2147483648 ~ 2147483647]
char : [0 ~ 65535]
字符編碼:人爲規定的一套轉換表,規定了一系列的文字對應的二進制
使用 \ 轉義: \n 轉行 \t 製表符 \' 單引號
\u 表明後面的是一個字符的 unicode 編碼 , unicode 編碼 是 16 位。 char x = '\u4e2d' 表明 中
整數型:
八進制 : 010 ,0開頭 十六進制:0x10 0x開頭
數據類型轉換:
從小容量 到 大容量 能夠 自動轉換
在任何狀況下,整數型的「字面量/數據」默認被當作int類型處理。(記住就行)
若是但願該「整數型字面量」被當作long類型來處理,須要在「字面量」後面添加L/l
// 錯誤: 整數太大
//long e = 2147483648;
// 怎麼解決這個問題呢?
long e = 2147483648L;
從大容量 到小容量必須強制轉換,可是可能會損失精度。
當整數型字幕量 沒有超出範圍的時候,能夠直接賦值
byte i = 1 ;
轉換的時候,去扣除前面的字節
byte b = (byte)300;
System.out.println(b); // 44
1 public class TypeTransferTest{ 2 public static void main(String[] args){ 3 // 編譯報錯,由於1000已經超出範圍了。 4 //byte b1 = 1000; 5 // 能夠 6 byte b2 = 20; 7 // 能夠 8 short s = 1000; 9 // 能夠 10 int c = 1000; 11 // 能夠 12 long d = c; 13 // 編譯報錯 14 //int e = d; 15 // 能夠 16 int f = 10 / 3; 17 // 能夠 18 long g = 10; 19 // 編譯報錯 20 //int h = g / 3; 21 // 能夠 22 long m = g / 3; 23 // 編譯報錯 24 //byte x = (byte)g / 3; 25 // 能夠 26 short y = (short)(g / 3); 27 // 能夠 28 short i = 10; 29 // 能夠 30 byte j = 5; 31 // 編譯報錯 32 //short k = i + j; 33 // 能夠 34 int n = i + j; 35 // 能夠 36 char cc = 'a'; 37 System.out.println(cc); // a 38 System.out.println((byte)cc); // 97 39 // cc 會先自動轉換成int類型,再作運算 40 int o = cc + 100; 41 System.out.println(o); // 197 42 } 43 }
整數類型
一、當一個整數賦值給 char 類型變量的時候,會轉換自動轉換成字符型
二、當一個整數沒有超出byte,short,char取值範圍,能夠直接賦值
byte ,short ,char 的混合運算
結論:byte、char、short作混合運算的時候,各自先轉換成int再作運算。
編譯器只能檢測到語法,不肯定具體的存儲的什麼值,由於若是查過範圍,是須要強制轉換的
short i = 10;
byte j = 5;
// 編譯報錯
//short k = i + j;
short k = (short)(i+j);
1 public class IntTest06{ 2 public static void main(String[] args){ 3 4 char c1 = 'a'; 5 byte b = 1; 6 7 // 注意:這裏的"+"是負責求和的 8 System.out.println(c1 + b); // 98 9 10 // 錯誤: 不兼容的類型: 從int轉換到short可能會有損失 11 //short s = c1 + b; // 編譯器不知道這個加法最後的結果是多少。只知道是int類型。 12 13 // 這樣修改行嗎? 14 //錯誤: 不兼容的類型: 從int轉換到short可能會有損失 15 //short s = (short)c1 + b; 16 17 short s = (short)(c1 + b); 18 19 //short k = 98; 20 21 int a = 1; 22 //錯誤: 不兼容的類型: 從int轉換到short可能會有損失 23 // short x = 1; 能夠 24 short x = a; // 不能夠,編譯器只知道a是int類型,不知道a中存儲的是哪一個值。 25 System.out.println(x); 26 } 27 }
多種數據類型混合運算,最終結果是最大容量的對應的類型
char+short+byte 這個除外。
由於char + short + byte混合運算的時候,會各自先轉換成int再作運算。
浮點型
任何一個浮點型數據默認是當作 double 來處理,若是想用 float 類型, 添加 F或者f. 或者強制轉換
boolean
true flase