为什么字符数组在Java中接受整数值?

Mah*_*ran 2 java arrays

当然我是Java的初学者,之前我学过C.请看看下面的代码段.

char Character;
int Number = 27;
Character = Number;
System.out.println(Character);
Run Code Online (Sandbox Code Playgroud)

上述代码无法编译为"信息丢失"的错误

以下代码......

char Character = ‘F’;
int Number;
Number = Character;
System.out.println(Number);`
Run Code Online (Sandbox Code Playgroud)

上面的代码可以编译,但输出是"70"......而不是"F"

另请查看以下代码......

char [] arrayCh = new char [3];
arrayCh [0] = 27;
System.out.println(arrayCh[0]);
Run Code Online (Sandbox Code Playgroud)

上面的代码可以编译,但它也给出了一个不熟悉的符号......

我知道有关ASCII值的问题和作为'char'的内存需要16位,'int'需要32位.因此,无法将整数值分配给字符变量,而可以将字符值分配给整数变量作为"ASCII"值.

我的问题是......为什么'char'数组接受'int'值...?谁能解释一下?

JB *_*zet 5

char是2字节长的无符号整数.27是一个整数文字,在char范围内,因此编译器接受允许您将其分配给char.

'F'是一个字符文字,表示字符F,在unicode标准中具有十进制值70.因此,将"F"分配给整数与分配70相同.

  • 它与数组没有任何关系.做`char c = 27;`也可以.正如我的回答所解释的:*27是一个整数文字,它在char的范围内,因此编译器接受让你将它分配给char*.char是两个字节上的无符号正整数.27也是一个适合两个字节的正整数,因此编译器接受转换:你不会丢失信息. (3认同)