运算符可以是一元、二元或三元的。
(1)一元运算符有1个操作数。例如,递增运算符"++"就是一元运算符。
/** Unary operators, of type Unary.
*/
public static final int POS = ERRONEOUS + 1; // +
public static final int NEG = POS + 1; // -
public static final int NOT = NEG + 1; // !
public static final int COMPL = NOT + 1; // ~
public static final int PREINC = COMPL + 1; // ++ _
public static final int PREDEC = PREINC + 1; // -- _
public static final int POSTINC = PREDEC + 1; // _ ++
public static final int POSTDEC = POSTINC + 1; // _ --
/** unary operator for null reference checks, only used internally.
*/
public static final int NULLCHK = POSTDEC + 1;
(2)二元运算符有2个操作数。例如,除法运算符"/"有2个操作数。
/** Binary operators, of type Binary.
*/
public static final int OR = NULLCHK + 1; // ||
public static final int AND = OR + 1; // &&
public static final int BITOR = AND + 1; // |
public static final int BITXOR = BITOR + 1; // ^
public static final int BITAND = BITXOR + 1; // &
public static final int EQ = BITAND + 1; // ==
public static final int NE = EQ + 1; // !=
public static final int LT = NE + 1; // <
public static final int GT = LT + 1; // >
public static final int LE = GT + 1; // <=
public static final int GE = LE + 1; // >=
public static final int SL = GE + 1; // <<
public static final int SR = SL + 1; // >>
public static final int USR = SR + 1; // >>>
public static final int PLUS = USR + 1; // +
public static final int MINUS = PLUS + 1; // -
public static final int MUL = MINUS + 1; // *
public static final int DIV = MUL + 1; // /
public static final int MOD = DIV + 1; // %
/** Assignment operators, of type Assignop.
*/
public static final int BITOR_ASG = MOD + 1; // |=
public static final int BITXOR_ASG = BITOR_ASG + 1; // ^=
public static final int BITAND_ASG = BITXOR_ASG + 1; // &=
public static final int SL_ASG = SL + BITOR_ASG - BITOR; // <<=
public static final int SR_ASG = SL_ASG + 1; // >>=
public static final int USR_ASG = SR_ASG + 1; // >>>=
public static final int PLUS_ASG = USR_ASG + 1; // +=
public static final int MINUS_ASG = PLUS_ASG + 1; // -=
public static final int MUL_ASG = MINUS_ASG + 1; // *=
public static final int DIV_ASG = MUL_ASG + 1; // /=
public static final int MOD_ASG = DIV_ASG + 1; // %=
(3)三元运算符有3个操作数。例如,条件运算符"?:"具有3个操作数。
运算符的行为还可能因所提供的操作数的数量而异。减法运算符"-"既是一元运算符又是二元运算符。对于减法运算符,如果只提供一个操作数,
则该运算符会对操作数取反并返回结果;如果提供两个操作数,则减法运算符返回这两个操作数的差。