Java中的字符文字?

时间:2012-12-12 22:44:06

标签: java

所以我刚刚开始阅读“Java In A Nutshell”,并在第一章中指出:

“要在Java程序中包含字符文字,只需将其放在单引号之间” 即。

char c = 'A'; 

这到底是做什么的?我认为char只接受0到65,535的值。我不明白你怎么能给它分配'A'?

您还可以将“B”分配给int吗?

int a = 'B'

'a'的输出是66.你在哪里/为什么要使用上面的^操作?

如果这是一个愚蠢的问题,我道歉。

我的一生都是谎言。

3 个答案:

答案 0 :(得分:10)

char实际上是一个整数类型。它存储相关字符的16位Unicode整数值。

您可以查看http://asciitable.com之类的内容,查看不同字符的不同值。

答案 1 :(得分:2)

如果查看ASCII图表,字符“A”的值为41十六进制或65十进制。使用'字符括起单个字符使其成为字符文字。使用双引号(")会使它成为字符串文字。

分配char someChar = 'A';与说char someChar = 65;完全相同。

至于为什么,考虑一下你是否只想查看一个String是否包含一个十进制数字(并且你没有方便的功能来执行此操作)。你可以使用类似的东西:

bool isDecimal = true;
for (int i = 0; i < decString.length(); i++) {
    char theChar = decString.charAt(i);
    if (theChar < '0' || theChar > '9') {
        isDecimal = false;
        break;
    }
}

答案 2 :(得分:2)

在Java中,char字面值表示UTF-16(字符编码模式)代码单元。你从UTF-16得到的是整数值(以及它们在内存中保存的方式)与相应字符(单位代码的图形表示)之间的映射。

您可以将字符括在单引号中 - 这样您就不需要记住您使用的字符的UTF-16值。您仍然可以从字符类型中获取整数值,并将其置于例如int类型中(但通常不是简而言之,它们都使用16位,但短值是-32768到32767,char值是0到65535左右)