java中char的用途

时间:2010-12-16 07:25:34

标签: java

我看到char和short都是两个字节, 以下内容也是有效的:

char a = 'x';
int b =  a;
long c = a;

然而,当我做短d = a;我收到的错误无法从char转换为short。 即使两者都是两个字节。

我可以看到char的一个用途是当你打印它时,它会显示角色。这是char的唯一用途吗?

7 个答案:

答案 0 :(得分:4)

在Java中,数据类型char是无符号的2字节变量,而short是有符号的2字节变量。由于存在这种差异,您无法将char转换为short,因为char的额外位不是有符号位。

这意味着,如果您将char转换为short,则必须截断导致投诉的char

答案 1 :(得分:3)

您可能希望阅读data typestype casting以便清楚了解。

当您尝试short d=a;时,您正尝试进行'缩小原始转换'。

  

5.1.3缩小原始转换次数

     

以下22个具体转换   原始类型称为   缩小原始转换:

short to byte or char
char to byte or short
int to byte, short, or char
long to byte, short, char, or int
float to byte, short, char, int, or long
double to byte, short, char, int, long, or float
     

缩小转化次数可能会失败   有关整体的信息   数值的大小和可能   也失去了精确度。

答案 2 :(得分:2)

虽然char是无符号16位类型,但它并不是设计用于这样的。从概念上讲,char是一个Unicode字符(更准确地说,是Unicode子集中的一个字符,可以用UTF-16中的16位表示),这比一个数字更抽象。您应该只为文本字符使用字符。我认为将它作为整数类型在Java方面是一种糟糕的设计。它不应该允许char和整数类型之间的任何转换,除非使用特殊的实用方法。像boolean是不可能转换为整数和返回。

答案 3 :(得分:1)

char通常仅用于文本,是的。

char是无符号的,而short是签名的。

答案 4 :(得分:1)

查看Java Docs

一切都在那里...... Char和Short不一样。

答案 5 :(得分:1)

通常,我使用char作为文本,使用short作为数字。 (如果我使用short。我宁愿在它们可用时使用int / long。)

您可能想要“转换”变量。这是这样做的:

char a = 'x';
short sVar = (short)a;
System.out.println(a);
System.out.println(sVar);

答案 6 :(得分:0)

char是Unicode字符,因此必须是无符号的。 short与签名的所有其他数字基元类型一样。因此,shortchar涵盖两个不同的值范围,导致编译器抱怨分配。