java wyklad 4 0

background image

Programowanie.

Wykład 4.

mgr inż. Aleksander Bielski

alex@iis.pwsz.elblag.pl

www.iis.pwsz.elblag.pl/~alex

PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski

1

background image

Program wykładu

1) Tablice
2) Metoda main()
3)Czas życia zmiennych
4)Inicjalizacja zmiennych
5)Przekazywanie argumentów
6)Odśmiecacz pamięci
7)Operatory logiczne: obliczanie ”na skróty”

PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski

2

background image

Tablice

PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski

3

Tablica

– jest to zbiór elementów typów podstawowych,

referencji lub innych tablic.
Wszystkie elementy tablicy muszą mieć ten sam typ (wyjątek

– polimorfizm)
Kroki niezbędne do utworzenia tablicy:

deklaracja
konstruowanie
inicjalizacja

background image

Tablice: deklaracja

PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski

4

Deklaracja mówi kompilatorowi jaka jest nazwa tablicy i typ

elementów.

Przykłady:

int[] ints;

// tablica typu podstawowego int

double[] dubs;

// tablica typu podstawowego double

Dimension[] dims;

// tablica typu referencyjnego (pakiet awt)

float[][] twoDee;

// dwuwymiarowa tablica

background image

Tablice: deklaracja c.d.

PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski

5

Używanie nawiasów kwadratowych:

przed nazwą tablicy

po nazwie tablicy

Przykłady:

Deklaracja metody (parametrem jest tablica wartości typu double):

mojaMetoda(double dubs[])
mojaMetoda(double[] dubs)

Deklaracja metody, która zwraca tablicę wartości typu double:

double[] innaMetoda();
double innaMetoda()[];

background image

Tablice c.d

PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski

6

Pyt. Kiedy jest określany rozmiar tablicy?
Odp. W czasie utworzenia tablicy.

Przykład:

int[] ints;

// Deklaracja

ints = new int[25];

// Utworzenie w czasie wykonywania

Skutki:

można określać rozmiar tablicy w czasie wykonywania przy pomocy

zmiennej:

int size = 1152 * 900;
int[] raster;
raster = new int[size];

background image

Tablice c.d.

PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski

7

Deklaracja i utworzenie (definicja) tablicy w jednej linii:

int[] ints = new int[25];

Inicjalizacja:

elementy tablicy przyjmują wartości domyślne dla danego typu danych:

Tblica 4.1 Wartości domyślne zmiennych

background image

Deklaracja, definicja i inicjalizacja tablic

PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski

8

Wszystko w jednej linii:

float[] diameters = {1.1f, 2.2f, 3.3f, 4.4f, 5.5f};

rozmiar tablicy jest określany ilością elementów w nawiasach

Inicjalizacja poprzez przypisanie wartości do każdego elementu:

long[] kwadraty;
kwadraty = new long[6000];
for (int i = 0; i < 6000; i++) {

kwadraty[i] = i * i;

}

background image

PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski

9

Jeśli rozmiar tablicy może się zmieniać, to bezpieczniej jest zmienić linijkę
nr 3 w programie:

short rozmiar;
rozmiar = 6000;
long[] kwadraty;
kwadraty = new long[rozmiar];
for (int i = 0; i <

kwadraty.length

; i++) {

kwadraty[i] = i * i;

}

Deklaracja, definicja i inicjalizacja tablic c.d.

background image

PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski

10

Można tworzyć tablice o kształcie różnym

od prostokąta

W

przypadku

tablic

wielowymiarowych

rozmiar każdej „pod-tablicy” nie musi być

jednakowy

Tablice: kilka uwag

background image

PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski

11

jest

punktem

wejścia

dla

każdej

aplikacji w Javie

jest statyczna i publiczna

deklaracja:

public static void main(String[] args)

tablica

args

zawiera argumenty, które

mogą być przekazane przez użytkownika z

wiersza poleceń

Metoda main()

background image

PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski

12

składowe klas

(member variable) – są

tworzone i unicestwiane wraz z obiektem

automatyczne

(lokalne w metodach) – są

tworzone w czasie wejścia do metody,

istnieją przez cały czas wykonania

metody i dostępne tylko w czasie

wykonania metody (wyjątek – metody klas

wewnętrznych)

Wartości domyślne zmiennych które są

składowymi klas są podane w tablicy 4.1.

Czas życia zmiennych

background image

PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski

13

składowe klas:

1.

class maZmienne {

2.

int x = 20;

3.

static int y = 30;

4.

...}

Inicjalizacja zmiennych nie statycznych

odbywa

się

tuż

przed

wywołaniem

konstruktora danej klasy

Zmienne statyczne są inicjalizowane w

czasie ładowania klasy

Inicjalizacja zmiennych

background image

PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski

14

Zmienne

automatycznie

nie

inicalizowane przez system, dlatego do

nich w sposób jawny muszą być przypisane

wartości:

1.

public int wrong() {

2.

int i;

3.

return i+5;

4.

}

metoda nie da się skompilować: błąd w

linii 3 „

Variable i may not have been

initialized

”.

Inicjalizacja zmiennych c.d.

background image

PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski

15

public double fourthRoot(double d) {

double result;
if (d >= 0)

{

result = Math.sqrt(Math.sqrt(d));

}

return result;

}

