Struktura klasy
Pakiety
Nie trzeba importować pakietu java.lang oraz klas z aktualnego pakietu. Wildcard import dotyczy tylko konkretnych klas nie paczek. Dozwolony jest tylko jeden symbol wildcard na import – musi być na końcu. Nie można importować metod instancyjnych. Import konkretny ma priorytet nad wildcard i nie powoduje błędu kompilacji.
Nie można zaimportować domyślnego pakietu.
Rozpoczęcie nazwy pakietu od java lub javax skutkuje błędem SecurityException w czasie uruchomienia.
Zawartość klasy
Kolejność sekcji w klasie: pakiet, import, class (wymagane), pola i metody.
Zagnieżdżone komentarze blokowe powodują błąd kompilacji (konkretnie ich zamknięcie).
Klasa może być pakietowa, kilka klas może być zadeklarowanych w jednym pliku z czego maksymalnie jedna może być publiczna. Nazwa klasy publicznej musi pokrywać się z nazwą pliku.
Kolejność klas w jednym pliku nie ma znaczenia (nawet jeśli się nawzajem rozszerzają).
Kolejność inicjalizacji
- inicjalizacja klasy bazowej
- statyczne zmienne i bloki w kolejności deklaracji
- instancyjne zmienne i bloki w kolejności deklaracji
- konstruktor
Można uruchomić metodę main z klasy abstrakcyjnej.
Main musi zwracać void w innym przypadku w czasie uruchomienia będzie rzucony error.
Literał liczbowy to int, inne podstawy dla literałów to 0 – ósemkowy, 0x lub 0X – szesnastkowy, 0b lub 0B – binarny. W liczbach można dodawać _ ale nie na początku, końcu liczby ani przy kropce. Jeśli literał mieści się w zakresie jest niejawnie rzutowany na niższy np. byte.
Literał z częścią ułamkową jest typu double.
W jednej instrukcji można inicjalizować kilka zmiennych tego samego typu (typ może się pojawić tylko raz).
Wszystkie nazwy w javie muszą zaczynać się od litery lub $ lub _. W javie 9 nie można wykorzystywać samego _ jako nazwy. Nie można wykorzystywać słów kluczowych. Można wykorzystać jako nazwę nazwę wrappera (np .Integer Integer = new Integer(1);
) ale nie typu prostego. Przy odwołaniach najpierw jest brana pod uwagę zmienna o nazwie jak typ a nie metody statyczne typu.
Zmienne lokalne przed odwołaniem muszą być zainicjalizowane (inaczej występuje błąd kompilacji), zmienne instancyjne i statyczne mają domyślne wartości. Jeśli zmienna lokalna jest inicjalizowana w sekcji ifa wtedy musi być też inicjalizowana w else (nie może być alternatywny if który jest negacją pierwszego warunku. Kompilator wie, że zmienna lokalna zawsze będzie zainicjalizowania w switchu bez breaków.
Źródła:
„OCA: Oracle Certified Associate Java SE 8 Programmer I Study Guide: Exam 1Z0-808” Jeanne Boyarsky, Scott Selikoff
„JA+ V8 for Oracle Certified Associate – Java SE8 Programmer I” http://enthuware.com