Why does =+ not cause a compile error? [duplicate]

There’s no compilation error because + is a valid (albeit fairly useless) unary operator in the same way that - is:

int x = +1;
int y = -1;

The relevant section in the Java Language Specification is Unary Plus Operator + (§15.15.3 ). It specifies that invoking the unary + operation results in Unary Numeric Promotion (§5.6.1) of the operand. This means that:

  • If the operand is of compile-time type Byte, Short, Character, or Integer, it is subjected to unboxing conversion
    (§5.1.8).
    The result is then promoted to a value of type int by a widening
    primitive conversion
    (§5.1.2)
    or an identity conversion
    (§5.1.1).

  • Otherwise, if the operand is of compile-time type Long, Float, or Double, it is subjected to unboxing conversion
    (§5.1.8).

  • Otherwise, if the operand is of compile-time type byte, short, or char, it is promoted to a value of type int by a widening
    primitive conversion
    (§5.1.2).

  • Otherwise, a unary numeric operand remains as is and is not converted.

In any case, value set conversion
(§5.1.13)
is then applied.

In short, this means that

  1. numeric primitive wrapper types are unboxed, and;
  2. integer types smaller than int are widened to int.

Leave a Comment

Hata!: SQLSTATE[HY000] [1045] Access denied for user 'divattrend_liink'@'localhost' (using password: YES)