wynik kompilacju:
bład „

variable result may not

have been

initialized

”.

Przykład: kod programu znajduje się w katalogu p1

Inicjalizacja zmiennych c.d.

background image

PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski

16

Możliwe rozwiązanie problemu:

public double fourthRoot(double d) {
double result = 0.0;

// Inicjalizacja

if (d >= 0) {

result = Math.sqrt(Math.sqrt(d));

}
return result;
}

Inicjalizacja zmiennych c.d.

background image

PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski

17

Do metody przekazywana jest kopia argumentów typów

prostych:

public void zwieksz(int par) {

par += 15;

}

następnie wywołujemy metodę zwieksz():

int xx = 12345;
zwieksz(xx);
System.out.println(”teraz xx ma wartosc: ” + xx);

Pyt. Jaki będzie oczekiwany wynik?

Przekazywanie argumentów

background image

PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski

18

Przekazywany jest nie obiekt, tylko referencja
Zmiana parametru formalnego powoduje zmianę

wartości argumentu wywołania

class Test {

int a, b;
Test(int i, int j) {

a = i;
b = j;

}
void metoda(Test o) {

o.a *= 2; o.b /= 2;

}

}

Przekazywanie obiektów

background image

PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski

19

class WywolaniePrzezNazwe {

public static void main(String args[]) {

Test o = new Test(10, 20);
System.out.println(” przed wywolaniem: ”
+ o.a + ” ” + o.b);
o.metoda(o);
System.out.println(” po wywolaniu: ”

+ o.a + ” ” + o.b);

}

}

Przykład: kod programu znajduje się w katalogu p2.

Przekazywanie obiektów: przykład

background image

PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski

20

Problem:
Jak przekazać zmienne typów podstawowych przez

referencje?

Rozwiązanie:
Utworzenie tablicy jednoelementowej i przekazanie

jej w wywołaniu metody

Przykład:
program p3/Test.java

Referencje do zmiennych typów podstawowych

background image

PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski

21

Referencje do zmiennych typów podstawowych

public class Test {
public static void main(String args[]) {
int [] tab = { 1 };
zmien(tab);
System.out.println("tab ma wartosc " + tab[0]);
zmien(tab);
System.out.println("tab ma wartosc " + tab[0]);
}
public static void zmien(int [] wartosc) {
wartosc[0]++;
}
}

background image

PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski

22

Odśmiecacz pamięci

Działa jako oddzielny wątek

nie można stwierdzić jak często jest

uruchamiany

dobrym nawykiem jest przypisanie wartości

null do zmiennych typów referencyjnych

których już nie chcemy używać w programie

metody

System.gc()

i

Runtime.gc()

„sugerują”

wirtualnej

maszynie

Javy

uruchomienie odśmiecacza pamięci

background image

PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski

23

Obliczanie ”na skróty”

Dotyczy operatorów logicznych

&&

i

||

wykonujących logiczne AND i OR na

wartościach typu

boolean

Dla operacji

AND

, jeśli jeden z operandów

ma wartość false, wynik również ma wartość

false niezależnie od wartości drugiego

operanda

Dla operacji

OR

, jeśli jeden z operandów

ma wartość true, wynik również ma wartość

true niezależnie od wartości drugiego

operanda

background image

PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski

24

Obliczanie ”na skróty” c.d.

Inaczej mówiąc dla dowolnej

wartości

X

typu boolean:

false

AND

X

= false

true

OR

X

= true

background image

PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski

25

Obliczanie ”na skróty” : przykłady

if

(s != null)

{

if

(s.length() > 20)

{

System.out.println(s);
}
}

lub ten sam kod zapisany inaczej:

if

(

(s != null)

&&

(s.length() > 20)

)

{

System.out.println(s);
}
}

background image

PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski

26

Obliczanie ”na skróty” - efekt uboczny

Obliczanie tylko części wyrażenia może

powodować efekt uboczny.

Przykłady: programy p4/logika.java

p4/logika2.java

background image

PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski

27

Operator przypisania

Nadaje zmiennej lub wyrażeniu nową wartość.
Forma skrócona:

x

op=

y oznacza x

=

x

op

y

gdzie

op

oznacza jedną z operacji

+, -,

*, /, %, <<, >>, >>>, &, |, ^

Różnice:

jeśli wyrażenie x powoduje efekt uboczny,

to objawia on się jednokrotnie

operator przypisania zawiera niejawny

operator rzutowania

background image

PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski

28

Operator przypisania c.d.

byte x = 2;
x += 3;

jest równoznaczne z :

byte x = 2;
x = (byte) (x + 3);

rzutowanie odbywa się w sposób niejawny,

inaczej wynik będzie typu int

background image

PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski

29

Przykładowy test


Wyszukiwarka

Podobne podstrony:
java wyklad 1
java wyklad3 0
Java wykłady1, Java wykłady:
java wyklad2
Java wykład 3, Java wykład 2
java wyklad
wyklad5.cpp, JAVA jest językiem programowania obiektowego
Java podstawy jezyka wyklad1
Wykład 9 wątki java
Napęd Elektryczny wykład
wykład5
Psychologia wykład 1 Stres i radzenie sobie z nim zjazd B
Wykład 04

więcej podobnych podstron