Java代码中odd=!odd语句的作用是什么?是否为布尔值取反操作?
odd = !odd 语句含义
这是布尔变量的取值翻转操作,每次执行都会把odd的布尔值取反:
- 若
odd当前为true,执行后赋值为false - 若
odd当前为false,执行后赋值为true
和你提到的几种写法的区别
odd = !odd和你列举的几个写法都不等价:
odd = !false是固定赋值语句,执行后odd永远为true,不会随原有取值变化odd = !true是固定赋值语句,执行后odd永远为false,不会随原有取值变化odd == false是布尔判断表达式,作用是判断odd是否等于false,返回布尔结果,不属于赋值操作,和该语句完全不同
该语句在当前代码中的作用
你贴的这段代码是实现升序数组的摆动排序逻辑,最终输出的数组会按照「小、大、次小、次大……」的规律交替排列:
- 代码开头先调用
Arrays.sort(arr)把原数组升序排序,用t指针指向数组开头(最小元素的位置),k指针指向数组末尾(最大元素的位置) odd初始值为false,第一轮循环走else分支,取当前最小元素放入结果数组,t指针后移- 执行
odd = !odd后odd变为true,第二轮循环走if分支,取当前最大元素放入结果数组,k指针前移 - 每次循环结束都翻转
odd的取值,交替取头尾元素填入结果数组,最终完成摆动排序的效果
内容的提问来源于stack exchange,提问作者Amit Chauhan
相关产品推荐
相关产品推荐

