4 NIZ I STRING 1 tip niza tip

  • Slides: 20
Download presentation
4 NIZ I STRING 1

4 NIZ I STRING 1

tip niza • tip niza u javi realizovan je kao specijalna klasa, što znači

tip niza • tip niza u javi realizovan je kao specijalna klasa, što znači da je svaki niz objekat • to dalje znači da se nalazi na hipu i da mu se pristupa putem reference • niz je specijalna klasa po tome što se – kreira na poseban način – ima operaciju indeksiranja – poseduje inicijalizator 2

kreiranje niza • referenca na niz deklariše se iskazom tip ime. Niza[] ili tip[]

kreiranje niza • referenca na niz deklariše se iskazom tip ime. Niza[] ili tip[] ime. Niza gde je tip svakog elementa. • na primer, iskazom int x[] ili int[] x deklariše se referenca na int niz x (ali se niz ne kreira!) • niz se stvara posebnom operacijom new koja važi za sve objekte. 3

 • operacijom ime. Niza = new tip[duzina] na hipu se – stvara niz

• operacijom ime. Niza = new tip[duzina] na hipu se – stvara niz dužine duzina i – na njega usmerava prethodno deklarisana referenca ime. Niza 4

 • na primer, operacijom x = new int[3] stvara se int niz x

• na primer, operacijom x = new int[3] stvara se int niz x dužine 3 x • deklarisanje i kreiranje niza može se izvršiti jednom naredbom: tip[] ime. Niza = new tip[duzina]; int[] x = new int[3]; 5

posebne osobine niza • indeksiranje se izvodi kao i u drugim programskim jezicima izrazom

posebne osobine niza • indeksiranje se izvodi kao i u drugim programskim jezicima izrazom ime. Niza[indeks] gde je indeks celobrojni izraz sa vrednošću 0 <= indeks <= duzina-1 greška! • na primer, x[2] x[2*i-j+1] x[j] x[3] • za razliku od C/C++ java proverava probijanje indeksa! 6

 • niz kao objekat uvek ima polje length koje sadrži dužinu niza, tako

