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

Vic*_*r S 5 c java char

刚才我读到"char是Java中唯一的无符号整数基本类型".这是否意味着char是Java中不可或缺的类型之一?

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

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

Ker*_* SB 7

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


Jus*_*ier 5

根据 Java原始数据类型教程:

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

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


另请记住,虽然charJava 中的类型保证为 16 位,但 C 施加的唯一限制是类型必须至少为 8 位。根据此答案的 C 规范参考:

非位字段的最小对象的最大位数(字节)

字符位8

因此,charC 中的 a 不一定与charJava 中的 a 表示相同范围的整数值。


Pet*_*rey 5

类似于@aioobe 的回答

int n = 5;
char ch = (char) '0' + 5; // '5'
Run Code Online (Sandbox Code Playgroud)

或者反过来

char ch = '9';
int i = ch - '0'; // 9
Run Code Online (Sandbox Code Playgroud)

或不寻常的

char ch = 'a';
ch += 1; // 'b';
Run Code Online (Sandbox Code Playgroud)

或奇怪的

char ch = '0';
ch *= 1.1; // '4' as (char) (48 * 1.1) == '4'

ch %= 16; // `\u0004`
int i = ch; // 4
Run Code Online (Sandbox Code Playgroud)

顺便说一句:来自 String.hashCode()

// int h = 0;
char val[] = value;
int len = count;

for (int i = 0; i < len; i++) {
    h = 31*h + val[off++];
}
Run Code Online (Sandbox Code Playgroud)