java 中的字符数组实际上将什么存储为元素、char 或 unicode 值?

What does actually character array in java store as an element a char or a unicode value?

提问人:Satyam Mishra 提问时间:7/6/2023 更新时间:7/6/2023 访问量:54

问:

char[] rotk = U.toCharArray();

            for (int j = 0; j < rotk.length; j++) {
                rotk[j]+=cipher;
                 if(rotk[j]>122)
                {
                    rotk[j]=(char)(96+(rotk[j]-122));
                }
            }

如果字符存储在 char 数组中,那么在 if 语句中它如何与 122 进行比较,如果不是,那么为什么在此语句中我们再次将其类型转换为 char?rotk[j]=(char)(96+(rotk[j]-122));

请帮助我了解类型转换和存储在 char 数组中的元素的场景?

java 数组 unicode 强制转换 字符

评论

0赞 Ishan 7/6/2023
96+(rotk[j]-122- Java 始终将表达式的类型转换为最高级别。在这里,这个表达式会产生一个 int,它可以存储比 char 多得多的值。它类似于错误 。这里很长,是 64 位,而我是 32 位,所以无法容纳它。所以你必须打字并说你理解并接受后果。同样,int 是 4 个字节,char 是 2 个字节。因此,您必须显式地进行类型转换long l = 5; int i = l;l
0赞 Satyam Mishra 7/6/2023
那么在 char 数组中,它是存储为整数值还是特定字符?
0赞 dave_thompson_085 7/6/2023
或者,你可以这样做 - 众所周知,拉丁字母包含 26 个字母,并且像 etc 这样的复合赋值会自动转换(相当于 cast)回 LHS 类型。if(rotk[j]>'z') rotk[j]-=26;+= -= *=
0赞 Remy Lebeau 7/11/2023
@SatyamMishra正如文档所说:“char,其值是代表 UTF-16 代码单元的 16 位无符号整数”。你了解什么是“代码单元”吗?在维基百科上查阅 UTF-16

答: 暂无答案