All the OperatorsPrecedencePostfix operatorsUnary prefix operatorsObject creation and castingMultiplicative operatorsAdditive operatorsShift operatorsRelational operatorsEquality and inequalityANDExclusive ORORThe ternary operatorThe assignment operators IThe assignment operators IIThe assignment operators IIIThe assignment operators IVWhat you need to knowThe EndAll the OperatorsPrecedence•An operator with higher precedence is done earlier (prededes) one with lower precedence–A higher precedence is indicated with a lower number; zero is the highest precedence•Most of the time, operators with equal precedence are done left to right–Examples: 3 + 4 * 5 gives 23 10 - 5 - 2 gives 3•Exceptions: unary operators, casts, assignment operators, the ternary operator: all done right to leftPostfix operators(parameters) Parameter lists[ ] Brackets indicate indexing into an array. Accesses methods and variablesexpr++, expr-- Postincrement, postdecrementUnary prefix operators++expr Preincrement--expr Predecrement+ - Unary plus and unary minus ! Logical negation (not)~ Bitwise complement (invert every bit)Object creation and casting new Create a new instance of a class (type) Cast (convert) to the given type•Slides are in order of decreasing precedence–Higher precedence means “more tightly bound”–The lowest precedence operator is the “main” operator in an expressionMultiplicative operators* Multiply/ Divide% Modulus•These all have the same precedenceAdditive operators+ Add- SubtractShift operators<< Left shift, end off–For small integers, this is equivalent to multiplying by a power of two–Example: 100 << 3 gives 800>> Right shift with sign extension–For small integers, this is equivalent to an integer divide by a power of two–Example: 100 >> 2 gives 25>>> Right shift with zero fill–Does not make sense for numbersRelational operators< Less than<= Less than or equal to> Greater than>= Greater than or equal to•These all have the same precedence, and it is higher than equality/inequality testsEquality and inequality== Test if equal–For primitive types, tests if the values are equal–For objects, tests if both sides refer to the same object!= Test if not equal–For primitive types, tests if the values are unequal–For objects, tests if the sides refer to different objectsAND& AND–For integral types, ANDs each corresponding pair of bits–For booleans, performs the logical AND operation•Boolean & is like && , but both operands are evaluated, even if it is possible to decide the result from the left operand aloneExclusive OR^ XOR–For integral types, XORs each corresponding pair of bits–For booleans, performs the logical XOR operation•a ^ b is true if either a is true or b is true, but not both•There is no ^^ operationOR| OR–For integral types, ORs each corresponding pair of bits–For booleans, performs the logical OR operation•Boolean | is like ||, but both operands are evaluated, even if it is possible to decide the result from the left operand aloneThe ternary operator•boolean-expr ? expression-1 : expression-2•This is like if-then-else for values rather than for statements•If the boolean-expr evaluates to true, the result is expression-1, else it’s expression-2•Example: max = a > b ? a : b ; sets the variable max to the larger of a and b •expression-1 and expression-2 need not be the same type, but either result must be useable•The ternary operator is right associative!–Use parentheses if more than one ternary operatorThe assignment operators I•The assignment operators have the lowest precedence–Assignment is an operation–Assignment is right associativea = b = c = 7.5 * w;•assigns 7.5*w to c, then assigns c to b, then assigns b to a – if all these assignments are legal•Example:– if ((line = reader.newLine()) == null) { ... }The assignment operators II•There are a lot of assignment operations besides =•variable += expression means the same as variable = variable + expression•variable -= expression means the same as variable = variable - expression•variable *= expression means the same as variable = variable * expression•variable /= expression means the same as variable = variable / expressionThe assignment operators III•variable %= expression means the same as variable = variable % expression•variable <<= expression means the same as variable = variable << expression•variable >>= expression means the same as variable = variable >> expression•variable >>>= expression means the same as variable = variable >>> expressionThe assignment operators IV•variable &= expression means the same as variable = variable & expression•variable |= expression means the same as variable = variable | expression•variable ^= expression means the same as variable = variable ^ expressionWhat you need to know•You should understand what each operator does•Parameter lists, array indexing, and the dot operator are done first•In arithmetic, the unary operators + and – are done first, then multiplication and division, then addition and subtraction•All assignment operators are done last•For anything else, it’s a good idea to use parentheses anyway (even if you remember the order of precedence, other people won’t)The
View Full Document