background image

 

Podstawy j

ęzyka Java 2     

                                                                                             

 
J

ędrzej Ułasiewicz – Inst. Informatyki Automatyki i Robotyki PWr 

 

Podstawy j

ęzyka JAVA 

 

Spis tre

ści: 

 

1.  Wstęp do programowania w języku Java............................................................. 2 

1.1 

Historia ......................................................................................................... 2 

1.2 

Aplety i aplikacje ........................................................................................... 2 

1.3 

Pakiet JDK (Java Developers Kit)................................................................. 2 

1.4 

Uruchomienie programu ............................................................................... 5 

2.  Instrukcje, wyrażenia, zmienne i typy danych ...................................................... 6 

2.1 

Instrukcje i wyra

żenia ................................................................................... 6 

2.2 

Tworzenie zmiennych ................................................................................... 6 

2.3 

Typy zmiennych:........................................................................................... 6 

2.4 

Litera

ły .......................................................................................................... 7 

2.5 

Operatory...................................................................................................... 8 

2.6 

Instrukcje przypisania ................................................................................... 9 

2.7 

Operacje na 

łańcuchach: .............................................................................. 9 

3.  Obiekty w języku Java ....................................................................................... 10 

3.1 

Wst

ęp do obiektów ..................................................................................... 10 

3.2 

Tworzenie klas............................................................................................ 11 

3.3 

Tworzenie metod ........................................................................................ 12 

3.4 

Dziedziczenie.............................................................................................. 16 

3.5 

Tworzenie nowych obiektów, konstruktory ................................................. 18 

3.6 

Przes

łanianie metod ................................................................................... 21 

3.7 

Dost

ęp do zmiennych klasy i zmiennych obiektu........................................ 22 

3.8 

Odwo

łania do obiektów............................................................................... 22 

3.9 

Rzutowanie i konwersja .............................................................................. 24 

3.10  Porównywanie obiektów ............................................................................. 25 

4.  Tablice ............................................................................................................... 26 

4.1 

Deklaracja zmiennej tablicowej................................................................... 26 

4.2 

Tworzenie obiektów tablicowych................................................................. 26 

4.3 

Odwo

łąnie do elementów tablic .................................................................. 28 

4.4 

Tablice wielowymiarowe ............................................................................. 29 

5.  Instrukcje sterujące ............................................................................................ 30 

5.1 

Polecenia blokowe...................................................................................... 30 

5.2 

Instrukcja warunkowa if .............................................................................. 30 

5.3 

Instrukcja warunkowa switch ...................................................................... 31 

5.4 

P

ętla for ...................................................................................................... 32 

5.5 

P

ętle while i do............................................................................................ 32 

5.6 

Przerywanie dzia

łania pętli, instrukcje break i continue.............................. 33 

6.  Pakiety ............................................................................................................... 36 

6.1 

Poj

ęcie pakietu ........................................................................................... 36 

6.2 

Udost

ępnianie pakietów.............................................................................. 36 

6.3 

Lokalizacja klas........................................................................................... 37 

6.4 

Modyfikatory dost

ępności ........................................................................... 38 

7.  Wyjątki ............................................................................................................... 39 

7.1 

Hierarchia wyj

ątków.................................................................................... 39 

7.2 

Obs

ługa wyjątków – klauzula catch ............................................................ 40 

7.3 

Generowanie wyj

ątków............................................................................... 43 

8.  Literatura............................................................................................................ 46 

PDF created with pdfFactory trial version 

www.pdffactory.com

background image

 

Podstawy j

ęzyka Java 2     

                                                                                             

 
J

ędrzej Ułasiewicz – Inst. Informatyki Automatyki i Robotyki PWr 

 

1. Wst

ęp do programowania w języku Java 

1.1  Historia 

J

ęzyk powstał około roku 1995 w firmie Sun i był pierwotnie przeznaczony do 

programowania systemów wbudowanych. Mia

ł zapewnić przenośność 

oprogramowania. Wywodzi si

ę z C++ z którego wyeliminowano konstrukcje 

potencjalnie prowadz

ące do błędów. Zyskał popularność dzięki zastosowaniom 

sieciowym. 
 

kompilacja

wykonanie

kod bajtowy

kod 

źródowy

naszyna wirtualna

Kompilator

prog.java

prog.class

 

 
Cechy jezyka Java: 

1.  Bezpiecze

ństwo – class loader, byte code verifier, security manager. 

2.  Otwarte standardy i przeno

śność - Java Core API (API - Aplication 

Programming Interface).  

3.  Wieloplatformowo

ść (od urządzeń wbudowanych do serwerów). 

4.  J

ęzyk zorientowany obiektowo. 

5.  Wielow

ątkowość. 

6.  Wsparcie dla aplikacji sieciowych rozproszonych. 

 

1.2   Aplety i aplikacje 

Programy w Javie dziel

ą się na dwie grupy: 

1.  Aplikacje – wykonywane 

środowisku systemu operacyjnego  

2.  Aplety - programy osadzone w dokumencie WWW i wykonywane w 

środowisku przeglądarki. 

 

1.3  Pakiet JDK (Java Developers Kit) 

Aby tworzy

ć aplikacje w Javie należy dysponować odpowiednim oprogramowaniem 

narz

ędziowym. Jest to Pakiet JDK (Java Developers Kit) który można sciągnąć z 

witryny firmy Sun ( 

http://java.sun.com/

 ). 

 
Plik dla wersji 1.4.2 dla Windows:    j2sdk-1_4_2_02-windows-i586-p.exe 
 
Instalacja: uruchomienie programu: j2sdk-1_4_2_02-windows-i586-p.exe 
 

PDF created with pdfFactory trial version 

www.pdffactory.com

background image

 

Podstawy j

ęzyka Java 2     

                                                                                             

 
J

ędrzej Ułasiewicz – Inst. Informatyki Automatyki i Robotyki PWr 

Konfiguracja: 

1. 

Zmienna 

środowiska PATH powinna zawierać katalog w którym umieszczone 

s

ą programy wykonywalne pakietu:  

Path=C:\ProgramFiles\j2sdk\bin;...; 

 

2. 

Zmienna 

środowiska CLASSPATH powinna być usunięta lub zawierać katalog 

...\j2sdk\lib\tools.jar 

 

 

Program 

Opis 

javac 

Kompilator Javy – przetwarza plik 

żródłowy prog.java na kod 

bajtowy prog.class 

java 

Interpreter javy (maszyna wirtualna) – uruchamia i wykonuje kod 
bajtowy prog.class 

jdb 

Program uruchomieniowy (debugger) - wykonuje kod bajtowy 
prog.class w trybie sprawdzania 

javadoc 

Program dokumentacyjny – przetwarza plik 

żródłowy prog.java na 

plik dokumentacyjny w formacie HTML. 

javah 

Generuje pliki nag

łówkowe do C, C++ 

apletviewer 

Interpreter Javy – uruchamia aplety Javy z plików HTML 

javap 

Dissasembler Javy 

Tabela 1-1 Podstawowe narz

ędzia pakietu JDK 

 

Edytor

javac

javah

javadoc

prog.java

naszyna

wirtualna

Kompilator

kod 

źródowy

kod bajtowy

prog.class

javac

wej

ście

wyj

ście

dokumentacja

w HTML

pliki

naglówkowe

C, C++

jdb

debugger

 

 

Rys. 1-1 Tworzenie aplikacji w pakiecie JDK 

 

PDF created with pdfFactory trial version 

www.pdffactory.com

background image

 

Podstawy j

ęzyka Java 2     

                                                                                             

 
J

ędrzej Ułasiewicz – Inst. Informatyki Automatyki i Robotyki PWr 

Edytor

javac

javah

javadoc

prog.java

plik

sieciowy

lub lokalny

Kompilator

kod 

źródowy

kod bajtowy

prog.class

dokumentacja

w HTML

pliki

naglówkowe

C, C++

Edytor

dokument

HTML

przegl

ądarka

plik.html

Ekran

 

 

Rys. 1-2 Tworzenie apletów w pakiecie JDK 

PDF created with pdfFactory trial version 

www.pdffactory.com

background image

 

Podstawy j

ęzyka Java 2     

                                                                                             

 
J

ędrzej Ułasiewicz – Inst. Informatyki Automatyki i Robotyki PWr 

 

1.4  Uruchomienie programu 

 
1. Utworzy

ć plik Hello.java dowolnym edytorem tekstu np. programem notepad i 

zapisa

ć go w jakimś katalogu np. C:\java\prog 

 

