Professional Documents
Culture Documents
Java Expressions
Java Expressions
Object
Program
Source
Program
Compilation
Main Memory
Secondary
Memory
Phase 2
Editor
Compiler
Main Memory
Phase 3
Class Loader
the
Main Memory
Phase 4
Bytecode
Main Memory
Phase 5
Bytecode
A Simple Program
Comment
Method Class
Method call
String
4 bytes
2 bytes
8 bytes
-2.147.483.648 2.147.438.647
-32.768 32.767
-9.223.372.036.854.775.808L-9.223.372.036.854.775.807L
float
4 bytes
double 8 bytes
3,40282347E+38F
1,79769313486231570E+308
char
-32.768 32.767
2 bytes
array
class
interface
null
Tokens in Java
Identifier::= letter (letter+digit)*
letter::=(A-Z)+(a-z)+_+$
digit::=0-9
Literals
Processing Strings
int charAt(int index)
int compareTo(String otherString)
boolean endsWith(String suffix)
boolean equals(Object otherObject)
boolean equalsIgnoreCase(String otherString)
int indexOf(String str)
int indexOf(String str, int fromIndex)
int lastIndexOf(String str)
int lastIndexOf(String str, int fromIndex)
int length()
String replace(char oldChar, char newChar)
boolean startsWith(String prefix)
String substring(int intialIndex)
String substring(int intialIndex,int finalIndex)
String toLowerCase()
String toUpperCase()
String trim()
10
Expressions
Expression = description of a computation which
produces an unique value of a well-defined type.
Operators
Operands : variables, constants, method calls,
expressions
Expressions which result in a primitive value:
Numerical expressions
Boolean expressions,
Logical expressions;
Postfix
Unary
Creation or cast
Multiplicative
Additive
Shift
Relational
Equality
Bitwise AND
Bitwise XOR
Bitwise OR
Conditional AND
Conditional OR
Conditional
Assignment
Sequence
Operators
Associativity
right
right
right
left
left
left
left
left
left
left
left
left
left
left
right
left
Examples
int a=5; System.out.print((a=2) + a);
int a,b; a=b=1;
int[] ar={1,2,3}; int index=2; ar[index]=index=1;
Numerical expressions
Operands are fully evaluated from left to right
before an operator is applied.
a+b*c;
+,- (unary)
*,/,%,+,*=,/=,%=,+=,-=
++,--
Conversion contexts
Assignment
Method
Invocation
Casting
Numeric
Promotion
Widening/Narrowi
ng Primitive
Conversions
Widening
Widening
Both
Widening
Widening/Narrowi
ng Reference
Conversions
Widening
Widening
Both +
optional
unchecked
conversion
Not
applicable
Boxing/ Unboxing
Conversions
Unboxing
+optional
widening
primitive c.
Unboxing
+optional
widening
primitive c.
Both
Unboxing +
optional
widening
primitive c.
Boxing +
optional
widening
reference c.
Boxing +
optional
widening
reference c.
Narrowing*
Implicit conversions
int a=10;
long l=a;
double d=a+l;
The type of an arithmetic expression between
two operands is the widest type AND at least int.
Boolean expressions
<,<=,>,>=
nonassociative
==,!=
primitive data equality
object reference equality
object value equality
!,&,|
&&,||
?:
if(Condition)
Instruction1
else
Instruction2
if(Condition1)
Instruction1
else if(Condition2)
Instruction2
else if(Condition3)
Instruction3
else
ElseInstruction
Switch
switch(Expression) {
case Constant1:
InstructionList1
case Constant2:
InstructionList2
....
default:
DefInstructionList
}
While loop
while(Expression)
Instruction
do-while loop
do
Instruction
while(Expression)
For Loop
for(InitExpress; Condition; IncremExpress)
Instruction
Loop interruption
break;
break label;
Current Iteration
interruption
continue;
20