【发布时间】:2017-01-22 21:21:45
【问题描述】:
我读到虽然 byte 类型占用 8 位内存,char 类型占用 16 位内存,但从 byte 到 char 的转换被认为是缩小了,因为 byte 是有符号的,而 char 是无符号的。我认为这意味着当我们将具有负值的类型字节转换为 char 时,我们会丢失负数,这就是我们的信息丢失,因此转换正在缩小。
我正在尝试在 Java 程序中对此进行测试。
public class Test
{
public static void main (String[] args)
{
byte num = -1;
char test = (char)num;
System.out.println(test);
}
}
我预计打印测试会输出:
1
这将是 -1 没有负号,因为 char 是无符号的。这实际上输出:
?
我的程序或将字节转换为字符的想法有问题吗?
【问题讨论】:
-
用调试器看看
test“包含”什么,你就明白了。 -
(重复的问题还包含此转换期间的下溢,这也发生在此处)
-
二进制:字节:11111111 (-1) 字符:1111111111111111 (65535)
标签: java