class Hello { 
 public static void main(String args[]) { 
    System.out.println("Pierwszy program w Javie!"); 
 } 

Przyk

ład 1-1 Pierwszy program w Javie – Hello.java 

 
2. Uruchomi

ć okno poleceń MS-DOS poprzez Programy / Uruchom i wpisanie 

polecenia: 

cmd

 

3. Zmieni

ć katalog bieżący na: 

C:\java\prog

 

4. Uruchomi

ć kompilator poprzez polecenie: 

javac Hello.java

 

5. Uruchomi

ć interpreter: 

java Hello 

 

 

 

Przyk

ład 1-2 Uruchomienie programu Hello.java 

PDF created with pdfFactory trial version 

www.pdffactory.com

background image

 

Podstawy j

ęzyka Java 2     

                                                                                             

 
J

ędrzej Ułasiewicz – Inst. Informatyki Automatyki i Robotyki PWr 

2. Instrukcje, wyra

żenia, zmienne i typy danych 

2.1  Instrukcje i wyra

żenia 

 
Instrukcja – polecenie powoduj

ące wykonanie pewnej czynności. Instrukcja jest  

zako

ńczona średnikiem. 

 

System.out.printl(”JAVA”); 

 
Blok – grupa instrukcji zamkni

ęta w nawiasach klamrowych. 

 

{ instr1; instr2; ... ,instrN} 

 
Wyra

żenie – polecenie które zwraca pewną wartość (numeryczną, logiczną) 

 
Komentarz – dodatkowa informacja zamieszczona w kodzie 

żródłowym ignorowana 

przez kompilator. 
 
Zmienne – obszary w pami

ęci do przechowywania informacji. Zawartość zmiennej 

mo

że się w trakcie działania programu zmieniać. Zmienna ma nazwę i wartość 

 

2.2  Tworzenie zmiennych 

Przy tworzeniu zmiennych musi by

ć podany typ i ewentualnie wartość początkowa.  

 

int masa = 10; 

 
Nazwa zmiennej w JAVA musi rozpoczyna

ć się od litery, znaku podkreślenia _ lub 

dolara $. J

ęzyk JAVA wykorzystuje zestaw znaków Unicode. 

 
Poza nazw

ą zmiennej należy określić jej typ.   

 

2.3  Typy zmiennych: 

 
W j

ęzyku JAVA występują następujące typy zmiennych 

1.  Typ elementarny (pierwotnie zdefiniowany) 
2.  Nazwa klasy lub interfejsu 
3.  Tablica 
 

PDF created with pdfFactory trial version 

www.pdffactory.com

background image

 

Podstawy j

ęzyka Java 2     

                                                                                             

 
J

ędrzej Ułasiewicz – Inst. Informatyki Automatyki i Robotyki PWr 

byte 

  -128 

  +127 

short 

16 

-2

15  

(-32,768) 

  +2

15

-1 (32,767) 

int 

32 

-2

31  

(-2,147,483,648)    +2

31

-1 (2,147,483,647) 

long 

64 

-2

63

 

  +2

63

-1 

char 

16 

Unicode 0 

  Unicode 2

16

-1 

boolean  8 

false 

true 

float 

32 

32-bit IEEE 754 floating-point numbers 

double 

64 

64-bit IEEE 754 floating-point numbers 

void 

 

 

Tabela 2-1 Typy elementarne 

 
 
Zmienna ustalona – (sta

ła) wartość jej nie ulega zmianie podczas wykonywania 

programu. Oznaczana s

łowem kluczowym 

final

. Stosowana do polepszenia 

czytelno

ści kodu. 

 

final int  wymiar = 8; 

 

2.4  Litera

ły 

 
Litera

ł – Liczba, tekst lub inna informacja reprezentująca ustaloną wartość. 

 
 
123L 

long 

0777 

ósemkowa 

0xF2 

szesnastkowa 

12.4 

double 

Tabela 2-2 Litera

ły numeryczne   

 
Litera

ły boolean: true i false 

 
Litera

ły znakowe: znak ujęty w apostrofy  np. ‘x’ 

Litera

ły znakowe mogą być znakami specjalnymi. 

 
\n 

Nowa linia 

\r 

Pocz

ątek wiersza 

\xd 

Liczba HEX 

\ud 

Znak w unicode 

Tabela 2-3 Znaki specjalne 

 
Litera

ły łańcuchowe: ciąg znaków ujetych w cudzysłów np. ”napis w java” 

Litera

ły łańcuchowe przechowywane w obiektach typu String. 

PDF created with pdfFactory trial version 

www.pdffactory.com

background image

 

Podstawy j

ęzyka Java 2     

                                                                                             

 
J

ędrzej Ułasiewicz – Inst. Informatyki Automatyki i Robotyki PWr 

 

2.5  Operatory 

 
Operatory – symbole specjalne stosowane do wykonywania dzia

łań arytmetycznych, 

niektórych przypisa

ń i porównań logicznych 

 

Dodawanie 

Odejmowanie 

Mno

żenie 

Dzielenie 

Dzielenie modulo 

Tabela 2-4 Operatory arytmetyczne 

 
Inkrementacja:   z  = ++x; z = x++; 
Dekrementacja: z  = - -x; z =  x--; 
 

int x,y,z;  
z = (x * y) +2; 

 

== 

Równe 

!= 

żne 

Mniejsze 

Wi

ększe 

<= 

Mniejsze lub równe 

>=  

Wi

ększe lub równe 

Tabela 2-5 Operatory porównania 

 
Wynik operatora porównania – true albo false 
 
If(x<=j)  y = 2; else y = 13; 
 

AND 

& lub && 

OR 

| lub || 

XOR 

NOT 

Tabela 2-6 Operatory logiczne 

 
Priorytety operatorów: 
1.  Inkrementacja i dekrementacja 
2.  Operacje arytmetyczne 
3.  Porównania 
4.  Operacje logiczne 
5.  Operacje przypisania 

PDF created with pdfFactory trial version 

www.pdffactory.com

background image

 

Podstawy j

ęzyka Java 2     

                                                                                             

 
J

ędrzej Ułasiewicz – Inst. Informatyki Automatyki i Robotyki PWr 

2.6  Instrukcje przypisania 

Zmienna = warto

ść; 

 

x = 3; 
a = b = c = 33; 

 

x+=y 

x = x + y 

x-=y 

x = x - y 

x*=y 

x = x * y 

x/=y 

x = x / y 

 
 

2.7  Operacje na 

łańcuchach: 

Operator + ma podwójne znaczenie. Oznacza te

ż konkatenację łańcuchów.  

Je

żeli jakikolwiek element konkatenacji jest typu String to pozostałe elementy będą 

te

ż traktowane jako łańcuchy.   

System.out.println("Sum = " + sum);

 

 

public class BasicDemo { 
  public static void main(String[] args) { 
    int sum = 0; 
    for (int i = 1; i <= 10; i++) { 
      sum += i; 
      System.out.println(" i=" + i + " sum= " + sum); 
    } 
    System.out.println("Sum = " + sum); 
  } 

Przyk

ład 2-1 Operacje na łańcuchach 

PDF created with pdfFactory trial version 

www.pdffactory.com

background image

 

Podstawy j

ęzyka Java 2     

                                                                                             10 

 
J

ędrzej Ułasiewicz – Inst. Informatyki Automatyki i Robotyki PWr 

3.  Obiekty w j

ęzyku Java 

W j

ęzyku Java prawie wszystko wykonywane jest prze pomocy obiektów 

 

3.1  Wst

ęp do obiektów 

W j

ęzyku C, Pascalu i innych definiowane są struktury 

 

struct Osoba { 
  int pesel; 
  int rok_urodzenia; 
  String nazwisko; 
  String imie; 

 
struct  kowalski; 
kowalski.pesel = 65112300234; 
 

Struktura jest szablonem wedle którego mo

żna utworzyć nową zmienną. Nie określa 

jednak dzia

łań na zmiennych. Obiekt definiuje zarówno zmienne jak i działające na 

nich procedury. 
 

 

 
Obiekt (ang. object) – element programu grupuj

ący zbiór cech (atrybutów) i 

wykonywanych na nich dzia

łań (metod). Konkretny obiekt nazywa się instancją klasy. 

 
 
 
Klasa (ang. class) – szablon za pomoc

ą którego tworzy się obiekty.  

 
 
 
Atrybuty – informacje opisuj

ące cechy obiektu. Atrybuty są zmiennymi. 

 
 
 
Zmienne instancji (zmienne obiektowe) – okre

ślają atrybuty danego obiektu. Dla 

żnych obiektów mają różne wartości. 

 
 
 
Zmienna klasowa – okre

śla atrybut całej klasy. Dla wszystkich instancji klasy ma ona 

jednakow

ą wartość. 

 
 
 

PDF created with pdfFactory trial version 

www.pdffactory.com

background image

 

Podstawy j

ęzyka Java 2     

