Skip to main content
The ! (Logical NOT) operator is a unary operator that performs logical negation on a single boolean expression. It evaluates to the logical complement of its operand, strictly inverting its state: true becomes false, and false becomes true.

Technical Characteristics

  • Type Constraints: The operand must resolve to the primitive boolean type or the wrapper class java.lang.Boolean. Unlike C or C++, Java does not allow the ! operator to be applied to numeric types (e.g., !0 is a compile-time error), characters, or arbitrary object references.
  • Unboxing Behavior: If the operand is an instance of java.lang.Boolean, the JVM implicitly unboxes it to a primitive boolean before applying the negation. If the wrapper reference is null, the unboxing process throws a NullPointerException at runtime.
  • Precedence: As a unary operator, ! has very high precedence. It binds more tightly than arithmetic, relational, equality, and binary logical operators (&&, ||).
  • Associativity: It evaluates from right to left. Multiple logical NOT operators can be chained (e.g., !!operand). Syntactically, this is a valid chain of unary expressions evaluated right-to-left; however, it is logically and semantically redundant because the double negation resolves to the original boolean value.

Truth Table

Syntax and Evaluation Mechanics

Tired of Poor Java Skills? Fix That With Deep Grasping!Learn More