整型变量0和1相互切换
今天在做项目时遇到一个问题,要对用户的状态进行切换。前端传过来的是一个整型变量status,1为启用,0为禁用。如何切换呢?
使用数学运算
status = 1 - status;
很明显,当status为1时,1-status为0;当status为0时,1-status为1。
使用位运算
status ^= 1; // 使用异或运算
^= 是位异或运算符,它会将 status 的每一位与其右侧的值进行异或运算。由于 0 ^ 1 == 1 且 1 ^ 1 == 0。
使用三目运算符
status = (status == 0) ? 1 : 0;
使用数组
int[] toggleMap = {1, 0};
status = toggleMap[status];
用一个映射数组来实现转换
总结
使用简单的数学运算或位运算底层实现比较快,而使用条件表达式或映射数组可读性更强。建议防御性编程🤡,你还有什么更好的办法实现吗?