Java – od zera do aplikacji desktopowej. 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.


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 *