!表示“非”,是一种逻辑运算。若a的真值为1,则!a为0;若a的真值为0,则!a为1。
取反,是Java与C/C++使用补码来表示二进制数,在补码表示中,最高位为符号位,正数的符号位为0,负数为1。
if(!a):如果a为假,那么!a为真,if(!a)为真。
如果a为真,那么!a为假,if(!a) 为假。
if(!-1)结果为false,if(!1)结果为false,if(0)结果为flase,if(!0)结果为true,if(1)结果为true。
if(!a==0),如果a为true,!a就为false(0),那么if(!a==0)为true.
if(!a==0),如果a为false,!a就为true(1),那么if(!a==0)为false.
只要!一个不为0的数,无论正负数都是false,只有!0才为true。
因为在逻辑判断中,编译器把非0的归为一种,把0归为一种,不是真就是假。
因此后面就很好判断了。