Zanim przejdziemy do omówienia kolejnej linijki naszego pierwszego programu, mianowicie public static void main(String[] args)
musimy wprowadzić pojęcie zmiennych w języku Java (java zmienne) oraz ich dwóch podstawowych typów.
UWAGA! Kurs darmowy, zaktualizowany na stan z roku 2020 dostępny na https://kursy.clockworkjava.pl/java-fundamenty-programowania/
Format wideo wpisu znajduję się na jego końcu.
Czym są zmienne
Każdy, nieważne jak skomplikowany program, sprowadza się do danych oraz różnorakich operacji na nich – od przekazywania do bazy danych, by je zapisać do wyświetania użytownikowi programu – czy to w postani tekstowej jak w naszym przykładzie, czy to w formie graficznej.
Do przechowywania danych w trakcie działania programu służy nam coś takiego jak zmienna (ang. variable).
Każdą zmienna określa jej nazwa ( np. „powitanie” ) oraz typ danych jakie przyjmuje – może to być między innymi tekst bądź liczba całkowita. Jak wszystko w programowaniu, zmienne zwykło nazywać się „z angielska”. W programie nie może być dwóch zmiennych o tej samej nazwie (konkretniej w jednym bloku kodu, ale o tym później). W języku Java zmienne definuje się w ten sposób:
String greeting = "Hello world"
Rozbijając te linijke na składowe:
String
jest to nazwa typu danych, jaki nasza zmienna będzie przechowywać. String jest to nazwa dla typu tekstowego w Javie.greeting
jest to nazwa jaką my nadaliśmy naszej zmiennej. Przyjeło się, że nazwy dla zmienny zaczynają się od małej litery, pisane są camelCase jeśli składają się z więcej niż jednego wyrazu. Cyfry są dozwolone – z reguły umieszcza się je na końcu nazwy.=
jest to operator przypisania. Mówi on kompilatorowi tyle, że do tego co jest po lewej stronie (czyli zmiennej o nazwie greeting) przypisz to co jest po stronie prawej."Hello world"
jest to wartość tekstowa. W Javie wartości tekstowe są umieszczane w pomiędzy „”.
Zatem powyższa linijkę można odczytać – Do zmiennej o nazwie greeting, która przechowywuję wartości tekstowe przypisz wartość „Hello world”.
Bardzo ważną rzeczą jest to, że zmienne trzymają dane tylko w trakcie działania programu i po jego zakończeniu ich wartości są tracone. By zachowywać dane pomiędzy uruchomieniami programu niezbędne jest ich zapisanie – czy to w postaci pliku na dysku, czy w bazie danych.
Komenda System.out.println("Hello world")
wypisywała na terminalu Hello world. Gdy mamy zdefiniowaną zmienna greeting
, w taki sposób jak wyżej, możemy napisać System.out.println(greeting)
(bez „”) i efekt będzie taki sam. Dzieje się tak dlatego, że Java podstawiła pod zmienna greeting
jej wartość, czyli tekst Hello World.
public class Hello { public static void main(String[] args) { String greeting = "Hello world"; System.out.println(greeting); } }
Typy Zmiennych
W języku Java mamy kilka typów zmiennych tak zwanych prymitywnych – m.in. int, long, byte, double, float
. Pierwsze trzy odpowiadają za liczby całkowite (różnią się one tym jak duże liczby mogą przechowywać), a dwa ostatnie za zmiennoprzecinkowe. Z całego tego zestawienia narazie interesuje nas tylko najprostrzy z nich – int
, który może przechowywać wartości od -2 147 483 648 do 2 147 483 647 (wystarczy, że zapamiętasz „od -2. miliardów z hakiem do +2.miliardów z hakiem o jeden mniejszym” 🙂 ) . Te zmienne możemy dodawać, mnożyć i tak dalej.
Typ String
jest nieprymitywnym typem zmiennych – typy te są tworzone na podstawie klas (które wprowadziłem w tym wpisie). Dziesiątki takich typów dostarcza JDK (które instalowaliśmy na samym początku), w tym i String
.
Dodajmy do naszego przykładowego projektu deklarację trzech dodatkowych zmiennych – jednej typu String i dwóch intów.
public class Hello { public static void main(String[] args) { String greeting = "Hello"; String name = "Paweł"; int a = 5; int b = 2; System.out.println(greeting); } }
Pierwsza rzecz – zwróc uwagę, że zmieniliśmy również wartość zmiennej greeting na samo „Hello”. Druga rzecz – pamiętaj, że String
piszemy z wielkiej litery, natomiast nazwy primitywnych typów, jak int
, z małej.
Operacje na zmiennych
Jak już napomknąłem na zmiennych możemy dokonywać różnych operacji.
Na int
możemy wykonywać operację matematyczne – dodawanie, odejmowanie, zmiana znaki i tak dalej. Np.
public class Hello { public static void main(String[] args) { String greeting = "Hello"; String name = "Paweł"; int a = 5; int b = 2; System.out.println(a+b); } }
Program wypisze nam na standardowej wyjście wartość 7.
public class Hello { public static void main(String[] args) { String greeting = "Hello"; String name = "Paweł"; int a = 5; int b = 2; System.out.println(-b); } }
A w tym wypadku -2.
Wynik tych operacji możemy przypisać do innej zmiennej, w ten sposób:
int sum = a + b;
Teraz pod zmienną o nazwie sum
mamy wartość, będącą sumą zmiennych a
i b
, czyli w naszym wypadku 7.
public class Hello { public static void main(String[] args) { String greeting = "Hello"; String name = "Paweł"; int a = 5; int b = 2; int sum = a + b; System.out.println(sum); } }
Na typach nieprymitywnych nie możemy wykonywać operacji matematycznych, z jednym wyjątkiem – mianowicie możemy użyc znaku +
by połączyć ze sobą dwa Stringi.
public class Hello { public static void main(String[] args) { String greeting = "Hello"; String name = "Paweł"; int a = 5; int b = 2; int sum = a + b; System.out.println(sum); System.out.println(greeting + name); } }
W wyniku tej operacji otrzymamy na konsoli napis „HelloPaweł”. Przydałaby się nam spacja, prawda?
public class Hello { public static void main(String[] args) { String greeting = "Hello"; String name = "Paweł"; int a = 5; int b = 2; int sum = a + b; System.out.println(sum); System.out.println(greeting + " " + name); } }
Teraz wygląda to lepiej.
Zadanie domowe:
- Sprawdź co zostanie wypisane na ekranie gdy zamiast
System.out.println(greeting)
napiszemySystem.out.println("greeting")
- Zmień wartość zmiennej
greeting
z „Hello world” na „Witaj świecie”. - Utwórz dwie zmienne liczbowe –
c
id
, przypisz do nich wartości 5 oraz 3. Następnie utwórz zmiennamulti
i przypisz jako jej wartość wynik mnożenia zmiennychc
id
, a następnie wypisz ten wynik na terminal. - Utwórz dwie zmienne tekstowe –
intro
orazday
, niech pierwsza z nich przechowuje wartość „Dziś jest” natomiast druga „Poniedziałek”. Wypisz na terminalu, z użyciem zmiennych, tekst „Dziś jest Poniedziałek”.
Słowniczek:
- Zmienna (variable, var) – twór programistyczny, służący do przechowywania danych w trakcie działania programu.
- String – typ zmiennych przechowywujący wartości tesktowe, muszą one znajdować się pomiędzy „”, na przykład „Tekst”.
- int – typ zmiennych przechowywujący wartości liczbowe całkowite z zakresu od-2 147 483 648 do 2 147 483 647.
Zapraszam do zadawania pytań, uwag i sugestii, są one zawsze mile widziane.