Java – od zera do aplikacji desktopowej. Część 5. Zmienne.

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:

  1. Sprawdź co zostanie wypisane na ekranie gdy zamiast System.out.println(greeting) napiszemy System.out.println("greeting")
  2. Zmień wartość zmiennej greeting z “Hello world” na “Witaj świecie”.
  3. Utwórz dwie zmienne liczbowe – cd, przypisz do nich wartości 5 oraz 3. Następnie utwórz zmienna multi i przypisz jako jej wartość wynik mnożenia zmiennych c i d, a następnie wypisz ten wynik na terminal.
  4. Utwórz dwie zmienne tekstowe – intro oraz day, 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:

  1. Zmienna (variable, var) –  twór programistyczny, służący do przechowywania danych w trakcie działania programu.
  2. String – typ zmiennych przechowywujący wartości tesktowe, muszą one znajdować się pomiędzy “”, na przykład “Tekst”.
  3. 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.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *