Część 3.1. Typy danych i zmienne
W naszym pierwszym programie wyświetliliśmy tylko napis, który był pewną stałą:
ile razy uruchomimy program, to zawsze jego wynik będzie taki sam. Jednak program najczęściej wykonuje
różne operacje i dopiero później wyświetla wynik. Aby można było wykonywać operacje i przechowywać ich
wyniki niezbędne są w programie zmienne: miejsca pamięci, w których przechowywane są wartości
argumentów oraz wyniki pośrednie.
Zmienna z kolei musi mieć zdefiniowany typ danych, jakie będą w niej przechowywane. Bez zdefiniowanego typu, komputer nie będzie wiedział, jak ma traktować zawartość zmiennej: jako napis, liczbę całkowitą, rzeczywistą, czy w jeszcze inny sposób. W Javie możemy tworzyć zmienne typów prostych i obiektowych. O typach obiektowych dowiesz się w dalszej części kursu (klasy i obiekty). Teraz poznasz podstawowe typy danych oraz sposób tworzenia zmiennych prostych i tablicowych. Poniższa tabelka przedstawia listę podstawowych typów danych dostępnych w Javie:
Nazwa zmiennej może składać się tylko z: liter, cyfr, znaku dolara ($) i podkreślenia (_). Pierwszym znakiem nazwy nie może być cyfra. Długość nazwy jest dowolna. Nazwa zmiennej nie może być żadnym z słów kluczowych Javy. Musisz pamiętać, że Java odróżnia w nazwach zmiennych (w ogóle we wszystkich nazwach) wielkość liter: dlatego też nazwy: zmienna, ZMIENNA i Zmienna oznaczają 3 zupełnie różne nazwy i mogą być używane do utworzenia 3 niezależnych od siebie zmiennych. Poprawnymi nazwami są np.: imie Nazwisko data_urodzenia Wartosc$ Nie są natomiast poprawnymi nazwami: 1szaZmienna nazwa nie może zaczynać się od cyfry class słowo kluczowe Javy Składnia deklaracji zmiennej ma następującą postać: NazwaTypu NazwaZmiennej [ = WartośćPoczątkowa ] [ , ...]; gdzie:
Oto kilka przykładów poprawnych deklaracji zmiennych: int x, y = 0, z = 99; boolean b1, b2 = false, b3 = true; char z1, z2 = 'A'; double a, b = 1.25; Zobaczmy jak korzystać ze zmiennych w programie: public class Przyklad { public static void main (String args[]) { int x; // deklaracja zmiennej bez inicjacji int y = 5; // deklaracja zmiennej z inicjacją wartością 5 x = 10; System.out.println ("Pierwsza liczba = " + x); System.out.println ("Druga liczba = " + y); } } Przy okazji tego przykładu kilka słów o wstawianiu komentarzy do programu. Jest dobrym zwyczajem opisywanie wewnątrz kodu, co dany jego fragment realizuje. Nie jest to konieczne i na pewno nie ma sensu opisywanie każdej linijki kodu. Jednak w istotnych miejscach programu dobrze jest wstawić komentarz opisujący, co dany fragment wykonuje lub do czego będzie wykorzystany. Program staje dzięki temu bardziej zrozumiały i przejrzysty. Komentarze możemy wstawiać na dwa sposoby:
Oto przykład: // przykład komentarza wierszowego /* a tak może wyglądać wielowierszowy komentarz blokowy */ Kompilator Javy napotykając komentarz ignoruje tekst w nim zawarty. zmienne w Javie nie posiadają żadnych wartości domyślnych niezależnie od ich typu. Musisz pamiętać, aby każda zmienna - przed jej użyciem była zainicjowana jakąś wartością. można to zrobić przy deklarowaniu zmiennej lub później, ale brak inicjalizacji przed użyciem zmiennej spowoduje błąd już podczas kompilacji. Gdybyśmy poprzedni program napisali w taki sposób: public class Przyklad { public static void main (String args[]) { int x; // deklaracja zmiennej bez inicjacji int y; // deklaracja zmiennej bez inicjacji System.out.println ("Pierwsza liczba = " + x); System.out.println ("Druga liczba = " + y); } } To podczas kompilacji pojawią się komunikaty: Przyklad.java:5: variable x might not have been initialized System.out.println ("Pierwsza liczba = " + x); Przyklad.java:6: variable y might not have been initialized System.out.println ("Druga liczba = " + y); 2 errors Często w programie potrzebujemy wielu zmiennych tego samego typu. Można wtedy - zamiast tworzyć nieraz kilkadziesiąt czy kilkaset zmiennych - użyć tablicy. Jest to bardzo wygodne z kilku powodów. Po pierwsze zmniejsza ilość zmiennych, które trzeba deklarować, inicjować i których nazwy trzeba pamiętać. Po drugie - wykonanie tej samej operacji (np. zerowania) na różnych zmiennych jest bardzo żmudne, a dla tablicy wystarczy zbudować prostą pętlę. Deklaracja tablic w Javie jest bardzo podobna do deklaracji w C++. Z jednym, ale bardzo istotnym wyjątkiem: w Javie każda tablica musi być deklarowana dynamicznie, z użyciem operatora new, który przydziela w pamięci miejsce niezbędne dla tablicy. Przykłady deklaracji tablic 10-cioelementowej w Javie: int tab [] = new int [10]; int [] tab = new int [10]; Tablica stanowi jak gdyby zadeklarowanie wielu zmiennych tego samego typu. Możemy odwołać się do każdego z jej elementów oddzielnie podając w nawiasach kwadratowych numer elementu. Pamiętać przy tym należy, że elementy tablicy zawsze numerowane są od zera. Dlatego w tablicy o 10 elementach możemy używać modyfikatorów o wartościach od 0 do 9. Po trzecie tablica - w odróżnieniu od inna zmienna - nie wymaga inicjalizacji przed jej wykorzystaniem: każdy jej element domyślnie inicjowany jest wartością zero. A teraz mały przykład poprawnego odwołania się do tablicy w programie: public class Przyklad { public static void main (String args[]) { int tab[] = new int[10]; tab[5] = 11; System.out.println ("Piąty element tablicy to = " + tab[5]); } } W tym przykładzie zadeklarowaliśmy tablice o 10 elementach, zainicjowaliśmy piąty element tablicy i następnie wyświetliliśmy jego wartość. Tak napisany program będzie działał poprawnie. Jeśli jednak spróbujesz - nie zmieniając pozostałej części programu - wyświetlić element np. 10: public class Przyklad { public static void main (String args[]) { int tab[] = new int[10]; tab[10] = 11; // błąd - maksymalny wskaźnik może być = 9 System.out.println ("Dziesiąty element tablicy to = " + tab[10]); } } to kompilator wyświetli komunikat błędu o przekroczeniu zakresu wskaźnika tablicy. Typ zmiennej określamy w momencie jej deklarowania. Zdarza się jednak, że program wymaga przypisania do zmiennej jednego typu wartości innego typu. Musimy wtedy dokonać konwersji między typami, aby uniknąć błędu. W postaci ogólnej konwersja wygląda następująco: (NazwaTypu) wyrażenie gdzie:
double x = 12; // zmiana typu int na float int y = (int) 12.5; // zmiana typu float na int int z = (int) x; // zmiana typu float na intInicjując zmienne lub wykonując działania najczęściej używamy - oprócz zmiennych - również stałych. W Javie możemy używać literałów dowolnego typu:
Przykłady literałów: 123, 123L, 0456, 0xA9, 0XA9, 0xa9 literały całkowite typu int i long 4.565556, 0.2, 50.0, 30.5E-11 literały rzeczywiste typu double 4.565556f, 0.2F, 50.0f, 30.5E-11f literały rzeczywiste typu float 4.565556d, 0.2D, 50.0d, 30.5E-11d literały rzeczywiste typu double ' ' spacja '\\' lewy ukośnik 'G' znak G '\x20' spacja false fałsz true prawda
|