Lokālie mainīgie ir:
1 public class ScopeExample {
2 private int i = 1;
3 public void firstMethod() {
4 int i = 4, j = 5;
5 this.i = i + j;
6 secondMethod(7);
7 }
8 public void secondMethod(int i) {
9 int j = 8;
10 this.i = i + j;
11 }
12 }
1 public class TestScoping {
2 public static void main(String[] args) {
3 ScopeExample scope = new ScopeExample();
4 scope.firstMethod();
5 }
6 }

Tālāk uzskaitīti operatori sakārtoti pēc precedences (operatori, kuri "saista visciešāk", jeb kuriem ir visaugstākā precedence sarakstā doti pirmie).
= *= /= %= += -= <<= >>= >>>= &= ^= |= R to L
Ja ir zināma operatoru asociativitāte un precedence, ikvienā izteiksmē var atjaunot izlaistās iekavas. Piemēram, divas sekojošās izteiksmes ir identiskas:
a = b = d != null && d.day > 31 (a = (b = ((d != null) && (d.day > 31))))
Ievērojiet, ka piešķiršanas operators "=" ir labēji asociatīvs, t.i. ja nav saliktas iekavas, tad vispirms notiek piešķiršana mainīgajam "b" (kas izteiksmē atrodas pa labi) un tikai pēc tam mainīgajam "a" (kas atrodas pa kreisi).
| Operatora apzīmējums | Nosaukums |
| ! | NOT-operators, negācija jeb NE-operators |
| | | OR-operators, disjunkcija jeb VAI-operators |
| & | AND-operators, konjunkcija jeb UN-operators |
| ^ | XOR-operators jeb "izslēdzošā VAI"-operators |
| Operatora apzīmējums | Nosaukums |
| && | Īsslēguma AND operators |
| || | Īsslēguma OR operators |
Šos operatorus var lietot sekojoši:
MyDate d;
if ((d != null) && (d.day > 31)) {
// apstrādā d
}
Veselo skaitļu bitveida (bitwise) operatori:
| Operatora apzīmējums | Nosaukums |
| ~ | Bitveida negācija |
| ^ | Bitveida XOR |
| & | Bitveida AND |
| Bitveida OR |
Piemēri 1 baita gadījumam:

Loģiskā nobīde pa labi (logical right shift) jeb bezzīmes nobīde pa labi (unsigned right shift) ( >>> ) ir lietojams bitveida datu manipulācijām. Zīmes bits nobīdes laikā nekopējas (visi skaitļi pēc šādas nobīdes kļūst pozitīvi).
Nobīde pa kreisi (left shift) lietojama reizināšanai ar divnieka pakāpēm un bitu manipulācijām:

int vards = 9; Date d = new Date(); String s1 = "Vīrs" + " " + "un" + " "; String s2 = s1 + "vārds=" + vards; // int -> String konversija String s3 = s2 + ", datums = " + d; // java.util.Date -> String konversija System.out.println(s3);
Programmas rezultāts izskatās apmēram šādi:
Vīrs un vārds=9, datums = Sun Oct 27 15:00:21 EET 2002
long bigValue = 99L; int squashed = bigValue; // nepareizi, vajag pārveidot int squashed = (int) bigValue; // pareizi int squashed = 99L; // nepareizi, vajag pārveidot int squashed = (int) 99L; // pareizi, bet parasti tā neraksta int squashed = 99; // pareizi (vesela skaitļa literālis ir ar tipu "int")
long bigval = 6; // 6 ir "int", pareizi int smallval = 99L; // 99L ir "long", nepareizi double z = 12.414F; // 12.414F ir "float", pareizi float z1 = 12.414; // 12.414 ir "double", nepareizi
Piemērs, kad tipa paplašinājums var novest pie informācijas zuduma ir "long"->"float" pārveidojums. Sekojoša diagramma parāda visus tos vienkāršo tipu pārveidojumus, kuri ir "tipu paplašinājumi", t.i., kuri notiek bez atklāti uzrakstīta pārveidojuma. (Šāda pārveidojamība ir transitīva, t.i. "int" uzreiz var pārveidoties par "double", bez "long" vai "float" starpstadijas.)

Vienkāršās zarošanās (if,else) komandas sintakse:
if (boolean expression) {
statement or block;
}
if (boolean expression) {
statement or block;
}
else if (boolean expression) {
statement or block;
}
else {
statement or block;
}
if, else komandas piemērs
int count;
count = getCount(); // šajā pašā klasē definēta metode
if (count < 0) {
System.out.println("Kļūda: 'count' vērtība ir negatīva.");
} else if (count > getMaxCount()) {
System.out.println("Kļūda: 'count' vērtība ir pārāk liela.");
} else {
System.out.println("Uz šīsdienas pusdienām nāks " + count +
" cilvēki.");
}
Parametriskās zarošanās (switch) komandas sintakse:
switch (expr1) {
case constant2:
statements;
break;
case constant3:
statements;
break;
default:
statements;
break;
}
switch komandas piemērs:
switch ( carModel ) {
case DELUXE:
addAirConditioning();
addRadio();
addWheels();
addEngine();
break;
case STANDARD:
addRadio();
addWheels();
addEngine();
break;
default:
addWheels();
addEngine();
}
Komanda "break" katra "case" beigās reizēm šķiet traucējoša un pat bīstama (ja to aizmirst ierakstīt, vadība pāriet uz nākamo case). Aplūkosim piemēru, kur izpildāmās darbības starp vairākiem "case" daļēji pārklājas (tad "break" komandu mēdz būt izdevīgi nerakstīt).
switch ( carModel ) {
case THE_WORKS:
addGoldPackage();
add7WayAdjustableSeats();
case DELUXE:
addFloorMats();
addAirConditioning();
case STANDARD:
addRadio();
addDefroster();
default:
addWheels();
addEngine();
}
for cikls:
for (init_expr; boolean testexpr; alter_expr) {
statement or block;
}
Piemērs:
for (int i = 0; i < 10; i++) {
System.out.println("Are you finished yet?");
}
System.out.println("Finally!");
while cikls:
while (boolean) {
statement or block;
}
Piemērs:
int i = 0;
while (i < 10) {
System.out.println("Are you finished yet?");
i++;
}
System.out.println("Done");
do/while cikls:
do {
statement or block;
} while (boolean test);
Piemērs:
int i = 0;
do {
System.out.println("Are you finished yet?");
i++;
} while (i < 10);
System.out.println("Done");
label: statement; // statement apzīmē ciklu (citādi uz iezīmi pārlekt nevar)
Javas sintakse ļauj iezīmi uzlikt jebkurai programmas rindiņai, bet aizlēkt var tikai uz iezīmēm, kuras raksta cikla sākumā. "continue" lec uz attiecīgā cikla sākumu, bet "break" - uz komandu tieši aiz attiecīgā cikla beigām.
break komanda:
do {
statement;
if (condition is true) {
break;
}
statement;
} while (boolean expression);
continue komanda:
do {
statement;
if (boolean expression) {
continue;
}
statement;
} while (boolean expression);
break komanda ar iezīmēm:
outer: do {
statement;
do {
statement;
if (boolean expression) {
break outer;
}
statement;
} while (boolean expression);
statement;
} while (boolean expression);
continue komanda ar iezīmēm:
test: do {
statement;
do {
statement;
if (condition is true) {
continue test;
}
statement;
} while (condition is true);
statement;
} while (condition is true);