在java中的char值转换期间,问号打印在控制台上

时间:2013-08-05 06:44:10

标签: java casting

在以下程序中,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);
    }
}

3 个答案:

答案 0 :(得分:5)

char不能为负数,所以当你写:

char b = (char) -65;

您有溢出,实际值为65,536 - 65。您可以使用

进行验证
System.out.println((int) b);

打印:65471

该角色可能未由您的控制台处理,例如可能显示为空白或正方形。

答案 1 :(得分:0)

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

答案 2 :(得分: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