~是按位取反(0变1,1变0)的意思,按位取反是针对二进制的,比如2的二进制表示为010,那么~2就是101每位可以代表一个含义,针对你的问题。我们可以定义SelectionKey.OP_READ为100,表示读权限我们可以定义SelectionKey.OP_WRITE为010,表示写权限我们可以定义SelectionKey.OP_EXECUTE为001,表示可执行权限则111就表示拥有所有的读、写、可执行权限而~SelectionKey.OP_WRITE就是~010 == 101,就是除写之外的所有权限(即可读,可执行)
Java 位运算符 按位非(NOT) .按位非(NOT)按位非也叫做补,一元运算符NOT“~”是对其运算数的每一位取反。例如,数字42,它的二进制代码为:00101010 经过按位非运算成为11010101 =================================你还是看这个帖子吧。总结的比较全。而且例子详细。http://blog.csdn.net/vvggsky/archive/2007/04/16/1565946.aspx