黑马程序员技术交流社区
标题:
请大家帮忙看下,循环条件的问题
[打印本页]
作者:
落星追恒
时间:
2016-4-10 08:36
标题:
请大家帮忙看下,循环条件的问题
String str = "HM程序员a";
byte[] bys = str.getBytes("GBK");
int num = 0;
boolean blns = false; // 初始值 相当于阀门 决定了num的值
for (int i = 0; i < 4; i++) {
if (bys[i] < 0 && !blns) { // 判断:中文字符转换了字节后 是为负整数的 && 取blns的相反值
blns = true;
} else {
num++;
blns = false;
}
}
System.out.println(num);
我的问题是
if (bys[i] < 0 && !blns) 这个为什么可以成立,!blns的值不是一直都是false吗,那!blns就是true,怎么可能会走到这一步呢?这个条件应该是没办法进去的吧,可运行结果又是可以进去的,我哪里忽略了什么?
作者:
kcufow
时间:
2016-4-10 09:31
由于String str = "HM程序员a";
byte[] bys = str.getBytes("GBK");数组第三个元素bys[2]的值<0(汉字为两个字节以负数形式存储)。即当for循环走到第三次时if括号内语句为true,就会执行blns=true这一语句。走到下一次循环时!blns为false就会走else语句,最终输出num为3
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2