Przydatne konstrukcje w Javie

Tablice, listy, for

    int[] primes = {2, 3, 5, 7};
System.out.println(primes.length);
    import java.util.Arrays;

a = Arrays.copyOf(b, b.length)
    import java.util.ArrayList;  // Konkretna implementacja interfejsu List
import java.util.List;

List<Thread> threads = new ArrayList<>();
threads.add(new Thread(new Foo()));
System.out.println(threads.size());
    for (int p : smallPrimes) ...
for (thread: threads) ...

losowe int-y

import java.util.Random; // albo
import java.util.concurrent.ThreadLocalRandom;

...
private static final Random random = new Random();

...
a = random.nextInt(10);
...

toString

Żeby wygodnie wypisywać obiekty naszych klas warto definiować toString, np. tak:

    @Override
public String toString() {
StringBuilder s = new StringBuilder("[");
s.append(getClass().getName());
s.append(" ");
s.append(7);
s.append(" ");
s.append(Arrays.toString(foo));
s.append("]");
return s.toString();
}

lambdy

Gdy potrzebujemy przekazać funkcje do wykonania przez inną klasę, w Javie przekazujemy obiekt klasy implementujący interfejs np. Runnable.

W przypadku krótkich funkcji skrótową składnią do definiowania takich obiektów są wyrażenia lambda.