Zmienne w języku Java

Zmienne” – jest to jedno z podstawowych pojęć, z jakim spotkasz się, programując. Omówimy je na przykładzie języka Java, do którego krótkie wprowadzenie teoretyczne znajduje się tutaj: Języki programowania: Java.

“Zmienna” – jak sama nazwa wskazuje, to coś, co się zmienia. Dokładniej zmienia się wartość takiej “zmiennej”. Stosuje się je w programach, aby przechować w pamięci komputera jakieś dane, żeby móc je wykorzystać na późniejszym etapie programu. Możesz o nich myśleć jak o przegródkach, które przechowują ważne dla Ciebie rzeczy.

W poniższym programie zmienną jest “liczba”. W linijce 5 ustawiamy wartość zmiennej “liczba” na “100”. Czyli od tej pory w pamięci mamy zapisane: “liczba = 100“.  Do naszej przegródki wkładamy liczbę “100”, żeby wykorzystać ją później. Robimy to w linijce 6, gdzie wypisujemy na ekranie tekst “Liczba to: 100”. Ale nie podajemy tam słownie “100”, tylko używamy zapisanej wartości ze zmiennej “liczba”. Niejako sięgamy do przegródki i sprawdzamy co jest tam aktualnie przechowywane.

W linijce 8 ustawiamy nową wartość zmiennej “liczba” na “200”. Do naszej przegródki wkładamy nową liczbę, która zastępuje dotychczasową. Następnie ponownie wypisujemy na ekran tekst. Tym razem program wyświetli: “Liczba to: 200”. Ponieważ w naszej przegródce znajduje się już nowa liczba: 200. Czyli zmieniliśmy wartość przechowywaną w pamięci w zmiennej “liczba”.

Zwróć proszę uwagę, że w linijce 5 nazwa zmiennej poprzedzona jest przez słowo “int”. Jest to tak zwany “typ zmiennej”. “Int”, to skrót od angielskiego słowa “Integer”, które oznacza “Liczba całkowita”. To właśnie typ zmiennej określa, jakie wartości możemy przechowywać w pamięci.

Typ zmiennej jest ważny w języku Java i określa się go przed pierwszym użyciem danej zmiennej. Tworząc naszą przegródkę określamy co będziemy w niej przechowywać. W linijce 8 przypisujemy wartość 200 do zmiennej “liczba” i nie używamy już słowa “int”. To dlatego, że program wie, że ta zmienna jest typu całkowitego. W języku Java nie można zmienić typu zmiennej. W innych językach jest to możliwe.

W naszym przypadku zmienna “liczba” może zawierać tylko liczby całkowite. A gdybyśmy chcieli przypisać do tej zmiennej wartość np. 10,5 to dostalibyśmy błąd kompilacji.

O kompilacji pisałem w poście Języki programowania: Java. Przypomnę, że chodzi o to, że komputer nie rozumie programu napisanego w języku programowania. Język programowania jest bardziej dla nas, programistów. Komputer rozumie język maszynowy. I właśnie proces zamiany języka programowania na język maszynowy nazywa się kompilacją, a program, który to robi – to kompilator.

Mała dygresja. Do pisania programów potrzebujemy kilku rzeczy:

  • znajomości języka programowania 🙂
  • edytora, w którym będziemy pisać programy
  • kompilatora, który zamieni nasz program na język maszynowy

Edytor i kompilator mogą być oddzielne. Np. naszym edytorem może być zwykły notatnik tekstowy, gdzie napiszemy program i zapiszemy go na dysku (w pliku z rozszerzeniem “.java”). Następnie uruchomimy kompilator (oddzielny program), który skompiluje nasz kod w pliku “.java” na kod bajtowy. Taki wynikowy plik będziemy mogli już “uruchomić” na komputerze (a dokładniej na maszynie wirtualnej Javy – JVM).

Inną dostępną opcją jest skorzystanie z programu łączącego funkcje edytora i kompilatora. Jest to tak zwane “zintegrowane środowisko programistyczne” (IDE – Integrated Development Environment). Po zainstalowaniu i uruchomieniu IDE wyświetli nam się edytor tekstu z różnymi przydatnymi opcjami, jak np. kolorowaniem składni, czy inteligentnym podpowiadaniem i uzupełnianiem nazw. IDE posiada też funkcję “kompiluj i uruchom” i po naciśnięciu jednego przycisku widzimy nasz program w akcji. Czyli nie musimy oddzielnie kompilować i uruchamiać naszego programu.

Dla Javy mamy kilka IDE. Najpopularniejsze to: Eclipse, NetBeans, IntelliJ i AndroidStudio (typowo dla aplikacji mobilnych). Podczas procesu instalacji IDE zostanie zainstalowane także środowisko Java (jak na przykład JVM czy oddzielne kompilatory). Proces instalacji jest różny i szczegóły możemy znaleźć na stronie każdego z IDE.

Ciekawą opcją, jaką polecam na początek nauki języka, jest skorzystanie z kompilatorów online. Jednym z nich jest JDoodle. Po wejściu na stronę widzimy okno z edytorem tekstu, gdzie piszemy nasz program. Możesz tam wkleić kod z początku tego posta. Poniżej jest przycisk “Execute”, który spowoduje, że nasz kod zostanie wysłany do internetu, tam skompilowany i uruchomiony, a wynik zwrócony do nas i wyświetlony w okienku poniżej.

