5 rzeczy, których być może nie wiedziałeś o javie

Uwaga! Artykuł jest nieskończony. Może zawierać nieprawidłowe dane. Wszystkie informacje dostępne tutaj najlepiej zweryfikować za pomocą wujka google’a lub kompilatora.

1. Nie ma przeszkód, aby w nazwie identyfikatora używać znaku dolara

Osobiście byłem zdziwiony, kiedy się o tym dowiedziałem, sam wcześniej o tym nie słyszałem. Już widzę programistów PHP, którzy wszystkie zmienne w javie przekształcają tak, aby zaczynały się od dolara. I widzę również programistów javy trollujących tych od PHP stawiających przed owym dolarem jeszcze jeden – dla przypomnienia, aby zwykła zmienna w PHP działała, musi być poprzedzona dokładnie jednym dolarem.

2. W literałach liczbowych można używać znaków podkreślenia

To chyba jakieś udogodnienie dla Amerykanów, którzy lubią co trzecią cyfrę postawić sobie przecinek (jakoś tak przypadkowo w polskim standardzie pełniący rolę separatora dziesiętnego). W javie mamy możliwość użycia znaku podkreślenia jako separatora w liczbie. Można zatem pogrupować jakiś nuży numer, np. numer telefonu: 123_456_789. Podkreślnik musi być wpisany między dwiema cyframi, nie wolno go stawiać na początku, końcu liczby, ani przy kropce dziesiętnej.

3. Istnieją szesnastkowe literały zmiennoprzecinkowe

Zapewne żadnego programisty znającego podstawy nie dziwią takie zapisy liczb:
0x10 // 10hex = 16dec
010 // 10oct = 8dec
0b10 // 10b = 2dec

Postać wykładnicza również nie powinna dziwić:
1e-1 // 1 * 10^-1 = 0,1

Natomiast istnieje jeszcze sposób zapisu liczb za pomocą szesnastkowego zapisu zmiennopozycyjnego, tzn. możemy zapisać np. liczbę 0,25 w postaci szesnastkowej: 0×0.4p0 .
Co oznacza ten dziwoląg? Spójrzmy od początku: 0x to standardowe oznaczenie liczby szesnastkowej. 0.4 to oczywiście dana liczba. Dalej mamy jeszcze literkę p i cyfrę 0. Otóż cyfra oznacza wykładnik potęgi 2. Litera p pełni taką samą funkcję jak e w zapisie dziesiętnym. Tak więc wartość liczbowa takiego zapisu to szesnastkowa wartość liczby przed literką p pomnożona przez odpowiednią potęgę liczby 2. Należy tutaj zauważyć, że szesnastkowa cyfra reprezentuje aż cztery cyfry binarne, więc aby uprościć liczbę 0×100.1p0 należy zapisać ją w postaci 0×1.001p8.

4. Blok kodu definiuje zasięg deklaracji zmiennych

Powszechnie wiadomo, że zmienne zadeklarowane w ciele funkcji to zmienne lokalne, które działają jedynie w obrębie owej funkcji i są kasowane wraz z jej zakończeniem. Tak samo dzieje się po zadeklarowaniu zmiennej w pętli. Przykładem jest tutaj najpopularniejsza forma pętli for, która inicjalizuje zmienną (zwykle i), którą to zmienną poza pętlą programista się już nie przejmuje. To co mnie ostatnio zdziwiło, to fakt, że deklaracje zmiennych są ograniczone do każdego bloku instrukcji (ograniczonego nawiasami klamrowymi). Możemy zatem zainicjalizować jakąś zmienną w bloku
{int x = 0;}
i nie martwić się czy tę zmienną już kiedyś inicjalizowaliśmy lub będziemy inicjalizować w innej części kodu. Co ciekawe java zgłosi błąd, jeśli zmienna o takiej nazwie została wcześniej zainicjalizowana w bloku nadrzędnym, zadziała natomiast wówczas gdy inicjalizacja następuje w dalszej części kodu. W przypadku C++ kod zadziała zawsze – zmienna będzie lokalną dla danego bloku.

5. || oraz && to warunkowy OR i AND

Możemy zatem poniższy zapis:
if (dzielnik != 0) if (dzielna / dzielnik == wartość) {instrukcje...}
uprościć w taki sposób:
if (dzielnik != 0 && dzielna / dzielnik == wartość) {instrukcje...}
Nie byłoby to możliwe w przypadku użycia operatora &.

Zostaw komentarz