gpt4 book ai didi

java - a = a + b--> 无法从 int 转换为 char。 a+=b-->通过

转载 作者:行者123 更新时间:2023-11-30 07:10:36 24 4
gpt4 key购买 nike

<分区>

你好,我这里有个情况。

String myStrings = new String();
myStrings = "10.42.0.1";
char[] charNum = myStrings.toCharArray(); //convert string to char array
char checkSum = 0;

答:

for(int i = 0; i <= 8; i++) { 
checkSum += charNum[i];
}

乙:

for(int i = 0; i <= 8; i++) { 
checkSum = checkSum +charNum[i];
}

编译 A:正如我所期望的那样工作

编译 B:类型不匹配:无法从 int 转换为 char

因为我知道 java 会隐式地将 a+=b 转换为 a=char(a+b),所以 A 可以正常工作。但真正让我担心的是 charNum[i] 有什么问题。好的,HeadFirstJava 告诉我该数组是一个对象,所以 charNum[i] 是一个引用变量(4 字节),我接受这一点。而charNum[i](引用变量)指向一个char(2bytes),我想用那个char(2bytes)来做算术运算,但看起来 JAVA 说不。当我输入

checkSum = checkSum+charNum[i];
( 2bytes ) = ( 2bytes ) + ( 4bytes )

这意味着 charNum[i] 在内存中有 4 个字节,这让我很困惑,因为我使用 char(2bytes) 来计算,而不是 charNum[i](引用变量)。如果它真的使用 charNum[i](4bytes, reference variable) 来做数学运算,为什么我得到正确的校验和值?那么谁能告诉我是我弄错了 HeadFirstJava 还是我错过了一些概念?

如果您能详细解释一下,我们将不胜感激。

提前致谢。

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com