jdoodle

Na początek taki kompilator online nam wystarczy. JDoodle posiada nawet kolorowanie składni i inteligentne podpowiadanie. Jednak bez wątpienia zainstalowanie IDE pozwoli nam skorzystać z innych ciekawych opcji typowych dla danego języka.

Wracając do naszego przykładu, podczas próby przypisania do zmiennej całkowitej wartości ułamkowej (10.5) kompilator wyświetliłby nam błąd. Możesz się teraz o tym przekonać na stronie JDoodle. W okienko “Your code” wklej kod z początku tego posta. Usuń znaki “//” z początku linijek 14 i 15 i kliknij w “Execute”. W czarnym okienku pojawi się błąd kompilacji: “/Zmienne.java:14: error: incompatible types: possible lossy conversion from double to int”. W komunikacie będzie podany plik i wskazana linijka, w której popełniliśmy błąd.

jdoodlee1

Czyli widzimy, że zmiennej całkowitej typu “int” nie możemy przypisać wartości ułamkowej, ponieważ utracilibyśmy właśnie tę część ułamkową i kompilator języka Java nam na to nie pozwoli.

Wspomniałem też, że typ zmiennej określa się tylko raz, przed jej pierwszym użyciem. Spróbuj teraz w linijce 8 dodać słowo “int” i uruchomić program (naciskając “Exceute”). Kompilator zwróci nam błąd, że zmienna “liczba” została już wcześniej zdefiniowana. W programie mamy już przegródkę o nazwie “liczba”. Przy okazji dowiedzieliśmy się, że w danym momencie nie może istnieć więcej niż jedna zmienna o danej nazwie. Jest to pewne uproszczenie, bo zmienne posiadają swój zasięg, o czym dowiemy się w przyszłości.

W kodzie naszego programu zauważysz też trochę tekstu po polsku, w zielonych komentarzach. Komentarz to taka informacja, która jest “niewidoczna” dla kompilatora. Jest to przydatne, gdy programista chce coś zapisać dla siebie (lub innych programistów) tak, aby to nie miało wpływu na działanie programu. Komentarz może być jednolinijkowy (wtedy linijka musi zaczynać się od: “//”) lub wielolinijkowy (wtedy musi być umieszczony pomiędzy znacznikami “/*” oraz “*/”).

A co się stanie, jeśli zechcemy zmienić typ zmiennej “liczba”? Spróbujmy zmienić go na typ tekstowy. Odkomentuj ostatni blok naszego programu (czyli usuń znaczniki komentarza w linijkach 24 i 27) i uruchom program. Kompilator zwróci nam taki sam błąd jak poprzednio, że zmienna “liczba” została już zdefiniowana w naszym programie. Wynika z tego też, że w języku Java nie możemy zmienić typu zmiennej i rodzaju danych, jakie dana zmienna przechowuje.

Poniżej znajdują się podstawowe typy w języku Java. Nasze zmienne mogą mieć dowolny z nich. Więcej o typach i kiedy je stosować napiszę w kolejnych postach.

  • byte – liczby całkowite od -128 do 127
  • short – liczby całkowite od -32,768 do 32,767
  • int – liczby całkowite od -2^31 do 2^31-1
  • long – liczby całkowite od -2^63 do 2^63-1
  • float – liczby zmiennoprzecinkowe (ułamkowe)
  • double – większe liczby zmiennoprzecinkowe
  • boolean – ma tylko 2 wartości logiczne: prawda lub fałsz
  • char – znak tekstu (litera)
  • String – specjalny typ do przechowywania ciągu znaków (charów) w postaci napisów

Na koniec wspomnę jeszcze o nazywaniu zmiennych. Każdy język programowania ma swoje zasady (w większości są one do siebie bardzo zbliżone). W Javie dopuszczalne są nazwy, które zaczynają się od litery, podkreślenia lub znaku dolara “$”. W nazwie zmiennej mogą pojawić się też cyfry (ale nie jako pierwszy znak). Ogólnie przyjęło się, żeby nazwy zaczynały się od litery i faktycznie opisywały to, co w takiej zmiennej się znajduje. Poniżej parę przykładów:

Jak widzisz zmienne to ciekawy temat, który dopiero zaczęliśmy poznawać. Są pewne zasady nazewnictwa i dużo typów. Możemy korzystać z nich dowolnie w celu przechowywania danych w pamięci komputera. Zmienne są podstawowym elementem, który wykorzystujemy i bez nich ciężko by było stworzyć przydatny program. Bo zmienne możemy nie tylko przechowywać, ale również wykonywać na nich różne operacje, np. matematyczne. O tym napiszę już w kolejnym poście. A tymczasem zachęcam Cię do samodzielnego sprawdzenia różnych typów zmiennych w praktyce na stronie JDoodle lub  w IDE.

3 replies

Trackbacks & Pingbacks

  1. […] funkcji. Zobacz teraz na poprzednie posty z kodem pisanym w języku Java (na przykład tu lub tu) i zwróć proszę uwagę na to, że jest jedna główna funkcja. To jest taka funkcja startowa, bo […]

Leave a Reply

Want to join the discussion?
Feel free to contribute!

Leave a Reply

Your email address will not be published. Required fields are marked *