• niz kao objekat uvek ima polje length koje sadrži dužinu niza, tako da se ona ne mora pratiti posebnom promenljivom; vrednost polja length postavlja se pri kreiranju • dakle, ime. Niza. length duzina • za naš primer, x. length 3 • uočimo da kod javinih nizova nema potrebe za rezervisanjem viška memorijskog prostora: niz zauzima onoliko memorije koliko ima aktuelnih elemenata! 7

 • niz se može inicijalizovati: tip[] ime. Niza = {v 1, . .

• niz se može inicijalizovati: tip[] ime. Niza = {v 1, . . . , vk}; gde su v 1, . . . , vk inicijalne vrednosti elemenata na indeksima redom 0, 1, . . , k-1. Uočimo da se operacija new ne navodi! • na primer, double[] y = {1. 1, 2. 0, -5. 6, 0. 0}; y 1. 1 2. 0 -5. 6 0. 0 8

matrica • javina matrica je doslovno nizova, preciznije niz referenci na nizove • kreiranje:

matrica • javina matrica je doslovno nizova, preciznije niz referenci na nizove • kreiranje: tip[][] ime. Matrice = new tip[v][k]; gde je tip elemenata matrice, v broj vrsta i k broj kolona. • kao i svaki drugi niz, i matrica se može deklarisati i formirati posebnim naredbama. Tada je deklaracija oblika tip[][] ime. Matrice; 9

 • izgled hipa posle kreiranja matrice int[][] mtr = new int[2][3] mtr 10

• izgled hipa posle kreiranja matrice int[][] mtr = new int[2][3] mtr 10

indeksiranje • matrica se indeksira odgovarajućom operacijom [] koja se može primeniti jedan ili

indeksiranje • matrica se indeksira odgovarajućom operacijom [] koja se može primeniti jedan ili dva puta: int[][] m = new int[5][10]; . . . . m[0][3] //pristup elementu u vrsti 0 i koloni 3 m[2] //pristup vrsti 2 • dužina se određuje se poljem length m. length //broj vrsta (=5) m[3]. length //duzina vrste 3 (=10) 11

inicijalizacija • matrica se inicijalizuje kao i svaki drugi niz, uzimajući u obzir da

inicijalizacija • matrica se inicijalizuje kao i svaki drugi niz, uzimajući u obzir da su elementi tog niza takođe nizovi int[][] i. Niz = {{1, 2}, {0, -1}, {4, 5}}; vrsta 0 vrsta 1 vrsta 2 12

int[][] m 1; m 1 = new int[2][]; m 1 m 2 double[][] m

int[][] m 1; m 1 = new int[2][]; m 1 m 2 double[][] m 2 = new double[2][]; m 2[0] = new double[3]; m 2[1] = new double[4]; i. Niz int i. Niz = {{1, 2}, {0, -1}, {4, 5}}; 13

String • po prirodi stvari, string je tekstuelni tip • stringovi su važan tip

String • po prirodi stvari, string je tekstuelni tip • stringovi su važan tip podataka jer mogu da posluže kao univerzalni prenosioci podataka (npr. kao tip argumenata programa) • kao i tip niza, tip stringa u javi je realizovan kao specijalna klasa • naziv klase je String 14

posebne osobine stringova • Postoje string literali koji se mogu koristiti pri inicijalizaciji ili

posebne osobine stringova • Postoje string literali koji se mogu koristiti pri inicijalizaciji ili prenosu argumenata u metodu ne treba new – inicijalizacija: String s = "Ovo je string" mada može i String s = new String("Ovo je string"); – prenos argumenta ob. metoda("string literal") • literali se ne mogu dodeljivati (z = "abc"; ) 15

konkatenacija • nad stringovima je definisan operator konkatenacije (spajanja) + i operator += String

konkatenacija • nad stringovima je definisan operator konkatenacije (spajanja) + i operator += String a = "xy", b = "zt", c, d = "w"; c = a + b; //c je sada "xyzt" d += c; //d je "wxyzt" • zapazimo: posle operacije d+=c stari sadržaj stringa d ostaje na hipu, ali je nedostupan w d wxyzt 16

 • operator konkatenacije je polimorfan • ako je jedan operand string, operacija +

• operator konkatenacije je polimorfan • ako je jedan operand string, operacija + se interpretira kao konkatenacija, drugi se automatski prevodi u string double x = 1. 5; String tekst = "Vrednost x je ", r; r = tekst + x; //r "Vrednost x je 1. 5" • drugi operand može biti i objekat, pod uslovom da u njegovoj klasi postoji metoda to. String() (što je uvek slučaj) 17

prenos stringova u metodu • string se u metodu prenosi po vrednosti • to

prenos stringova u metodu • string se u metodu prenosi po vrednosti • to znači da ako se string-parametar u metodi promeni to neće imati uticaj na original (što nije slučaj sa drugim objektima kada su argumenti metode) • razlog: da se omogući prenos string literala kao argumenata, jer oni moraju ostati nepromenjeni 18

void poruka(String txt) {. . . txt += "xxx"; . . . } String

void poruka(String txt) {. . . txt += "xxx"; . . . } String tekst. Poruke = "Ovo je poruka"; poruka(tekst. Poruke); • po završetku metode, tekst. Poruke je i dalje "Ovo je poruka" (a ne "Ovo je porukaxxx") 19

metode klase String • Klasa String raspolaže velikim brojem gotovih metoda od kojih izdvajamo

metode klase String • Klasa String raspolaže velikim brojem gotovih metoda od kojih izdvajamo samo dve: – int length() daje dužinu stringa – char. At(int poz) da je znak na poziciji poz u stringu, gde je 0 poz length()-1 20