                                                                                             11 

 
J

ędrzej Ułasiewicz – Inst. Informatyki Automatyki i Robotyki PWr 

Metoda – grupa powi

ązanych ze sobą działań na atrybutach. Odpowiada funkcji w 

proceduralnym j

ęzyku programowania. 

 
 
 

3.2  Tworzenie klas 

Definicja klasy rozpoczyna si

ę od słowa kluczowego class po którym następuje 

nazwa klasy i dalej cia

ło klasy. 

 

class nazwa_klasy { 
     // Cia

ło klasy 


 

Cia

ło klasy składa się z: 
1.  Zmiennych 
2.  Metod 

 

3.2.1 Tworzenie zmiennych 

Zmienne dziel

ą się na: 

1.  Obiektowe  -  indywidualne dla obiektu 
2.  Klasowe 

-  jedna kopia dla wszystkich obiektów klasy 

3.  Lokalne 

-  indywidualne dla bloku 

 
Zmienne obiektowe 
Zmienne obiektowe s

ą to zmienne zdefiniowane w danej klasie, nie poprzedzone 

s

łowem 

static

 i zdefiniowane poza metodami. 

Wed

ług  zwyczajowej konwencji deklarowane na początku klasy. 

 
Zmienne klasowe 
Odnosz

ą się do klasy jako całości a nie do utworzonych z niej obiektów. Zmienne 

klasowe maj

ą jednakową wartość dla wszystkich obiektów klasy. Wykorzystywane są 

do: 

1.  Komunikacji pomi

ędzy obiektami danej klasy  

2.  Przechowuj

ą dane wykorzystywane przez wszystkie obiekty. 

 
 
Aby zadeklarowa

ć zmienną klasową należy ją poprzedzić słowem kluczowym 

static 

 

 

PDF created with pdfFactory trial version 

www.pdffactory.com

background image

 

Podstawy j

ęzyka Java 2     

                                                                                             12 

 
J

ędrzej Ułasiewicz – Inst. Informatyki Automatyki i Robotyki PWr 

class Osoba { 
  int pesel; 
  int rok_urodzenia; 
  String nazwisko; 
  String imie; 
 
