Ich kann nicht verstehen, warum es erste Zeile als 3, i + j * 2 = 4 gemäß der Logik drucken.
Vorrang. Die Multiplikation hat Vorrang vor der Addition, so dass beim ersten Aufruf i+j*2
1+1*2
ist, also 1+(1*2)
, also 1+2
, also 3
.
Der Vorrang von Grundoperationen können mit PEMDAS oder BODMAS erinnert werden (die „MD“ und „AS“ haben die gleiche Priorität, also habe ich sie in einer einzigen Zeile dargestellt):
P Parentheses/Brackets B
E Exponenentiation/Orders1 O
MD Multiplication & Division DM
AS Addition and Subtraction AS
Powers (2^5), Quadratwurzeln usw.
Die Java-Seite hat a page on operator precedence, die in dieser Tabelle hat:
postfix expr++ expr--
unary ++expr --expr +expr -expr ~ !
multiplicative */%
additive + -
shift << >> >>>
relational < > <= >= instanceof
equality == !=
bitwise AND &
bitwise exclusive OR ^
bitwise inclusive OR |
logical AND &&
logical OR ||
ternary1 ? :
assignment = += -= *= /= %= &= ^= |= <<= >>= >>>=
Sie bedeuten die conditional operator, die ist ein ternäre Operator (ein Operator akzeptieren drei Operanden) und wie es geschieht, die einzige Java hat.
Dies ist, was ein Debugger ist. Es ermöglicht Ihnen, durch Ihr Programm zu gehen und zu sehen, was jede Zeile tut. –
Ich glaube nicht, dass Sie diese Ausgabe bekommen. Da gibt es nichts, was neue Zeilen druckt. –
Warum denkst du, 1 + 1 * 2 ist 4? Ich glaube, es ist 3. –