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书说,就短期和长期而言,在不同的实施中,你只能依赖于短期不长的事实。