char 和 byte 區別


byte 是字節數據類型 ,是有符號型的,占1 個字節;大小范圍為-128—127 。

char 是字符數據類型 ,是無符號型的,占2字節(Unicode碼 );大小范圍 是0—65535 ;char是一個16位二進制的Unicode字符,JAVA用char來表示一個字符 。

1,char可以表示中文字符,byte不可以;

2,char可以表示一個整數,但不能帶符號,只能是正數,范圍是0-65535;byte有符號型整數,范圍是-128-127;

3,char對於英文字符可以直接轉換(按Unicode碼) 例如 :char c = 65;  System.out.println(c); 結果為A

注意:char c ='A'  ,變量中實際存儲的是該字符的Unicode編碼

題外話:

示例: 下面的程序計算了一個循環的迭代次數,並且在該循環終止時將這個計數值打印了出來。那么,它打印的是什么呢? 

public static void main(String[] args) {
		byte bytes[] = new byte[256]; 
		for (int i = 0; i < 256; i++) 
		bytes[i] = (byte)i; 
		String str = null;
		str = new String(bytes);
		for (int i = 0, n = str.length(); i < n; i++) 
		System.out.println((int)str.charAt(i) + " "); 
	}

 

  

 

byte數值通過String構造器被轉換成char數值,最后char數值被轉型成int數值被打印出來.

因為char是無符號的,所以byte的負值轉成 char型是一個非數值型的特定字符.String構造器在未指定字符集的時候,采用jre的缺省字符集. 在通過解碼使用平台缺省字符集的指定byte數組來構造一個新string 時,該新string 的長度是字符集的一個函數,因此,它可能不等於byte數組的長度.當給定的所有字節在缺省字符集中並非全部有效時,這個構造器是不確定的.

只有"ISO-8859-1"能讓該程序按順序打印0-255,此處應顯示的指定字符集.str = new String(bytes,"ISO-8859-1");

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM