Java中char转int类型转换:二者的类型关系是什么?
char与int类型的转换关系解析
首先明确:char和int既不是父类子类关系,也不是同类型。它们都是.NET体系中的值类型,共同继承自System.ValueType(最终继承自object),但彼此之间没有直接的继承关联。
你之所以能在代码里做int(r)这种转换,根本原因是:
- char的底层本质是一个无符号16位整数(取值范围0~65535),用来表示UTF-16编码的单个字符;
- int是32位有符号整数,它的取值范围完全覆盖了char的范围,所以从char到int的转换是绝对安全的——C#不仅允许显式转换(就是你写的
int(r)),甚至支持更简洁的隐式转换:
char r = 'a'; int a = r; // 隐式转换,编译完全通过 int b = int(r); // 显式转换,同样合法
你提到的“需存在父类子类或同类型关系才能转换”的规则,并不适用于数值类型之间的预定义转换。C#为了方便数值操作,特意对所有数值类型(包括char、int、float、double等)提供了一套内置的转换规则,只要转换逻辑安全(或通过显式声明来确认风险),就可以直接转换,不需要依赖继承或同类型关系。
内容的提问来源于stack exchange,提问作者shivu2012
相关产品推荐
相关产品推荐

