char类型可以归类为整数吗?

刚才我读到“char是Java中唯一的无符号整数原始类型”。 这是否意味着char是Java中不可或缺的类型之一?

与C中相同,最近我读过C类型包括标量类型,函数类型,联合类型,聚合类型,标量类型包括指针类型和算术类型,然后算术类型包括整数类型和浮点类型,整数类型包括枚举类型和字符类型。

char类型真的可以归类为Java和C中的整数吗?

是的, char是所有流行语言中不可或缺的类型。 “积分”表示其频谱是离散的,任何两个不同值之间的最小差异是1 。 与其他整数类型相比,所需的支持值范围通常非常小。 计算机硬件传统上将整数视为基本数据类型; 相比之下,算术浮点类型是更新的和更复杂的添加。

类似于@ 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 

BTW:来自String.hashCode()

 // int h = 0; char val[] = value; int len = count; for (int i = 0; i < len; i++) { h = 31*h + val[off++]; } 

根据Java Primitive Data Types教程:

char :char数据类型是一个16位Unicode字符。 它的最小值为’\ u0000’(或0),最大值为’\ uffff’(或65,535(含))。

所以是的,它是一个16位无符号整数。 您是否使用类型来表示数字或字符取决于您…


还要记住,尽管在Java中保证char类型为16位,但C所强加的唯一限制是类型必须至少为8位。 根据这个答案的C规范参考:

最小对象的最大位数,不是位字段(字节)

CHAR_BIT 8

因此,C中的char不一定表示与Java中的char相同的整数值范围。

我不确定整数类型的正式定义,但简而言之,是的, char是Java中的一个整数类型,因为它可以被视为表示整数。

你可以这样做

 char c1 = 'a' + 'b'; char c2 = 5; char c3 = c2 + 3; int i = c3; char c4 = (char) i; 

等等。

在记忆中,基本上一切都是不可或缺的……但是。 char是C,C ++和Java中的整数类型。

C规范要求将char类型实现为1字节整数。 其他类型的规格并不总是那么清楚。 例如,最初的Kernigan和Ritchie C书说,就短期长期而言,在不同的实施中,你只能依赖于短期不长的事实。