在java中转换char值的过程中,控制台上会打印问号



在下面的程序中,不能在int值的强制转换过程中忽略char原语的_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);
    }
}

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

char b = (char) -65;

您有一个溢出,实际值为65,536 - 65。您可以使用进行验证

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

打印:65471

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

这里需要什么?字符int值映射到字符编码表。不存在负表映射。它将始终显示一个问号,因为请求的字符代码超出了编码表范围。。。

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

如果您只是想在int中强制转换值,您可以使用Java的typecast表示法进行强制转换:

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;

打印I它将是65471

最新更新