9

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

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

char c = 'A'; 

这到底是做什么的^?我认为 char 只接受 0 - 65,535 的值。我不明白您如何将“A”分配给它?

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

int a = 'B'

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

如果这是一个愚蠢的问题,我深表歉意。

我的整个人生都是一个谎言。

4

3 回答 3

10

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

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

于 2012-12-12T22:45:16.030 回答
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;
    }
}
于 2012-12-12T22:50:21.683 回答
2

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

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

于 2012-12-12T22:57:51.280 回答