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

为什么Java中的字符数组接受整数值?,java,arrays,Java,Arrays,当然我是Java的初学者,之前我学过C。请看下面的代码段 char Character; int Number = 27; Character = Number; System.out.println(Character); 上述代码不能编译为“信息丢失”错误 鉴于以下代码 char Character = ‘F’; int Number; Number = Character; System.out.println(Number);` char [] arrayCh = new char

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

char Character;
int Number = 27;
Character = Number;
System.out.println(Character);
上述代码不能编译为“信息丢失”错误

鉴于以下代码

char Character = ‘F’;
int Number;
Number = Character;
System.out.println(Number);`
char [] arrayCh = new char [3];
arrayCh [0] = 27;
System.out.println(arrayCh[0]);
上面的代码可以编译,但输出是“70”。。。不是“F”

还要看一下下面的代码

char Character = ‘F’;
int Number;
Number = Character;
System.out.println(Number);`
char [] arrayCh = new char [3];
arrayCh [0] = 27;
System.out.println(arrayCh[0]);
上面的代码可以编译,但它也给出了一个不熟悉的符号

我知道有关ASCII值的问题,而作为“char”的内存需要16位,“int”需要32位。因此,不能将整数值指定给字符变量,而可以将字符值作为“ASCII”值指定给整变量


我的问题是。。。为什么“char”数组接受“int”值。。?有人能解释一下吗?

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


'F'
是一个字符文字,表示字符F,在unicode标准中,其十进制值为70。因此,将“F”指定给整数与指定70是一样的。

70是字符FConstant表达式的ASCII码。您可以使用casting:character=(char)Number;我知道,朋友。。。请看最后一段代码。。。“char”数组接受整数值作为数组元素。这怎么可能?或者这是Java中数组的行为?它与数组没有任何关系。做
charc=27也可以。正如我的回答所解释的:27是一个整数文本,在字符的范围内,因此编译器接受让您将其分配给字符。字符是两个字节上的无符号正整数。27也是一个正整数,适合两个字节,因此编译器接受转换:您不会丢失信息。。。这让我明白了。。!我给这个字符分配了一个负整数,然后编译器没有接受。。!与阵列无关。。!谢谢你,朋友。。!