Java 有8中基礎資料型別 (Elementary Data Type),分別是byte、int、long、char、float、double、boolean。
1.byte、char的簡單介紹
有時候總是搞不清byte、char,所以就現在好好的整理一下:
一個byte型整數在記憶體中佔8位,也就是一個位元組. 表數範圍:-128 --127 . (字元類型char 2個位元組)。
Java 中整形常量有三種表示方式:
其中8進位的整數常量以0開頭. 16進位的整數以0x或0X開頭,10-15分別a-f開頭(此處的a--f不區分大小寫)來表示.
字元型
字元型通常用於表示單個位元組,字元常量必須使用單引號('')括起來.JAVA語言使用16位的Unicode編碼集作為編碼方式,它支援各種語言的字元.
字元常量有三種表示形式: 直接通過單個字元來指定字元常量:例如,'A'、'a'、'8'等。 通過逸出字元表示特殊的字元常量.例如:'\n'、'\t'等。 直接適用Unicode值來表示字元常量.格式是:'\uXXXX',其中XXXX代表一個16的整數.
字元型常量也可以用16進位編碼方式表示,範圍是:'\u0000'----'\uFFFF',一共可以表示65536個字元,其中前256個字元('\u0000'---'\u00FF')和ASCII碼中的字元完全重合.
不僅如此,字元型的值也可以作為整數型來使用,但它是不帶正負號的整數,即全部是整數,但他是一個16位的不帶正負號的整數,表數範圍:0----65535.
如果把一個0---65535內的int型整數賦給char類型的變數,系統會自動把這個int型整數當成char類型來處理。
下面是一個簡單的例子:
public class TestChar {public static void main(String[] args) {//直接指定單個字元作為字元常量char aChar='a'; //使用逸出字元作為字元常量.char enterChar='\r';//使用Unicode編碼值來作為字元常量char ch='\u9999';System.out.println(ch);//定義一個中字元常量char zhong='中';//直接將一個char變數當成int變數類型使用int zhongValue=zhong;System.out.println(zhongValue);//直接將一個0--65535的int型整數賦值給一個char變數char c=97;System.out.println(c);}}
2.逸出字元
Java中的單引號、雙引號和反斜線都有特殊的用途,應該使用逸出字元的表示形式.
例如我們想在JAVA程式中表示一個絕對路徑:"c:\codes,但這種寫法得不到我們希後一個反斜線組成望的結果,因為JAVA會把反斜線當成逸出字元,所以我們應該寫成如下形式:"c:\\codes",只有同時寫兩個反斜線,JAVA會把第一個反斜線當成逸出字元,和後一個反斜線組成真正的斜線.
JAVA中 常用的逸出字元:
\b 退格符
\n 分行符號
\r 斷行符號符
\t 定位字元
\" 雙引號
\' 單引號
\\ 反斜線
3.強制類型轉換
下面程式示範了強制類型轉換的執行個體
public class NarrowConversion {public static void main(String[] args) {int iValue=233;//強制把一個int類型的值轉換成byte類型的值 byte bValue=(byte) iValue; //將輸出-23 System.out.println(bValue); double dValue=3.98; //強制把一個double型的值轉換為int int i=(int) dValue; System.out.println(i);}}
運行後的輸出結果:
-233
上面程式中,將一個233整型強制類型轉換為byte類型,從而變成了-23,這就是典型的溢出。
現在就上面的結果進行一下分析:
首先我們來瞭解一知識下電腦的基礎:
所有數字在電腦底層都是以2進位形式存在的 ,原碼就是直接將一個10進位數轉換成2進位數,但電腦是以補碼的形式儲存所有的整數。補碼的計算規則如下:正數的補碼和原碼完全相同,負數的補碼是其反碼加1;反碼是對原碼按位取反,除了最高位(符號位)保持不變。
現在繼續,看看上面的轉換問題,下面示範了轉換的過程:
//32位的int型 00000000000000000000000011101001//轉換為8位的byte型11101001
上圖,就是負數補碼和源碼轉換的示意圖。
下面的程式時隨機產生一個6位的字串。
public class RandomStr {public static void main(String[] args) {//定義一個空的字串String result="";//進行6次迴圈for(int i=0;i<6;i++){//產生一個97--122的int型整數 int intVal=(int) (Math.random() *26+97); //將int 強制轉換為char後串連到result後面 result=result+(char)intVal;}//隨機輸出字串System.out.println(result);System.out.println((char)97);System.out.println((char)122);}}