50分请高手帮忙解释下下面这段java代码由于没有学过JAVA,拿到这段代码非常郁闷,看不懂,s 是一个16进制数字“2020661a”代码如下:s=s.toUpperCase(); // 这应该是转大写吧?char[] astore7 = s.toCharArray();
来源:学生作业帮助网 编辑:六六作业网 时间:2024/11/18 05:56:50
50分请高手帮忙解释下下面这段java代码由于没有学过JAVA,拿到这段代码非常郁闷,看不懂,s 是一个16进制数字“2020661a”代码如下:s=s.toUpperCase(); // 这应该是转大写吧?char[] astore7 = s.toCharArray();
50分请高手帮忙解释下下面这段java代码
由于没有学过JAVA,拿到这段代码非常郁闷,看不懂,
s 是一个16进制数字“2020661a”
代码如下:
s=s.toUpperCase(); // 这应该是转大写吧?
char[] astore7 = s.toCharArray();
int istore6 = s.length(); // =8?
int istore5 = 0;
for(int i = 0; i < istore6; i++)
{
int istore3 = astore7[i];
istore5 += istore3;
}
istore5 = ((istore5 & 65535) * 78) + 2199;
请通晓的高手按照每一行的结果、运算进行解释,特别是for循环中每一步是多少,最后的&运算的详细说明,以及最后的结果.分数不多,
50分请高手帮忙解释下下面这段java代码由于没有学过JAVA,拿到这段代码非常郁闷,看不懂,s 是一个16进制数字“2020661a”代码如下:s=s.toUpperCase(); // 这应该是转大写吧?char[] astore7 = s.toCharArray();
s=s.toUpperCase(); // 将字符串s中的所有字符转换成大写
char[] astore7 = s.toCharArray();//将字符串s拆成字符数组;等同{'2','0','2','0','6','6','1','A'}
int istore6 = s.length(); // 获取astore7字符数组的长度;刚好是8个
int istore5 = 0; //定义一个变量istore5,初始值为0
for(int i = 0; i < istore6; i++) //循环;从0开始;循环8次;i的值依次为0,1,2...7
{
//char类型转为int类型时;0——>48 1——>49 2——>50
int istore3 = astore7[i]; //定义一个变量istore3 让它的值为字符数组中的每一个;
//如i=0时;就是2转为int为50,等于i=1时就是0;转为int就是48...
istore5 += istore3; //将istore5的值加上istore3,如第一次是0,加上istore3后就是50了;
//然后下一次循环再加的话就是加48了.这句话可以看成istore5 = istore5 + istore3
}
//& 是为与;将2个值转化成二进制的值再做位计算;
//这里循环完毕之后istore5的结果是418;转化成二进制为110100010
//而65535转换成二进制为:1111111111111111 与它做位运算时结果还是418.
//可以得出的结论是任何比65535小的数与65535做位运算结果还是原来的值
istore5 = ((istore5 & 65535) * 78) + 2199;//然后将418乘以78等于32604再加2199结果就是34803