剛纔我讀到「char是Java中唯一的無符號整型原語類型」。 這是否意味着char是Java中不可或缺的類型之一?字符類型可以分類爲整數嗎?
和C一樣,最近我已經讀過C類型包括標量類型,函數類型,聯合類型,聚合類型和標量類型包括指針類型和算術類型,然後算術類型包括整型和浮點型,整型包括枚舉類型和字符類型。
在Java和C中,字符類型是否真的可以歸類爲整數?
剛纔我讀到「char是Java中唯一的無符號整型原語類型」。 這是否意味着char是Java中不可或缺的類型之一?字符類型可以分類爲整數嗎?
和C一樣,最近我已經讀過C類型包括標量類型,函數類型,聯合類型,聚合類型和標量類型包括指針類型和算術類型,然後算術類型包括整型和浮點型,整型包括枚舉類型和字符類型。
在Java和C中,字符類型是否真的可以歸類爲整數?
是的,一個char
是它出現的所有流行語言中的一個整體類型。 「積分」意味着它的頻譜是離散的,任何兩個不同值之間的最小差值是1
。與其他整數類型相比,支持值的所需範圍通常很小。計算機硬件傳統上將整數視爲基本數據類型;相比之下,算術浮點類型是更新和更復雜的加法。
或者,如果類型「T」的對象的值是整數,則類型「T」是整數類型。 – ouah 2012-07-26 15:17:49
@ouah:嗯。是一個整數嗎? :-) – 2012-07-26 15:51:09
@KerrekSB在C中,它甚至是一個'int'。 – 2012-07-26 15:56:52
我不能確定的整體式的正式定義,但簡而言之,是的,char
是在Java中不可或缺的類型,因爲它可以被看作是代表一個整數。
例如你可以做
char c1 = 'a' + 'b';
char c2 = 5;
char c3 = c2 + 3;
int i = c3;
char c4 = (char) i;
等。
在記憶中,基本上所有東西都是完整的......但是。 char是C,C++和Java中的整數類型。
根據Java Primitive Data Types教程:
炭:char數據類型是單16位的Unicode字符。它的最小值爲'\ u0000'(或0),最大值爲'\ uffff'(或65,535)。
所以是的,它是一個16位無符號整數。無論您是使用類型來表示一個數字或字符是由你...
char
類型是保證在Java中的16位,唯一的限制Ç規定是,類型必須至少爲8位。根據從
this answer的C時的參數參考:
這不是一個位字段(字節)CHAR_BIT爲最小的對象的比特
最大數目8
所以在C char
確實不一定表示與Java中的char
相同的整數值範圍。
C規範要求將char類型實現爲1字節整數。其他類型的規格並不總是如此清晰。例如,原來的Kernigan和Ritchie本C語言書中說,只要短和長而言,不同的實現中,你只能依靠事實短是不超過長。
java中的char是UTF-16,這意味着它是一個雙字節字符。 c中的'char'被定義爲'sizeof(char)'總是產生1,這意味着它必然是1個字節的值。 – 2012-07-26 14:54:37
UTF-16在一個字節爲8位的機器上只有兩個字節。字節取決於體系結構。 – noisesmith 2013-09-14 17:46:21
到@ aioobe的回答類似
int n = 5;
char ch = (char) '0' + 5; // '5'
或反向
char ch = '9';
int i = ch - '0'; // 9
或不尋常的
char ch = 'a';
ch += 1; // 'b';
或奇
char ch = '0';
ch *= 1.1; // '4' as (char) (48 * 1.1) == '4'
ch %= 16; // `\u0004`
int i = ch; // 4
順便說一句:從String.hashCode()
// int h = 0;
char val[] = value;
int len = count;
for (int i = 0; i < len; i++) {
h = 31*h + val[off++];
}
'char'在Java被定義爲一個UTF-16字符,這意味着它是一個2字節值0某處和65535之間的這種可以容易地解釋作爲一個整數(數學概念,而不是'int')。 c中的「char」被定義爲0到255之間的1個字節字符。 – 2012-07-26 14:52:43
@HansZ儘管'CHAR_BIT == 8'是最常見的,但C標準允許更大的值。甚至還有一些32位'char',iirc的實現。 – 2012-07-26 15:18:56
@DanielFischer ANSI C標準(C99)$ 2.2.4.2:對最小對象的比特 *最大數不是一個位字段(字節) CHAR_BIT 8 用於類型的對象*最小值符號字符 SCHAR_MIN符號字符 SCHAR_MAX 127 *最大值爲unsigned char類型的對象類型的對象-127 *最大值 UCHAR_MAX 255 – 2012-07-26 15:26:14