W przedstawionym fragmencie kodu Java wskaż nazwę zmiennej, która może przechowywać wartość 'T'.
int zm1; float zm2; char zm3; boolean zm4;
A. zm1
B. zm4
C. zm3
D. zm2
Zmienna zm3 ma typ char, czyli typ znakowy w Javie, dlatego jest właściwym miejscem do przechowywania wartości 'T'. W Javie pojedynczy znak zapisuje się w apostrofach, na przykład 'A', '7', '?' albo właśnie 'T'. To odróżnia znak od tekstu, bo tekst zapisujemy w cudzysłowie, np. "T" i wtedy jest to obiekt typu String, a nie char. W praktyce char przydaje się np. przy analizie pojedynczych znaków z hasła, sprawdzaniu pierwszej litery kodu produktu, obsłudze odpowiedzi typu T/N albo przy prostym parsowaniu danych wejściowych. Dobra praktyka jest taka, żeby dobierać typ zmiennej do znaczenia danych, nie tylko do tego, co da się jakoś technicznie zapisać. Moim zdaniem to jedna z podstawowych rzeczy, które warto dobrze ogarnąć na początku Javy, bo później mniej się miesza int, String, boolean i char. Warto też pamiętać, że char w Javie jest powiązany z kodowaniem Unicode i zajmuje 16 bitów, więc nie jest to po prostu „literka z klawiatury”, tylko konkretny typ danych reprezentujący znak.
W tym fragmencie kodu trzeba patrzeć przede wszystkim na typ zmiennej, a nie tylko na jej nazwę. Wartość 'T' zapisana w apostrofach jest w Javie literałem znakowym, więc naturalnie pasuje do typu char. Zmienna typu int służy do przechowywania liczb całkowitych, na przykład 10, -5 albo 2024. Co prawda Java potrafi wykonać pewne konwersje między char i int, bo znak ma swój kod liczbowy Unicode, ale w normalnym rozumieniu zadania int nie jest typem przeznaczonym do przechowywania znaku jako znaku. Gdyby ktoś wybrał zm1, to najczęściej wynika to z myślenia „komputer i tak trzyma wszystko jako liczby”. To jest częściowo prawda na niskim poziomie, ale w programowaniu wysokopoziomowym typy danych mają znaczenie semantyczne i pomagają unikać błędów.
Typ float służy do liczb zmiennoprzecinkowych, czyli takich z częścią ułamkową, na przykład 3.14 albo -0.5. Nie używa się go do przechowywania pojedynczych liter. Wybór zm2 zwykle oznacza pomylenie różnych typów prostych albo brak zwrócenia uwagi na składnię literału 'T'. Z kolei boolean przyjmuje tylko wartości true albo false. Nie przechowuje liter, cyfr ani tekstu, tylko wynik logiczny: prawda lub fałsz. Dlatego zm4 też odpada. Z mojego doświadczenia najłatwiej to zapamiętać tak: char jest od jednego znaku, String od tekstu, int od liczb całkowitych, float od liczb z przecinkiem, a boolean od decyzji typu tak/nie. W kodzie produkcyjnym taki dobór typów jest ważny, bo poprawia czytelność, ułatwia debugowanie i zmniejsza ryzyko dziwnych błędów przy porównaniach czy konwersjach.
Typ float służy do liczb zmiennoprzecinkowych, czyli takich z częścią ułamkową, na przykład 3.14 albo -0.5. Nie używa się go do przechowywania pojedynczych liter. Wybór zm2 zwykle oznacza pomylenie różnych typów prostych albo brak zwrócenia uwagi na składnię literału 'T'. Z kolei boolean przyjmuje tylko wartości true albo false. Nie przechowuje liter, cyfr ani tekstu, tylko wynik logiczny: prawda lub fałsz. Dlatego zm4 też odpada. Z mojego doświadczenia najłatwiej to zapamiętać tak: char jest od jednego znaku, String od tekstu, int od liczb całkowitych, float od liczb z przecinkiem, a boolean od decyzji typu tak/nie. W kodzie produkcyjnym taki dobór typów jest ważny, bo poprawia czytelność, ułatwia debugowanie i zmniejsza ryzyko dziwnych błędów przy porównaniach czy konwersjach.