350 likes | 509 Views
Java – wprowadzenie, typy danych, operatory. Paweł Mieczkowski 128061. Zarys historii. ”Narodziny” Javy – 1990 rok, Sun Microsystems, Inc . Mountain View, California. Początkowa nazwa nowego języka – OAK (dąb) .
E N D
Java – wprowadzenie, typy danych, operatory Paweł Mieczkowski 128061
Zarys historii • ”Narodziny” Javy – 1990 rok, Sun Microsystems, Inc. Mountain View, California. • Początkowa nazwa nowego języka – OAK (dąb). • Przeznaczenie - programowanie inteligentnych urządzeń domowego użytku. • Główny architekt Javy – James Gosling. • W 1994 r. wstrzymano prace nad Javą. Przyczyna - brak zainteresowania projektem Green ze strony znanych producentów urządzeń elektronicznych. • Rozwój Internetu powoduje ponowne zainteresowanie się językiem tworzącym przenośne programy. • 1995 rok, konferencja w San Francisco - pierwsza publiczna prezentacja Javy. • Maskotka Javy – Duke (pamiątka po projekcie Green).
Czym jest Java? • Java jest językiem zorientowanym obiektowo, któryw dużej mierze opiera się na C i C++. • Stanowi spójne logicznie środowisko programistyczne, posiadające najlepsze cechy swoich wzorców • W porównaniu z C i C++ Java jest zoptymalizowana. Usunięto mechanizmy będące przyczyną częstych błędów programistycznych, takie jak: • wskaźniki, • wielokrotne dziedziczenie, • przeciążanie operatorów • Początkowo Java służyła wyłącznie do tworzenia interaktywnego oprogramowania witryn internetowych. Z czasem obszar zastosowań Javy był systematycznie rozszerzany.
Cechy języka Java • Niezależność od platformy sprzętowo-programowej. • Java to uniwersalny język programowania – raz napisany kod można wykorzystać w dowolnym środowisku, do którego przeniesiono JVM. • Uniwersalne środowisko programowania GUI i multimediów. • Uniwersalne środowisko dostępu do baz danych . • Uniwersalne środowisko programowania w sieci i w systemach rozproszonych. • Możliwość budowania programów z gotowych komponentów.
Wirtualna maszyna Javy (JVM) • Java Virtual Machine to rodzaj wirtualnego komputera, który ma swój zestaw rejestrów, zestaw instrukcji, stos i pamięć dla programów. • Dzięki standaryzacji maszyny wirtualnej, programy napisane w Javie są uniwersalne, tzn. wykonują się identycznie w każdm systemie operacyjnym. • Programy napisane w Javie są kompilowane do poziomu kodu pośredniego, nazywanego kodem bajtowym Javy (bytecode). • Kod bajtowy jest interpretowany przez wirtualną maszynę JVM do postaci programu wykonywalnego dla danego systemu operacyjnego.
Zasada działania Pliki *.java kompilacja Pliki *.class interpretacja JVM
Narzędzia • Wszystkie narzędzia potrzebne do programowaniaw Javieznajdują się w bezpłatnym pakiecie SDK, który można pobrać z głównej witryny Javyhttp://java.sun.com/j2se/ • Kompletny kurs Javy, omawiający większość związanychz nią technologii zamieszczono na stroniehttp://java.sun.com/docs/books/tutorial/
Edytory • Borland JBuilder – http://www.borland.com/products/download/ • Eclipse – http://www.eclipse.org/ • IBM VisualAge for Java – http://www7.software.ibm.com/vad.nsf • JCreator – http://www.jcreator.com/ • Kawa – http://www.macromedia.com/ • NetBeans – http://www.netbeans.org/ • Sun Forte for Java – http://www.sun.com/forte/ffj/index.html • Sun One Studio – http://forte.sun.com/ffj/index.html
Zawartość pakietuSDK (JDK) Po zainstalowaniu pakietuJava 2 SDK, SE w katalogu j2sdk1.4.1 zostanie umieszczony podkatalog binzawierający szereg programówusługowych. Najważniejsze to: • javac – kompilator, • java - interpreter, • appletviewer – przeglądarka apletów, • javadoc - generator dokumentacji, • jdb – debuger, • jar – narzędzie do tworzenia archiwów.
Program w Javie • Każdy program w Javie jest zestawem klas. • Klasa jest podstawową jednostką enkapsulacji (nie można pisać kodu poza definicją klasy). • Pisany przez nas program może być zapamiętany w jednym lub wielu plikach źródłowych o rozszerzeniu "java". • Należy przestrzegać następującej konwencji dotyczącej nazewnictwa – nazwa klasy powinna być zgodna z nazwą pliku, który przechowuje program.
Aplkacje i aplety • Wyróżniamy dwa rodzaje programów: aplikacje i aplety. • Aplikacje mogą działać zarówno w trybie graficznym jak i tekstowym. • Aplety działają jedynie w środowisku graficznym. • Aby zobaczyć działanie aplikacji musimy mieć zainstalowaną w naszym komputerze wirtualną maszynę Javy – JVM. • Aplety są wykonywane przez środowisko przeglądarek; są one widoczne wtedy, gdy przeglądarka posiada zintegrowaną wirtualną maszynę Javy.
Kompilacja • Kompilator Javy wymaga, aby pliki źródłowe miały rozszerzenie "java". • Pliki źródłowe są kompilowane za pomocą kompilatora Javy (javac.exe) do postaci kodu bajtowego (pośredniego), a nie kodu maszynowego. • Polecenie kompilacji pliku źródłowego ma postać:javac nazwa_pliku.java • Wynikiem kompilacji są pliki z rozszerzeniem "class", które mogą być wykonane przez maszynę wirtualną Javy. • Podczas kompilacji pliku źródłowego każda klasa zostaje przeniesiona do swojego własnego pliku o nazwie właściwej zgodnej z nazwą klasy i rozszerzeniu "class".
Aplikacja • Aby aplikacja mogła zostać uruchomiona, główna klasa musi zawierać metodępublic static voidmain(String args[]) • Maszyna wirtualna Javy jest wywoływana za pomocą polecenia java z argumentami: nazwa pliku o rozszerzeniu "class" zawierającego metodę main() oraz argumenty wywołania tej metody, np.:java nazwa_pliku arg1 arg2 • Po załadowaniu klasy przez JVM sterowanie zostaje przekazane do metody main() i tu zaczyna się właściwe działanie programu: tworzenie obiektów, odwołania do innych klas aplikacji.
Aplet • Jedna z klas dziedziczy klasę Applet, • Tworzymy plik HTML zawierający znacznik wywołania tej klasy, np.: <applet code = ”MyApps.class”width = ”300” height = ”300”></applet> • Po napotkaniu tego znacznika przeglądarka ładuje plik MyApps.class, wywoływany jest konstruktor tej klasy, metoda inicjalizacyjna, itd.
Pierwszy program Napiszemy teraz swoją pierwszą klasę zgodnie z przedstawionym niżej przykładem: class Pierwsza{ public static void main (String[] args){ System.out.println ("Witamy w Javie"); } }
Kompilacja programu • Utworzona przez nas klasa powinna być zapisanaw pliku źródłowym o nazwie "Pierwsza.java" (istotna jest wielkość liter). • W wyniku kompilacji powstanie plik z kodem bajtowym o nazwie "Pierwsza.class". Jest to już plik gotowy do wykonania przez JVM. • Na koniec można uruchomić naszą aplikację, aby zobaczyć efekt jej działania.
Jak działa nasz program? • Po załadowaniu klasy Pierwsza.class przez JVM sterowanie zostaje przekazane do metody main(). • W naszym przykładzie metoda ta jest zdefiniowana z jednym parametrem; jest nim tablica args typu String. Dzięki temu możliwe jest przekazanie parametrów do aplikacji. Są one umieszczane w kolejnych elementach tej tablicy: args[0], args[1], args[2], itd. • Metoda main() zawiera jedynie jedno polecenie System.out.println();
Zmienne • Przetwarzanie informacji w kodzie programu wymaga zdefiniowania i pracy ze zmiennymi. • Zmienne są to elementy programu wynikowego reprezentowane w kodzie źródłowym przez identyfikatory, literały i wyrażenia. Zmienne są zawsze określonego typu. • Typ zmiennych (typ danych) definiowany jest w Javie przez typy podstawowe i odnośnikowe (referencyjne). W celu pracy ze zmiennymi należy zapoznać się z możliwymi typami danych oferowanymi w środowisku Java.
Typy danych Podstawowe typy danych definiowane w specyfikacji Javy charakteryzują się następującymi właściwościami: 1. Typy danych są niezależne od platformy sprzętowej i ich rozmiar jest stały określony w specyfikacji. 2. Konwersja (casting - rzutowanie) typów danych jest ograniczona tylko dla liczb. 3. Wszystkie typy liczbowe są przechowywane za znakiem, np. byte: - 128..0..127. Nie ma typów oznaczanych w innych językach jako unsigned, czyli bez znaku. 4. Wszystkie podstawowe typy danych są oznaczane z małych liter. 5. Nie istnieje w gronie podstawowych typów danych typ łańcucha znaków. 6. Istnieją klasy typów danych oznaczanych z wielkich liter, umożliwiające konwersję i inne operacje na obiektach tych klas, a przez to na podstawowych typach danych.
Typy podstawowe • boolean : (1 bit) typ jednobitowy oznaczający albo true albo false. Nie może podlegać konwersji do postaci liczbowej, czyli nie możliwe jest znaczenie typu jako 1 lub 0. Oznaczanie wartości typów (jak wszystkie w Javie) jest ściśle związane z wielkością liter. Przykładowe oznaczenia TRUE czy False nie mają nic wspólnego z wartościami typu boolean. • byte : (1 bajt) typ liczbowy, jednobajtowy za znakiem. Wartości tego typu mieszczą się w przedziale: -128 do 127. • short : (2 bajty) typ liczbowy, dwubajtowy ze znakiem. Wartości tego typu mieszczą się w przedziale: -32,768 do 32,767 • int : (4 bajty) typ liczbowy, czterobajtowy ze znakiem. Wartości tego typu mieszczą się w przedziale: -2,147,483,648 do 2,147,483,647. • long : (8 bajtów) typ liczbowy, ośmiobajtowy ze znakiem. Wartości tego typu mieszczą się w przedziale: -9,223,372,036,854,775,808 do +9,223,372,036,854,775,807.
Typy podstawowe • float : ( 4 bajty, spec. IEEE 754) typ liczb rzeczywistych, czterobajtowy ze znakiem. Wartości tego typu mieszczą się w przedziale: 1.40129846432481707e-45 to 3.40282346638528860e+38 (dodatnie lub ujemne). • double : (8 bajtów spec. IEEE 754) typ liczb rzeczywistych, ośmiobajtowy ze znakiem. Wartości tego typu mieszczą się w przedziale: 4.94065645841246544e-324d to 1.79769313486231570e+308d (dodatnie lub ujemne). • char : (2 bajty), typ znakowy dwubajtowy, dodatni. Kod dwubajtowy umożliwia zapis wszelkich kodów w systemie Unicode, który to jest standardem w Javie. Zakres wartości kodu to: 0 to 65,535. Tablica znaków nie jest łańcuchem znaków, tak jak to jest interpretowane w C czy C++. • void: typ nie jest reprezentowany przez żadną wartość, wskazuje, że dana metoda nic nie zwraca.
Klasy typów danych • W Javie w bibliotece podstawowej języka: java.lang.* znajdują się następujące klasy typów danych: • Boolean: klasa umożliwiająca stworzenie obiektu przechowującego pole o wartości typu podstawowego boolean. • Byte : klasa umożliwiająca stworzenie obiektu przechowującego pole o wartości typu podstawowego byte. Klasa ta umożliwia liczne konwersje typu liczbowego byte do innych podstawowych typów liczbowych. • Character : klasa umożliwiająca stworzenie obiektu przechowującego pole o wartości typu podstawowego char. • Short , Integer, Long, Float, Double • String - klasa umożliwiająca stworzenie nowego obiektu typu łańcuch znaków. Nie istnieje typ podstawowy łańcucha znaków, tak więc klasa ta jest podstawą tworzenia wszystkich zmiennych przechowujących tekst.
Metody inicjowania zmiennych • char c1 = ‘x’; • Character c2 = new Character(‘x’); // lub Character c2 = new Character(c1); • float f; • Float obiekt_float = new Float(f); • String lancuch1 = „Ala ma kota”; • String lancuch2 = new String("Ala ma kota”);
Problemy z zaokrąglaniem liczb • Załóżmy, że mamy zadeklarowane dwie zmienne double x = 12.2, y = 12.8; • Jaką wartość przyjmą zmienne a, b, c, d, e, f w wyniku wykonania następujących instrukcji? • int a = (int) x; // 12 • int b = (int) y; // 12 • double c = (int) x; // 12.0 • double d = (int) y; // 12.0 • double e = Math.round(x); // 12.0 • double f = Math.round(y); // 13.0
Operatory Operatory to elementy języka służące do generacji nowych wartości na podstawie podanych argumentów (jeden lub więcej). Operator wiąże się więc najczęściej z określonym działaniem na zmiennych. Wyróżnia się następujące klasy operatorów podane wedle ich kolejności wykonywania: • operatory jednoargumentowe, • operatory arytmetyczne, • operatory przesunięcia, • operatory relacji, • operatory logiczne i bitowe, • operator warunkowy (trójargumentowy), • operator przypisania.
Operatory jednoargumentowe • - oper. zmiany znaku na przeciwny • ++ oper. inkrementacji (pre- lub post-) • -- oper. dekrementacji (pre- lub post-)
Operatory arytmetyczne • * oper. mnożenia • / oper. dzielenia • % oper. modulo • + oper. dodawania • - oper. odejmowania
Operatory przesunięcia • << oper. przesunięcia w lewo • >> oper. przesunięcia w prawo
Operatory relacji • > oper. większości • < oper. mniejszości • >= oper. większości lub równości • <= oper. mniejszości lub równości • == oper. równości • != oper. nierówności
Operatory logiczne i bitowe • && oper. iloczynu logicznego (AND) • || oper. sumy logicznej (OR) • & oper. iloczynu bitowego • | oper. sumy bitowej • ^ oper. bitowej różnicy symetrycznej (XOR)
Operator warunkowy,Operator przypisania • ?: oper. if - else (wyrażenie_logiczne) ? wyrażenie_true : wyrażenie_false • = oper. przypisania
Operacje na łańcuchach • Operacje na łańcuchach wykonuje się za pomocą: • operatorów konkatenacji (łączenia): • + (operator konkatenacji) • +=(rozszerzony operator konkatenacji) • funkcji łańcuchowych. • Każdy z tych operatorów tworzy nowy obiekt klasy String. • Przykłady: • String napis = "Ala "; • napis = napis + "ma kota "; • napis += "i psa";
Operatory konkatenacji • Operatory konkatenacji + oraz += są jedynymi operatorami przeciążonymi w Javie - oprócz sklejania łańcuchów, pozwalają również na ich łączenie z liczbami lub obiektami innych klas. • Przykłady: • int n = 10; • String str, str1, str2, str3, str4; • str = "napis"; • str1 = str + n; // napis10 • str2 = str + n + n; // napis1010 • str3 = str + (n + n); // napis20 • str4 = n + n + str; // 20napis
Literatura • Bruce Eckel – „Thinking in Java” wyd. 3 • Jacek Rumiński – „Język Java” • materiały zawarte na : http://primus.okwf.fuw.edu.pl/erka/maciejc/kurs/index.htm