  Osoba(int pes) { 
    ... 
  }   

 

3.3  Tworzenie metod 

Metody wykonuj

ą działanie na zmiennych. Definicja metody składa się z: 

1.  Typu zwracanego przez metod

ę. 

2.  Nazwy metody 
3.  Listy parametrów 
4.  Cia

ła metody 

 

typ_zwracany nazwa_metody(typ1 arg1, typ2 arg2,...) { 
    // Cia

ło metody 

    zmienne; 
    instrukcje; 

 

Cia

ło metody może zawierać: 
1.  Deklaracje zmiennych lokalnych 
2.  Instrukcje (

for, while, do – while, if, switch, ....

)  

3.  Wyra

żenia 

4.  Wywo

łania innych metod 

 

Warto

ść zwracana musi być wymieniona po słowie kluczowym 

return

 
 

PDF created with pdfFactory trial version 

www.pdffactory.com

background image

 

Podstawy j

ęzyka Java 2     

                                                                                             13 

 
J

ędrzej Ułasiewicz – Inst. Informatyki Automatyki i Robotyki PWr 

class Osoba { 
  int pesel; 
  int rok_urodzenia; 
  String nazwisko; 
  String imie; 
 
  Osoba(int pes) { 
    pesel = pes; 
 

nazwisko = "?"; 

 

imie = "?"; 

  }   
 
  int drukuj_dane() { 
   System.out.println("Pesel: "+pesel); 
   System.out.println("Nazwisko: "+nazwisko); 
   System.out.println("Imi

ę: "+imie); 

  } 

Przyk

ład 3-1 Klasa Osoba – program osoba.java 

 

3.3.1 S

łowo kluczowe this 

Podczas tworzenia metod czasami wyst

ępuje potrzeba odwołania się do zmiennych 

lub metod tego samego obiektu. Stosuje si

ę wtedy słowo kluczowe 

this

 
 
S

łowo kluczowe 

this 

odnosi si

ę zawsze do bieżącego obiektu i można go używać 

tam gdzie wyst

ępują odwołania do obiektu. 

 
  

class Osoba { 
  int pesel; 
  String imie; 
 
  zmienImie(String imie) { 
 

this.imie = imie; 

  }   
  ... 

 

PDF created with pdfFactory trial version 

www.pdffactory.com

background image

 

Podstawy j

ęzyka Java 2     

                                                                                             14 

 
J

ędrzej Ułasiewicz – Inst. Informatyki Automatyki i Robotyki PWr 

3.3.2 Przekazywanie parametrów do metod 

 
Parametry metody mog

ą być: 

1.  Obiektami 
2.  Typami elementarnymi 

  
Je

żeli do metody przekazywany jest obiekt to w istocie przekazywane jest do niego 

odniesienie. Zatem modyfikacja obiektu w metodzie modyfikuje obiekt pierwotny 
(tablice s

ą też obiektami). 

 
Je

żeli do metody jako parametr przekazywany jest typ elementarny to przekazywany 

jest on przez warto

ść.  Modyfikacja parametru w metodzie nie przenosi się na 

zewn

ątrz. 

 

3.3.3 Metody klasowe 

 
Metody klasowe tworzy si

ę poprzedzając jej deklaracje słowem kluczowym 

static

 
Wykonanie metody klasowej nie wymaga utworzenia instancji klasy (obiektu) 
zawieraj

ącej tę metodę. 

 
Metody klasowe s

ą dostępne w innych klasach. 

 

PDF created with pdfFactory trial version 

www.pdffactory.com

background image

 

Podstawy j

ęzyka Java 2     

                                                                                             15 

 
J

ędrzej Ułasiewicz – Inst. Informatyki Automatyki i Robotyki PWr 

3.3.4 Przeci

ążanie metod 

W j

ęzyku Java klasa może zawierać kilka metod o tej samej nazwie ale różniące się 

liczb

ą i typem parametrów (polimorfizm). Która z metod będzie wykonana zależy od 

sposobu wywo

łania metody – czyli typów i liczby parametrów. 

 

class Osoba { 
  int pesel; 
  int rok_urodzenia; 
  String nazwisko; 
  String imie; 
 
  Osoba(int pes) { 
    pesel = pes; 
 

nazwisko = "?"; 

 

imie = "?"; 

  }   
   
  void drukuj(String nazwisko) { 
    System.out.println("Nazwisko: "+nazwisko); 
  } 
   
  void drukuj(int pesel, String nazwisko) { 
    System.out.println("Pesel: "+pesel); 
    System.out.println("Nazwisko: "+nazwisko); 
  } 
     

 
class osoba4 { 
  public static void main(String argv[]) { 
    Osoba klient = new Osoba(123); 
    klient.drukuj("Kowalski"); 
 

klient.drukuj(123,"Kowalski"); 

  } 

Przyk

ład 3-2 Ilustracja przeciążania metod – program osoba4.java 

 

PDF created with pdfFactory trial version 

www.pdffactory.com

background image

 

Podstawy j

ęzyka Java 2     

                                                                                             16 

 
J

ędrzej Ułasiewicz – Inst. Informatyki Automatyki i Robotyki PWr 

3.4  Dziedziczenie 

  

 
Dziedziczenie – tworzenie nowej klasy (podrz

ędnej) na podstawie innej klasy 

(bazowej, nadrz

ędnej) w taki sposób że tworzona klasa przejmuje atrybuty i metody 

klasy nadrz

ędnej. 

 
 
Dzi

ęki dziedziczeniu nie trzeba definiować metod i trybutów od nowa gdyż tworzona 

klasa przejmuje wszystkie w

łasności klasy nadrzędnej. 

 
 
W j

ęzyku Java wszystkie klasy są klasami podrzędnymi klasy Object. 

 

Object

Osoba

Dziecko

Uczen

Student

Rysunek 3-1 Hierarchia obiektów 

 
 
Do tworzenia klasy podrz

ędnej z nadrzędnej używa się słowa kluczowego 

extends

 

 
nowa_klasa extends klasa_nadrz

ędna { 

   // Cia

ło klasy; 

 
 
 

PDF created with pdfFactory trial version 

www.pdffactory.com

background image

 

Podstawy j

ęzyka Java 2     

                                                                                             17 

 
J

ędrzej Ułasiewicz – Inst. Informatyki Automatyki i Robotyki PWr 

class Osoba { 
  int pesel; 
  int rok_urodzenia; 
  String nazwisko; 
  String imie; 
 
  void drukuj_dane() { 
   System.out.println("Pesel: "+pesel); 
   System.out.println("Nazwisko: "+nazwisko); 
   System.out.println("Imie: "+imie); 
  } 

 
class Student extends Osoba { 
  int indeks; 
  String wydzia

ł; 

  void drukuj_dane() { 
   System.out.println("Pesel: "+pesel); 
   System.out.println("Nazwisko: "+nazwisko); 
   System.out.println("Imie: "+imie); 
   System.out.println("Pesel: "+pesel); 
   System.out.println("Wydzial "+wydzia

ł); 

  } 

 
class dziedzicz { 
  public static void main(String arg[]) { 
    Student stud = new Student(); 
 

stud.drukuj_dane(); 

  } 

Przyk

ład 3-3 Ilustracja dziedziczenia 

 
Przes

łanianie (ang. overriding

Mo

że się zdarzyć że klasa podrzędna i nadrzędna mają metody o tej samej nazwie. 

Wtedy poszukiwanie w

łaściwej metody rozpoczyna się od dołu hierarchii. 

Wykonywana jest ta metoda która le

ży najniżej w hierarchii. 

 

PDF created with pdfFactory trial version 

www.pdffactory.com

background image

 

Podstawy j

ęzyka Java 2     

                                                                                             18 

 
J

ędrzej Ułasiewicz – Inst. Informatyki Automatyki i Robotyki PWr 

Object

Osoba

Dziecko

Uczen

Student

drukuj_dane

drukuj_dane

x.drukuj_dane

 

3.5  Tworzenie nowych obiektów, konstruktory 

 
 
 
Nowe obiekty tworzy si

ę za pomocą operatora 

new

 
 
Po operatorze 

new

 powinna wyst

ąpić nazwa klasy z której tworzy się obiekt wraz z 

par

ą nawiasów. W nawiasach podaje się wartość początkową. 

 

Student stud = new Student(); 
String nazwa = new String(); 
Point pt  = new Point(0,0); 

 
Liczba i typ argumentów operatora 

new

 okre

ślona jest przez konstruktor danej klasy. 

Podanie nieprawid

łowej liczby lub typów argumentów spowoduje błąd kompilacji. 

 
W momencie wykonywania operatora 

new

 zachodz

ą następujące działania: 

1.  Tworzony jest nowy obiekt 
2.  Przydzielana jest mu pami

ęć 

3.  Uruchamiany jest konstruktor  

 
Konstruktor – metoda wykorzystywana przy tworzeniu klasy. Pe

łni funkcje: 

1.  Inicjuj

ą zmienne obiektu 

2.  Tworz

ą inne obiekty wymagane przez tworzony obiekt 

 
Konstruktor zbudowany jest podobnie jak inne metody. Cechy konstruktora: 

1.  Zawsze ma tak

ą samą nazwę jak klasa. 

2.  Nie posiada 

żadnego typu 

3.  Nie zwraca 

żadnych argumentów. 

4.  Konstruktor nie mo

że być wywołany bezpośrednio. 

 
 

PDF created with pdfFactory trial version 

www.pdffactory.com

background image

 

Podstawy j

ęzyka Java 2     

                                                                                             19 

 
J

ędrzej Ułasiewicz – Inst. Informatyki Automatyki i Robotyki PWr 

Konstruktor mo

że być wywoływany z różną liczbą argumentów. Stąd należy 

zdefiniowa

ć odpowiednią liczbę konstruktorów. 

Gdy klasa nie posiada 

żadnego zdefiniowanego konstruktora to operator 

new

 i tak 

utworzy obiekt. 
 

class Osoba { 
  int pesel; 
  int rok_urodzenia; 
  String nazwisko; 
  String imie; 
 
  Osoba(int pes) { // Konstruktor 
    pesel = pes; 
 

nazwisko = "?"; 

 

imie = "?"; 

  }   
   
  void drukuj_dane() { 
   System.out.println("Pesel: "+pesel); 
   System.out.println("Nazwisko: "+nazwisko); 
   System.out.println("Imie: "+imie); 
  } 

 
class test { 
  public static void main(String arg[]) { 
    Osoba kowalski = new Osoba(531221); 
 

kowalski.drukuj_dane(); 

  } 

Przyk

ład 3-4 Ilustracja konstruktora 

 
Przeci

ążanie konstruktorów 

 
 
 Konstruktory mog

ą się różnić liczbą i typem parametrów.  

 
 
Przyk

ładowo dla klasy osoba można skonstruować trzy konstruktory: 

Osoba(int pes); 
Osoba(int pes, String nazwisko);  
Osoba(int pes, String nazwisko, String imie);  

 

PDF created with pdfFactory trial version 

www.pdffactory.com

background image

 

Podstawy j

ęzyka Java 2     

                                                                                             20 

 
J

ędrzej Ułasiewicz – Inst. Informatyki Automatyki i Robotyki PWr 

class Osoba { 
  int pesel; 
  int rok_urodzenia; 
  String nazwisko; 
  String imie; 
   
  Osoba(int pes) { // Konstruktor 1 
    pesel = pes; 
 

nazwisko = "?"; 

 

imie = "?"; 

  }   
   
  Osoba(int pes, String nazw) { // Konstruktor 2 
    pesel = pes; 
 

nazwisko = nazw; 

 

imie = "?";     

  }   
 
  Osoba(int pes, String nazw, String im) { 
    // Konstruktor 3 
    pesel = pes; 
 

nazwisko = nazw; 

 

imie = im; 

  }     
 
  void drukuj_dane() { 
   . . . 
  } 

 
class konstruktor2 { 
  public static void main(String arg[]) { 
    Osoba kowalski =  
    new Osoba(531221,"Kowalski","Zenon"); 
 

kowalski.drukuj_dane(); 

  } 

Przyk

ład 3-5 Przeciążanie konstruktorów – program konstruktor2.java 

PDF created with pdfFactory trial version 

www.pdffactory.com

background image

 

Podstawy j

ęzyka Java 2     

                                                                                             21 

 
J

ędrzej Ułasiewicz – Inst. Informatyki Automatyki i Robotyki PWr 

3.6  Przes

łanianie metod 

Gdy wywo

ływana jest metoda dla danego obiektu to interpreter najpierw szuka w 

definicji danej klasy, potem w definicji klasy bazowej i tak dalej w gór

ę hierarchii. 

 
 
Aby wywo

łać przesłoniętą metodę klasy bazowej należy użyć słowa kluczowego 

super

 

super.metoda_klasy_bazowej 

 
 
Przes

łanianie metod pozwala implementować w metodzie przysłaniającej tylko nowe 

w

łasności a pozostałe wziąć z metody przesłanianej klasy bazowej. 

 

class Osoba { 
  int pesel; 
  int rok_urodzenia; 
  String nazwisko; 
  String imie; 
 
  void drukuj_dane() { 
   System.out.println("Pesel: "+pesel); 
   System.out.println("Nazwisko: "+nazwisko); 
   System.out.println("Imie: "+imie); 
  } 

 
class Student extends Osoba { 
  int indeks; 
  String wydzia

ł; 

 
  void drukuj_dane() { 
    // Odwolanie do klasy bazowej 
    super.drukuj_dane();  
    System.out.println("Wydzial "+wydzia

ł); 

  } 

 
class dziedzicz2 { 
  public static void main(String arg[]) { 
    Student stud = new Student(); 
 

stud.drukuj_dane(); 

  } 

PDF created with pdfFactory trial version 

www.pdffactory.com

background image

 

Podstawy j

ęzyka Java 2     

                                                                                             22 

 
J

ędrzej Ułasiewicz – Inst. Informatyki Automatyki i Robotyki PWr 

 

Przyk

ład 3-6 Wywoływanie metody przesłoniętej program - dziezicz2.java 

 
 

3.7  Dost

ęp do zmiennych klasy i zmiennych obiektu 

 
Pobieranie warto

ści zmiennej i zmiana wartości: 

 
   Notacja z kropk

ą: 

 Odniesienie_do_obiektu.nazwa_zmiennej 

 

 
Student stud = new Student(); 
stud.imie = ”Przemyslaw”; 

 
 
Zmienne klasy 
Gdy zmienna jest zmienn

ą klasy to istnieje jedna jej kopia dla wszystkich 

utworzonych z tej klasy obiektów. Warto

ść zmiennej klasowej jest taka sama dla 

wszystkich obiektów. 
 

class osoba { 
   static String ojciec = ”Wladyslaw”; 
   int wiek; 
   … 

 
Wywo

ływanie metod 

 
   Notacja z kropk

ą: 

 Odniesienie_do_obiektu.nazwa_metody 

 

 
 Student stud = new Student(); 
 stud.drukuj_dane(); 

 
Metody klasowe 
Metody klasowe (

static

) odnosz

ą się do klasy a nie do poszczególnych obiektów.  

 
 

3.8  Odwo

łania do obiektów 

Obiekty dost

ępne są poprzez odwołania lub odniesienia do obiektów (ang. 

references). Podczas operacji przypisywania i przekazywania obiektu jako 
argumentu do funkcji nie kopiuje si

ę obiektu ale odniesienie. 

PDF created with pdfFactory trial version 

www.pdffactory.com

background image

 

Podstawy j

ęzyka Java 2     

                                                                                             23 

 
J

ędrzej Ułasiewicz – Inst. Informatyki Automatyki i Robotyki PWr 

 

import java.awt.Point; 
mport java.awt.Point; 
class TestOdniesien { 
   public static void main(String[] arg) { 
     Point p1,p2; 
     p1 = new Point(10,10); 
     p2 = p1; 
     p1.x = 20; 
     p1.y = 20; 
 

 System.out.println("p1: "+p1.x+"  "+p1.y);    

 

 System.out.println("p2: "+p2.x+"  "+p2.y);    

    } 


Program TestOdniesien.java 
 

P1: 20  20 
P2: 20  20 

Wyniki programu TestOdniesien.Java 
 

p1

p2

x

y

stos

sterta

odniesienie

obiekt

 

 
 

import java.awt.Point; 
 
class TestOdniesien2 { 
   public static void main(String[] arg) { 
 

 Point p1,p2; 

     p1 = new Point(10,10); 
     p2 = new Point(20,20);; 
     System.out.println("p1: "+p1.x+"  "+p1.y);    
 

 System.out.println("p2: "+p2.x+"  "+p2.y);    

    } 

Program TestOdniesien2.java 
 

P1: 10  10 
P2: 20  20 

Wyniki programu TestOdniesien2.Java 

PDF created with pdfFactory trial version 

www.pdffactory.com

background image

 

Podstawy j

ęzyka Java 2     

                                                                                             24 

 
J

ędrzej Ułasiewicz – Inst. Informatyki Automatyki i Robotyki PWr 

 

p1

p2

x

y

stos

sterta

odniesienie

obiekt

x

y

 

 

3.9  Rzutowanie i konwersja 

J

ęzyk Java stosuje ścisłą kontrolę typów.   

 
Jedynym wyj

ątkiem jest typ 

String

. Gdy stosuje si

ę konkatenację zmiennych i 

przynajmniej jedna zmienna jest typu 

String

 to do tego typu konwertowane s

ą 

zmienne pozosta

łe. 

System.out.println("p2: "+p2.x+"  "+p2.y);   
 

Aby zamieni

ć  jeden typ na inny stosuje się rzutowanie (ang. casting). 

Rzutowanie – jawna zmiana warto

ści jednego typu na inny. 

 
Rzutowanie typów elementarnych na inne typy elementarne 
 
Dotyczy g

łównie typów numerycznych 

 
 
Rzutowanie

:   (nazwa_typu) warto

ść

  

 
 
Rzutowanie mo

że być:   

Bez utraty dok

ładności:  byte na int, int na long, int na float, char na int 

Z utrat

ą dokładności:     int na byte, float na int, itd 

 
float x; 
int i; 
i = (int) x/3; 

 
Rzutowanie obiektów 
Obiekty mog

ą podlegać rzutowaniu gdy pozostają w relacji macierzysty / potomy. 

 
 
Rzutowanie

:   (nazwa_klasy) warto

ść

  

 
 
Gdy rzutujemy klas

ę potomną na macierzystą wynik jest w pełni określony.  

 

PDF created with pdfFactory trial version 

www.pdffactory.com

background image

 

Podstawy j

ęzyka Java 2     

                                                                                             25 

 
J

ędrzej Ułasiewicz – Inst. Informatyki Automatyki i Robotyki PWr 

3.10  Porównywanie obiektów 

 
Operatory relacji (<, <=, >, >=, ==, !=) maj

ą zastosowanie do typów elementarnych. 

Do obiektów mo

żna stosować operatory == i != ale sprawdzają one jedynie czy 

odniesienie jest do tych samych obiektów. 
 
Aby porówna

ć wartości dwóch obiektów należy opracować odpowiednie metody. 

 

class porownania { 
   public static void main(String[] arg) { 
 

 String s1,s2; 

     s1 = "Napis 1"; 
     s2 = s1; 
     System.out.println("s1: "+s1);    
     System.out.println("s2: "+s2);    
     System.out.println("Obiekty: "+(s1==s2));    
     s2 = new String(s1); 
 

 System.out.println("Obiekty : "+(s1==s2));    

     System.out.println("Wartosci: "+s1.equals(s2));    
   } 

Program porownania.java 
 

s1: Napis 1 
s2: Napis 1 
Obiekty: true 
Obiekty : false 
Wartosci: true 

Wyniki programu porownania.Java 
 

 
 

 
 

 
 
 
 

PDF created with pdfFactory trial version 

www.pdffactory.com

background image

 

Podstawy j

ęzyka Java 2     

                                                                                             26 

 
J

ędrzej Ułasiewicz – Inst. Informatyki Automatyki i Robotyki PWr 

4. Tablice 

Tablice grupuj

ą wiele elementów dowolnego ale tego samego typu, który określony 

zosta

ł przy tworzeniu tablicy.  

Tablice w Java s

ą obiektami. 

Dost

ęp do elementu tablicy następuje poprzez podanie jego numeru (indeksu). 

 
Aby utworzy

ć tablicę należy: 

1.  Zadeklarowa

ć zmienną tablicową. 

2.  Utworzy

ć nowy obiekt i przypisać go zmiennej tablicowej. 

3.  Zainicjowa

ć tablicę poprzez nadanie jej wartości początkowych. 

 

4.1  Deklaracja zmiennej tablicowej 

 
Zmienn

ą tablicową deklaruje się poprzez: 

1.  Podanie typu tablicy , pary nawiasów kwadratowych i nazwy tablicy  

      typ_tablicy[]  nazwa_zmiennej 

2.  Podanie typu tablicy,  nazwy tablicy i pary nawiasów kwadratowych 

      typ_tablicy  nazwa_zmiennej[] 

 
Przyk

łady: 

int[] bufor; 
int   bufor[]; 
Point[] punkty;  

 
 

4.2  Tworzenie obiektów tablicowych 

Obiekt tablicowy tworzy si

ę na jeden z dwóch sposobów: 

1. Zastosowanie operatora:   new nazwa_typu[wymiar] 
2. Bezpo

średnie zainicjowanie elementów tablicy. 

 
Przyk

łady: 

int buf[] = new int[16]; 
int com[] = {1,2,4,8}; 
Point[] punkty = new Points[3];  

 
Podczas tworzenia tablicy jej elementy s

ą automatycznie inicjowane: 

 
Numeryczne 

boolean 

false 

char 

‘\n’ 

obiekty 

null 

 
Gdy tablica tworzona jest poprzez bezpo

średnie zainicjowanie jej wymiar równy jest 

liczbie elementów podanych podczas inicjacji. 
 

PDF created with pdfFactory trial version 

www.pdffactory.com

background image

 

Podstawy j

ęzyka Java 2     

                                                                                             27 

 
J

ędrzej Ułasiewicz – Inst. Informatyki Automatyki i Robotyki PWr 

class Point { 
  int x; 
  int y; 
  Point(int x, int y) { // Konstruktor 
    this.x = x; 
    this.y = y; 
     } 
 } 
 
class tablice2 { 
  
 public static void main(String arg[]) { 
  int com[] = {1,2,4,8}; 
  int buf[] = new int[16]; 
  int i,sum=0; 
  String kolor[] = {"Red","Green","Blue"}; 
  Point[] trojkat = {new Point(1,1), new Point(2,2),  
                     new Point(3,1)}; 
 
  for(i=0;i<buf.length;i++) { 
   buf[i] = com[i%3]; 
   sum+=buf[i]; 
   System.out.println("buf "+buf[i]); 
  }   
  System.out.println("sum= "+kolor[i%2]); 
 } 

Przyk

ład 4-1 Deklaracja i dostęp do tablic - program poin2.java 

 

null

stos

sterta

trók

ąt

 

 

Rysunek 4-1  Deklaracja zmiennej  Point[] trojkat; 

PDF created with pdfFactory trial version 

www.pdffactory.com

background image

 

Podstawy j

ęzyka Java 2     

                                                                                             28 

 
J

ędrzej Ułasiewicz – Inst. Informatyki Automatyki i Robotyki PWr 

 

stos

sterta

trók

ąt

length

null

null

null

trojkat[0]

trojkat[1]
trojkat[2]

 

Rysunek 4-2  Utworzenie zmiennej   trojkat = new Point[3]; 

 
 
 

stos

sterta

trók

ąt

length

null

null

trojkat[0]

trojkat[1]
trojkat[2]

1

1

y

x

Point

 

Rysunek 4-3 Inicjacja zmiennej   trojkat[0] = new Point(1,1); 

 
 

4.3  Odwo

łąnie do elementów tablic 

Dost

ęp do elementu tablicy uzyskujemy poprzez podanie nazwy tablicy i indeksu w 

nawiasach kwadratowych. 
Np.: 

trojkat[2]; 

 
 
W j

ęzyku Java dostęp do elementów tablic jest kontrolowany pod względem 

przekroczenia dopuszczalnego zakresu indeksu. 
 
 
 
Z ka

żdym obiektem tablicowym związany jest atrybut 

length

 podaj

ący liczbę 

elementów tablicy. 
 

 
  for(i=0;i<buf.length;i++) {. . .} 

 
W j

ęzyku Java tablica obiektów zawiera odwołania do tych obiektów. Stąd operacje 

przesuwania i kopiowania w ramach tych tablic powoduj

ą tylko zmianę tych odwołań. 

 
W przypadku tablic zawieraj

ących typy elementarne i 

String

 zachodzi rzeczywiste 

kopiowanie. 

PDF created with pdfFactory trial version 

www.pdffactory.com

background image

 

Podstawy j

ęzyka Java 2     

                                                                                             29 

 
J

ędrzej Ułasiewicz – Inst. Informatyki Automatyki i Robotyki PWr 

 

4.4  Tablice wielowymiarowe 

Java nie definiuje tablic wielowymiarowych. Pozwala jednak tworzenie tablic 
zawieraj

ących inne tablice. 

 

class tablice3 { 
  public static void main(String arg[]) { 
    int tab[][] = new int[3][3]; 
    int i,j,sum=0; 
 
    for(i=0;i<3;i++) { 
      for(j=0;j<3;j++) { 
        tab[i][j] = i+j; 
        System.out.print("buf["+i+","+j+"]= 
"+tab[i][j]); 
      }   
      System.out.println(" "); 
    } 
  } 

Przyk

ład 4-2 Tablice wielowymiarowe program tablice3.java 

 

PDF created with pdfFactory trial version 

www.pdffactory.com

background image

 

Podstawy j

ęzyka Java 2     

                                                                                             30 

 
J

ędrzej Ułasiewicz – Inst. Informatyki Automatyki i Robotyki PWr 

5. Instrukcje steruj

ące 

5.1  Polecenia blokowe 

Blok instrukcji zaznacza si

ę nawiasami klamrowymi: 

 

{ // Blok instrukcji 
  instr1; 
  instr2; 
  . . . 
  instrN 

 
Blok instrukcji mo

że być użyty w każdym miejscu programu na miejscu pojedynczej 

instrukcji. 
 
Bloki instrukcji mo

żna zagnieżdżać. 

 
Zmienne lokalne zadeklarowane wewn

ątrz bloku są widoczne tylko wewnątrz tego 

bloku. 
 

{ // Blok instrukcji 
    int i; 
    for(i=0;i<3;i++) { // Blok instrukcji 
    . . . 
    }  

 

5.2  Instrukcja warunkowa if 

Instrukcja warunkowa – instrukcja która zostanie wykonana tylko wtedy gdy 
spe

łniony jest pewien warunek. 

 

if(warunek) instrukcja1 
else instrukcja2 

 

warunek mo

że przyjmować wartość logiczną 

true

 lub 

false

.

 

 
instrukcja1

 zostanie wykonana gdy warunek ma warto

ść 

true

instrukcja2

 zostanie wykonana gdy warunek ma warto

ść 

false

 

PDF created with pdfFactory trial version 

www.pdffactory.com

background image

 

Podstawy j

ęzyka Java 2     

                                                                                             31 

 
J

ędrzej Ułasiewicz – Inst. Informatyki Automatyki i Robotyki PWr 

if(x<10)  
   z = 0; 
else  
   z = 1; 
 

5.3  Instrukcja warunkowa switch 

 

 
switch (zmienna) { 
  case wart1: instrukcja1; 
              break; 
  case wart2: instrukcja2; 
              break; 
  . . . 
  default:    instrukcjaN; 
}   
 

 
Zmienna powinna by

ć typu elementarnego który rzutuje się na typ int (byte, char, 

short, int). 
 
Gdy zmienna przyjmuje warto

ść1 to wykonywana jest instrukcja1 i tak dalej. Gdy 

zmienna nie przyjmuje 

żadnej z wyszczególnionych wartości to wykonywana jest 

instrukcja z etykiet

ą default. 

 
Przyk

ład : 

 

switch (stopien) { 
  case 5: System.out.print("Bardzo dobry"); 
          break; 
  case 4: System.out.print("Dobry"); 
          break; 
  . . . 
  default: System.out.print("B

ład"); 

}   

 
Gdy po instrukcji brakuje s

łowa kluczowego break to zostana wykonane kolejne 

instrukcje a

ż do napotkania break lub dotarcia do końca instrukcji switch. 

 

PDF created with pdfFactory trial version 

www.pdffactory.com

background image

 

Podstawy j

ęzyka Java 2     

                                                                                             32 

 
J

ędrzej Ułasiewicz – Inst. Informatyki Automatyki i Robotyki PWr 

5.4  P

ętla for 

P

ętle for stosuje się gdy pewną instrukcję (lub blok) należy powtórzyć określoną 

liczb

ę razy. 

 
 

for(wart_poczatkowa; war_zako

ńczenia; licznik_pętli)  

     instrukcja  

 
 
wart_poczatkowa 

Wyra

żenie wykonywane na początku. Jeżeli użyty jest 

indeks  to wyra

żenie to nadaje mu wartość początkową np. 

int x = 0. Zmienne tutaj deklarowane istniej

ą tylko w czasie 

wykonania p

ętli a potem będą usunięte. 

 

war_zako

ńczenia 

Sprawdzany jest przed ka

żdym wykonaniem pętli. Jeśli jest 

true to p

ętla zostanie wykonana. 

 

licznik_p

ętli 

Dowolne wyra

żenie wykonane po każdym zakończeniu 

wykonania instrukcji p

ętli. Zwykle jest to zwiększenie licznika 

p

ętli np. i++. 

 

 for(int i=0;i<16;i++) { 
    buf[i] = i; 

 } 
 
Dowolna cz

ęść polecenia for może być wyrażeniem pustym. Wtedy trzeba te 

wyra

żenia wykonywać w innym miejscu. 

 
 

5.5  P

ętle while i do 

P

ętle while i do while umożliwiają powtarzanie wykonywania pewnego fragmentu 

kodu (instrukcja) tak d

ługo gdy warunek przyjmuje wartość true. 

 
P

ętla while 

 
 

while(warunek)  
            instrukcja; 

 
 
P

ętla 

while

 wykonuje si

ę dopóki warunek ma wartość true. Warunek sprawdzany 

jest przed wykonaniem instrukcji tak wi

ęc gdy nie jest spełniony instrukcja może się 

w ogóle nie wykona

ć. 

 

PDF created with pdfFactory trial version 

www.pdffactory.com

background image

 

Podstawy j

ęzyka Java 2     

                                                                                             33 

 
J

ędrzej Ułasiewicz – Inst. Informatyki Automatyki i Robotyki PWr 

Przyk

ład: 

int i = 0; 
while(i < 10) { 
   buf[i] = i; 
   i++; 

P

ętla wykona się 10 razy. 

 
P

ętla 

do ... while

 

 
 

do { 
    instrukcja 
} while(warunek);  

 
 
W p

ętli 

do .. while

 instrukcja b

ędzie powtórzona gdy warunek ma wartość 

true. W takiej p

ętli instrukcja zostanie wykonana przynajmniej jeden raz. 

 
Przyk

ład: 

int i = 0; 
do(i < 10) { 
   buf[i] = i; 
   i++; 
} while(i<10) 

 
P

ętla wykona się 11 razy. 

 

5.6  Przerywanie dzia

łania pętli, instrukcje break i continue 

 
Wykonywanie p

ętli można przerwać w dowolnym momencie. 

 

break

 – przerwanie dzia

łania pętli i przejście do następnej instrukcji. 

  

continue

 – wznowienie dzia

łanie pętli od początku kolejnej iteracji. 

 
 

for(...) {

  ...

 break;

 ...

}

instrukcja

while(...) {

  ...

 break;

 ...

}

instrukcja

do {

  ...

 break;

 ...

} while(...)

instrukcja

 

 

PDF created with pdfFactory trial version 

www.pdffactory.com

background image

 

Podstawy j

ęzyka Java 2     

                                                                                             34 

 
J

ędrzej Ułasiewicz – Inst. Informatyki Automatyki i Robotyki PWr 

Przyk

ład działania instrucji break: 

 
int i = 0; 
do(i < 10) { 
   . . . ; 
   if(buf[i] == 0) break; 
   i++; 
} while(i<10) 

 
Instrukcja 

continue

 powoduje wznowienie dzia

łania pętli. Dla pętli for następuje 

zwi

ększenie licznika a następnie sprawdzenie warunku. 

 

for(...) {

 instr

  ...

 continue;

 ...

}

while(...) {

 instr

...

 continue;

 ...

}

do {

  instru

  ...

  continue;

  ...

} while(...)

 

 
 
Przyk

ład działania instrucji continue: 

 

int i = 0; 
do(i < 10) { 
   i++ ; 
   if(buf[i] == 100) continue; 
   . . .; 
} while(i<10) 

 
Zarówno instrukcja break jak i continue mog

ą posiadać etykietę pętli wskazującą 

sk

ąd należy wznowić wykonanie programu. 

 
 

break etykieta

 – skok na zewn

ątrz pętli 

continue

 

etykieta

 – skok na wewn

ątrz pętli 

 
 
 
Przyk

ład działania instrucji 

break

 z etykiet

ą: 

PDF created with pdfFactory trial version 

www.pdffactory.com

background image

 

Podstawy j

ęzyka Java 2     

                                                                                             35 

 
J

ędrzej Ułasiewicz – Inst. Informatyki Automatyki i Robotyki PWr 

 
powtorz: 
int i = 0; 
do(i < 10) { 
   . . . ; 
   if(buf[i] == 0) break powtorz; 
   i++; 
} while(i<10) 

 

PDF created with pdfFactory trial version 

www.pdffactory.com

background image

 

Podstawy j

ęzyka Java 2     

                                                                                             36 

 
J

ędrzej Ułasiewicz – Inst. Informatyki Automatyki i Robotyki PWr 

 

6. Pakiety 

6.1  Poj

ęcie pakietu 

 
 
Pakiety s

ą sposobem hierarchicznej organizacji klas w grupy.  

 
 
Pakiety pozwalaj

ą na: 

1.  Po

łączenia klas w grupy co ułatwia administrowanie klasami a w 

szczególno

ści zgrupowanie klas należących do jednego użytkownika. 

2.  Rozwi

ązanie konfliktów nazw klas 

3.  Lepsz

ą ochronę klas 

 
Nazwa pakietu 

Klasy zawarte w pakiecie 

java.lang 

Klasy podstawowe, Object, String, Thread 

java.awt 

Klasy do tworzenia graficznego interfejsu u

żytkownika 

java.io 

Pliki i strumienie wej

ścia / wyjścia 

java.net 

Obs

ługa sieci 

java.aplet 

Aplety 

java.util 

Klasy czasu, struktur danych i inne   

Tabela 6-1 Niektóre pakiety zawarte w pakiecie java 

 

6.2  Udost

ępnianie pakietów 

 
Pe

łne nazwy klas 

Pe

łna nazwa klasy składa się z nazwy pakietu i po kropce nazwy klasy: 

 
adr1 = java.net.InetAddress.getLocalHost(); 

 
Aby u

żyć pewnej klasy należącej do innego pakietu należy: 

 

1.  Gdy klasa nale

ży do pakietu java.lang - można tej klasy użyć bezpośrednio 

2.  Gdy klasa nale

ży do innego pakietu - użyć jej pełnej nazwy. 

 

Aby unikn

ąć wypisywania długich nazw do programu można importować pakiety. 

 

PDF created with pdfFactory trial version 

www.pdffactory.com

background image

 

Podstawy j

ęzyka Java 2     

                                                                                             37 

 
J

ędrzej Ułasiewicz – Inst. Informatyki Automatyki i Robotyki PWr 

 
Pakiety udost

ępniane są poprzez zastosowanie słowa kluczowego 

import

 

import nazwa_pakietu.nazwaklasy 
import nazwa_pakietu.* 

 
 
nazwa_pakietu jest: 
1. nazw

ą pojedynczego pakietu  

2. hierarchi

ą pakietów których nazwy oddzielone są kropkami. 

 
S

łowo kluczowe import musi wystąpić na początku pliku programu. 

 

import java.net.*; 
... 
adr1 = InetAddress.getLocalHost(); 

 
Gwiazdka * ma inne znaczenie ni

ż w przypadku katalogów. Zaimportowane będą 

kasy zadeklarowane jako public zawarte bezpo

średnio w danym pakiecie.  

 
Na przyk

ład gdy zastosujemy wyrażenie: 

import java.net.*

 udost

ępnimy 

klasy bezpo

średnio zawarte w pakiecie net. Podpakiety zostaną pominięte. 

 

6.3  Lokalizacja klas 

Aby pewna klasa mog

ła być użyta musi być przez interpreter Javy odnaleziona.  

 
Przeszukiwanie odbywa si

ę według nazwy pakietu i zmiennej środowiska 

CLASSPATH.  
 

1.  Gdy zdefiniowana jest zmienna CLASSPATH to system przeszukuje foldery 

zdefiniowane w zmiennej CLASSPATH.  

2.  Gdy zmienna CLASSPATH nie jest zdefiniowana system przeszukuje katalog 

bie

żący oraz katalog 

lib

 zainstalowanego pakietu oprogramowania. 

PDF created with pdfFactory trial version 

www.pdffactory.com

background image

 

Podstawy j

ęzyka Java 2     

                                                                                             38 

 
J

ędrzej Ułasiewicz – Inst. Informatyki Automatyki i Robotyki PWr 

 

6.4  Modyfikatory dost

ępności 

 
Dost

ęp domyślny - brak modyfikatora dostępności 

Standardowo zadeklarowane klasy (bez 

żadnego modyfikatora) są udostępniane  

innym metodom z tego samego pakietu. O ile klasy nie zosta

ły przydzielone do 

żadnego pakietu są automatycznie umieszczane  w domyślnym pakiecie. 
 

Ka

żda zmienna klasy może być odczytywana i modyfikowana przez dowolną 

klas

ę   tego pakietu. 

Ka

żda metoda klasy może być wywołana przez dowolną klasę tego pakietu. 

 
Modyfikator 

private 

Zmienna lub metoda zadeklarowana jako 

private

 jest dost

ępna tylko w ramach 

klasy w której zosta

ła zdefiniowana. Prywatne zmienna i metody nie są dostępne w 

klasach podrz

ędnych. 

 
Modyfikator stosowany jest gdy: 

1.  Nie ma potrzeby aby inne klasy stosowa

ły zmienne i metody. 

2.  Stosowanie ich by

łoby szkodliwe 

 
Modyfikator 

public 

Zmienna lub metoda zadeklarowana jako 

public 

jest dost

ępna dla wszystkich 

innych klas. Metody te s

ą dostępne w klasach podrzędnych. 

Metoda 

main()

 musi by

ć zadeklarowana jako 

public

 
Modyfikator 

protected 

Zmienna lub metoda zadeklarowana jako protected jest dost

ępna dla: 

1.  Klas podrz

ędnych danej klasy 

2.  Innych klas tego pakietu 

 
 
 
 

PDF created with pdfFactory trial version 

www.pdffactory.com

background image

 

Podstawy j

ęzyka Java 2     

                                                                                             39 

 
J

ędrzej Ułasiewicz – Inst. Informatyki Automatyki i Robotyki PWr 

7. Wyj

ątki 

7.1  Hierarchia wyj

ątków 

 
W Javie wyj

ątki są obiektami – instancje klasy Throwable (java.lang.Object) . Gdy 

wyst

ąpi wyjątek  to tworzony jest obiekt klasy Throwable. 

 
Wyj

ątek może być generowany przez: 

1.  System operacyjny 
2.  U

żywane w aplikacji klasy 

 

 
Obiekt odpowiadaj

ący wyjątkowi zawiera: 

1.  Kontekst programu w momencie wyst

ąpienia wyjątku (stos wywołań 

klas/metod) 

2.  Komunikat o b

łędzie. 

3.  Informacj

ę o przyczynie. 

4.  Wska

źnik na wyjątek klasy podrzędnej (ang. chained exception). 

 
Wyj

ątki zorganizowane są hierarchicznie są podklasami klasy  Throwable. Wyjątki 

nadrz

ędne odpowiadają błędom ogólnym, podrzędne bardziej szczegółowym. 

 

Error

Exception

Throwable

RunTimeException

IOException

InterruptedException

EOFException

InterruptedIOException

 

Rys. 3 Hierarchia wyj

ątków w Javie 

 
Podstawowe klasy wyj

ątków: 

1.  Error -  b

łędy wewnętrzne środowiska wykonawczego Javy (maszyny witualnej 

Javy). 

2.  RunTimeException – b

łędy czasu wykonania (ArrayIndexOutofBounds, 

NullPointerException, SecurityException,...) 

3.  IOException – b

łędy związane z systemem wejścia/wyjścia (EOFException, 

SocketException, InterruptedIOException). 

 

 
  

PDF created with pdfFactory trial version 

www.pdffactory.com

background image

 

Podstawy j

ęzyka Java 2     

                                                                                             40 

 
J

ędrzej Ułasiewicz – Inst. Informatyki Automatyki i Robotyki PWr 

 

7.2  Obs

ługa wyjątków – klauzula catch 

7.2.1 Prosta instrukcja try – catch 

J

ęzyk Java wymusza konstrukcje programowe do obsługi wyjątków. Kompilator 

sprawdza istnienie takich instrukcji podobnie jak typy i liczb

ę parametrów w 

procedurach. 
 

try { // Blok gdzie mo

że wystąpić wyjątek 

  ... 
} catch (NazwaKlasyWyj

ątku  e) { 

  // Obs

ługa wyjatku 

  ... 

Podstawowa konstrukcja obs

ługi wyjątku 

 
Zmienna e odpowiada obiektowi reprezentuj

ącemu zaistniały wyjątek. Dzięki takiej 

konstrukcji mo

żna się odwołać do metod klasy (np. getMessage, printStackTrace). 

 
GetMessage – Wyprowadzenie komunikatu o b

łędzie 

 

public String getMessage() 

 

... 
try { 
  Thread.Sleep(1000); 
} catch (InterruptedException e) { 
  // Obs

ługa wyjatku 

  System.out.printl(”B

łąd: ” + e.getMessage()); 


... 

Program 1 Przyk

ład obsługi wyjątku 

7.2.2 Wielokrotne instrukcje catch 

Mo

żna testować wystąpienie wielu klas wyjątków stosując wielokrotną instrukcję 

catch. 
 

PDF created with pdfFactory trial version 

www.pdffactory.com

background image

 

Podstawy j

ęzyka Java 2     

                                                                                             41 

 
J

ędrzej Ułasiewicz – Inst. Informatyki Automatyki i Robotyki PWr 

try { 
  ... 
} catch (NazwaWyj

ątku1  e1) {  // Obsługa wyjatku 1 

  ... 
} catch (NazwaWyj

ątku2  e2) {  // Obsługa wyjatku 2 

  ... 

...  
 catch (NazwaWyj

ątkuN  eN) {  // Obsługa wyjatku N 

  ... 

 Testowanie wyst

ąpienia wielu wyjątków 

-  W wielokrotnej instrukcji catch warunki testowane s

ą po kolei. 

-  Wykonywany jest blok odpowiadaj

ący pierwszemu znalezionemu wyjątkowi – 

dalsze sprawdzanie jest pomijane. 

-  Wyj

ątki zorganizowane są w sposób hierarchiczny stąd w miejscu wystąpienia 

klasy bazowej mo

żna użyć klasy podrzędnej.  

 
Obs

ługując wyjątki z jednej hierarchii należy najpierw testować wystąpienie wyjątków  

podrz

ędnych. 

 

... 
try { 
  Thread.Sleep(1000); 
} catch (EOFException e1) { 
 
} catch (FileNotFoundException e2) { 
 
} catch (IOException e3) { 
 

... 

Program 2 Przyk

ład prawidłowej obsługi hierarchii wyjątków  

 
Gdyby IOException obs

ługiwać najpierw nigdy nie doszło by do obsługi wyjątków 

klas podrz

ędnych. 

 

7.2.3 Klauzula finally  

W przypadku gdy istnieje blok instrukcji który ma by

ć wykonany niezależnie od tego 

czy wyst

ąpi wyjątek czy też nie należy użyć klauzuli finally.  

 

PDF created with pdfFactory trial version 

www.pdffactory.com

background image

 

Podstawy j

ęzyka Java 2     

                                                                                             42 

 
J

ędrzej Ułasiewicz – Inst. Informatyki Automatyki i Robotyki PWr 

try { 
  ... 
} catch (NazwaKlasyWyj

ątku  e) { 

  // Obs

ługa wyjatku 

  ... 
} finally { 
  // Blok wykonywany w ka

żdym przypadku 

  ... 

Konstrukcja obs

ługi wyjątku z klauzulą finally 

 
 

PDF created with pdfFactory trial version 

www.pdffactory.com

background image

 

Podstawy j

ęzyka Java 2     

                                                                                             43 

 
J

ędrzej Ułasiewicz – Inst. Informatyki Automatyki i Robotyki PWr 

 

7.3  Generowanie wyj

ątków 

7.3.1 Deklarowanie metod generuj

ących wyjątki  

Je

żeli klasa może generować wyjątek musi to  być wskazane przy definicji tej klasy. 

 
Wskazanie 

że metoda może generować wyjątki odbywa się poprzez umieszczenie w  

jej deklaracji s

łowa kluczowego throws. Słowo throws umieścić należy po liście 

parametrów ale przed klamr

ą rozpoczynającą blok metody. 

 

public int wstaw( Object item ) throws mojWyjatek { 
 ...          

 
Gdy metoda ma generowa

ć wiele wyjątków należy umieścić je kolejno: 

public int wstaw( Object item ) throws W1,W2,...,Wn  

 ...          

 
Klauzula throws oznacza 

że metoda może wygenerować wyjątek ale nie musi. 

 

7.3.2 Propagacja wyj

ątku 

Zamiast obs

ługiwać wyjątek w tej metodzie w której się objawia można delegować 

obs

ługę wyjątku do metody (klasy) nadrzędnej. Wtedy wyjątek musi być obsłużony w 

metodzie nadrz

ędnej. 

Metoda  3

Metoda 2

Metoda 1

Obsluga

Wyjatek

 

Rys. 4 Propagacja wyj

ątku 

PDF created with pdfFactory trial version 

www.pdffactory.com

background image

 

Podstawy j

ęzyka Java 2     

                                                                                             44 

 
J

ędrzej Ułasiewicz – Inst. Informatyki Automatyki i Robotyki PWr 

public void czytajPlik(String nazwa) { 
  ... 
  try { 
    while(cnt < bufor.length) { 
      my.read(bufor); 
      cnt++; 
    }   
  } catch(IOException e) { 
      System.out.println("Blad czytania :" + 
e.getMessage()); 
  } 
}     

Program 3 Obs

ługa wyjątku IOException w metodzie czytajPlik  

 

public void czytajPlik(String nazwa) throws 
IOException { 
    ... 
    while(cnt < bufor.length) { 
      my.read(bufor); 
      cnt++; 
     } 

}  

Program 4 Przekazanie obs

ługi wyjątku IOException do metody nadrzędnej 

 

PDF created with pdfFactory trial version 

www.pdffactory.com

background image

 

Podstawy j

ęzyka Java 2     

                                                                                             45 

 
J

ędrzej Ułasiewicz – Inst. Informatyki Automatyki i Robotyki PWr 

 

7.3.3 Tworzenie i generowanie wyj

ątków 

Aby wygenerowa

ć wyjątek należy: 

Utworzy

ć nową instancję klasy reprezentującą wyjątki. Musi to być podklasa 

klasy Throwable. 

U

żyć polecenia throw. 

 

... 
KlasaWyj

ątku  iex = new  KlasaWyjątku(); 

throw iex; 
... 

Tworzenie i generowanie wyj

ątku 

 
Mo

żliwe jest obsłużenie wyjątku przekazanie go metody nadrzednej. 

 

public void czytajPlik(String nazwa) throws 
IOException { 
  ... 
  try { 
    ... 
  } catch(IOException e) { 
  System.out.println("Blad czyt:" + e.getMessage()); 
      throw e; 
  } 

Program 5 Obs

ługa wyjątku i przekazanie go do metody wywołującej 

 
 
Nowy wyj

ątek musi być klasą podrzędną klasy Exception.  

 
Aby wybra

ć odpowiedni wyjątek należy: 

1.  Z istniej

ących wyjątków  należy wybrać taki który wydaje się najbardziej 

odpowiedni. 

2.  Gdy brak takiego nale

ży utworzyć wyjątek jako podrzędny klasy Exception. 

 
 
Klasy definiuj

ące wyjątki posiadają dwa konstruktory: 

1.  Konstruktor bez argumentów 
2.  Konstruktor z jednym argumentem typu String który reprezentuje nazw

ę 

wyj

ątku. W takim konstruktorze należy wykonać konstruktor klasy nadrzędnej 

podaj

ąc jako argument tę nazwę. Nazwa ta może być uzyskana przy pomocy 

metody getMessage(). 

 

PDF created with pdfFactory trial version 

www.pdffactory.com

background image

 

Podstawy j

ęzyka Java 2     

                                                                                             46 

 
J

ędrzej Ułasiewicz – Inst. Informatyki Automatyki i Robotyki PWr 

public class MyException extends Exception { 
   public MyException() { } 
   public MyException(String s) {  
     super(s); 
   } 

 
public class ExceptionDemo { 
    static class MyException extends Exception {} 
 
    public static void wyjatek() throws MyException { 
 

 

System.out.println("Zglaszam wyjatek! "); 

 

 

throw new MyException(); 

    } 
 
    public static void main (String[] args) { 
        System.out.println("Start"); 
        try { 
           wyjatek(); 
        } catch (MyException e) { 
  

  

 System.out.println("Przechwycony"); 

        } 
    } 

Program 6 Przyk

ład tworzenia i generowania wyjątku 

 
 
 

8. Literatura 

Witryna firmy Sun 

http://www.java.com

  

Laura Lemay, Rogers Cadenhead, Java 2 dla ka

żdego, Helion 2001 

Laura Lemay, Charles L. Perkins, Java 1.1, Helion 1998.  
Tutorial Javy The Java

TM

 Tutorial z pakietu SDK 1.4.2 plik tutorial.chm 

Witryna The Java Developers Almanac 1.4

http://javaalmanac.com/index.html

 

Bruce Eckel, Thinking in Java, wydanie 3, Helion 2003. 
 
 

PDF created with pdfFactory trial version 

www.pdffactory.com