1

在以下程序中,char 原语在转换 int 值期间不能忽略 _ve 符号...

public class CharConsole {

    public static void main(String[] er) {
        char a = (char) 65;
        char b = (char) -65;
        char c = (char) 98;
        System.out.println(a);
        System.out.println(b);
        System.out.println(c);
    }
}
4

3 回答 3

4

Achar不能为负数,因此当您编写时:

char b = (char) -65;

你有一个溢出,实际值为65,536 - 65. 你可以用

System.out.println((int) b);

打印:65471

该字符可能不会由您的控制台处理,例如可能显示为空白或正方形。

于 2013-08-05T06:48:04.570 回答
0

在这里期待什么?字符 int 值映射到字符编码表。没有负表映射。当请求的字符代码超出编码表范围时,它将始终显示一个问号...

于 2013-08-05T06:48:59.247 回答
0

这取决于什么“将 int 转换为 char”。

如果您只是想将值转换为 int,则可以使用 Java 的类型转换表示法进行转换:

int i = 97; // 97 is 'a' in ASCII
char c = (char) i; // c is now 'a'

但 -ve 不是任何 ASCII 字符值,也不代表任何字符

我们可以回击

char b=(char)-65;
int i = (int)b;

打印我将是 65471

于 2013-08-05T06:56:05.110 回答