Download presentation
Presentation is loading. Please wait.
1
Objektno orijentisano programiranje
Java, 2. čas
2
Eclipse Postoji mnoštvo Java razvojnih alata:
Borland Jbuilder NetBeans Eclipse ... Ovi alati podržavaju integrated development environment (IDE) za brzi razvoj Java programa. Editovanje, kompajliranje, build-ovanje, debugg-ovanje i online help su integrisani u jedan GUI.
3
Eclipse Eclipse se može pokrenuti na proizvoljnoj platformi sa Java VM. Može se download-ovati sa Pre ”instaliranja” Eclipse, mora se instalirati JDK
4
Eclipse, perspektiva Nakon pokretanja, otvara se Workspace Launcher prozor workspace je zapravo direktorijum u koji se smeštaju fajlovi našeg projekta Perspektiva sadrži editore i poglede (views) U jednom prozoru može postojati jedna ili više perspektiva Otvaranje perspektive : Window → Open Perspective Java
5
Eclipse, editori Na površini predviđenoj za editor može biti otvoren veći broj editora, a oni se mogu razmestiti tako da se vidi sadržaj svakog od njih Sa jednog na drugi otvoreni editor može se preći npr. pomoću prečice Ctrl+F6 ili strelicama iz toolbar-a. Window → Reset Perspective uređuje layout kao u prvobitnom stanju
6
Eclipse, pogledi Određeni pogled se može prikazati izborom iz Window → Show View menija Perspektivom je određeno koji pogledi se mogu videti i oni su ponuđeni u Show View podmeniju
7
Eclipse Editovanje fajlova izvan Eclipse
Eclipse smešta sve svoje resurse na lokalni fajlsistem. Resursi se mogu kopirati u workspace direktorijum i kada Eclipse nije pokrenut, a fajlovi se mogu menjati nekim od eksternih alata. Koristiti Refresh za ažuriranje Eclipse-a promenama načinjenim izvan njega. Refresh se može izabrati iz File ili odgovarajućeg popup menija
8
Eclipse, kreiranje projekta
File → New → Project Java project , Next Ukucati ime projekta u polje Project name Create project in workspace Use project folder as root for sources and class files Finish
9
Kreiranje novog paketa
U Package Explorer pogledu izabrati projekat U toolbar-u kliknuti na dugme New Java Package ili izabrati New → Package iz kontekst menija U polje Name ukucati ime novog paketa Finish
10
Kreiranje nove klase U Package Explorer pogledu izabrati novi paket
Kliknuti na dugme New Java Class u toolbar-u Proveriti da se u polju Source Folder nalazi ime projekta i u polju Package ime našeg paketa U polje Name uneti ime klase public static void main(String[] args) Finish Automatski se otvara editor za dodavanje koda nove klase
11
Eclipse, kompajliranje i izvršavanje programa
Naš kod se dinamički kompajlira dok kucamo Crvene vijugave linije u editoru ukazuju na eventualne greške Za pokretanje programa : sačuvamo promene odemo u Package Explorer pogled desnim klikom na klasu projekta koja implementira main() metod (....java) pozivamo kontekst meni izaberemo Run As → Java Application izlaz je prikazan u Console pane
12
Java, izvršavanje programa
Pokretanje klase iz Package Explorer-a kao Java aplikacije koristi default podešavanja za pokretanje odabrane klase i ne dozvoljava navođenje argumenata komandne linije. Za navođenje ovih argumenata, koristiti padajući meni Run iz toolbar-a i izabrati Run... Otvara se dijalog u kome se izabere tab Arguments i ukucaju argumenti u polje Program arguments (argumente razdvojiti belinama) Run
13
Eclipse, debugger Omogućuje postavljanje breakpoint-a i izvršavanje programa liniju po liniju. Mogu se pratiti i menjati vrednosti promenljivih kao i posmatrati koji metodi se pozivaju za vreme izvršavanja programa Breakpoint se može postaviti na neku liniju duplim klikom na vertikalni ruler duž leve ivice editora, ispred te linije Pojavljuje se puna plava tačka na tom mestu
14
Eclipse, debugger Debugger se zaustavlja kada dođe do breakpoint-a
Pokrećemo debugger desnim klikom na klasu, a zatim izaberemo Debug As → Java Application Pojavljuje se prozor koji nas pita da li da otvori Debug perspektivu. Kliknuti na Yes. Naredna linija koju debugger treba da izvrši naznačena je zelenom bojom Kako nastaviti? resume, suspend, terminate, step into, step over, step return, run to line iz Run menija ili toolbar-a
15
Eclipse, debugger Vrednosti promenljivih prikazane su u Variables pane
Da bismo promenili vrednost promenljive, desnim klikom na nju, pa izborom Change Value otvara se dijalog u kome možemo da unesemo novu vrednost promenljive Kada završimo rad sa debugger-om, možemo otvoriti Java perspektivu sa Window → Open Perspective → Java
16
Java, klasa Character Klasa Character je automatski dostupna našim programima Statički metodi: isDigit() isLetter() isLetterOrDigit() isWhiteSpace() isLowerCase() isUpperCase() Svi kao argument uzimaju jedan char
17
Klasa Character Da bismo mogli da pišemo:
char symbol='a'; if(isUpperCase(symbol)) isLowerCase(symbol) na početku treba navesti: import static java.lang.Character.*; Bez toga, morali bismo da pišemo i ime klase ispred imena metoda, npr. Character.isLowerCase(symbol);
18
Nizovi Nizovska promenljiva i niz na koji se ona odnosi su odvojeni entiteti Memorija koja se alocira za nizovsku promenljivu čuva referencu na niz, ne sam niz. Sam niz je poseban entitet koji će biti negde drugde u memoriji Nismo u obavezi da kreiramo niz kada deklarišemo nizovsku promenljivu. Možemo najpre kreirati nizovsku promenljivu i kasnije u nju smestiti referencu na određeni niz
19
Deklaracija nizovske promenljive
int[] niz; int niz[]; Niz tek treba da se definiše. Na ovom mestu nije alocirana memorija za sam niz Ova promenljiva je prosto lokacija u memoriji koja može da čuva referencu/pokazivač na niz Za kreiranje samog niza mora se zadati njegov tip i koliko će elemenata sadržati int [] niz; ”kaže” da je tip nizovske promenljive int []
20
Definisanje niza Nakon što smo deklarisali nizovsku promenljivu, možemo definisati niz na koji će ona referisati: niz = new int[10]; // Definise niz od 10 integer-a Ova naredba kreira niz koji će sadržati 10 vrednosti tipa int, i smešta referencu na niz u promenljivu niz Moguće je i jednom naredbom deklarisati nizovsku promenljivu i definisati niz tipa int koji će sadržati 10 celih brojeva: int[] niz = new int[10];
21
Definisanje niza Ključna reč new ukazuje na to da se alocira nova memorija za niz, a int[10] određuje da kapacitet te memorije treba da bude dovoljan za 10 promenljivih tipa int Kada se niz kreira ovako, elementi niza se automatski inicijalizuju na podrazumevane vrednosti, a to su: 0 za numeričke vrednosti false za boolean '\u0000' za char null za objekte
22
Dužina niza to je broj elemenata koje niz sadrži
length – atribut ( a ne metod! ) objekta koji predstavlja niz Npr. niz.length ( za naš niz imaće vrednost 10 ) Ovaj atribut se može koristiti za kontrolisanje for petlje koja obrađuje elemente niza Ukoliko promenimo broj elemenata niza ovo polje se automatski ažurira
23
Pristup elementima niza
Indeks mora biti tipa int ( ukoliko je long mora se izvršiti eksplicitno kastovanje u int ) niz[0] - prvi element niza niz Java proverava da li su vrednosti indeksa koje koristimo validne. Ako nisu, izbacuje izuzetak tipa IndexOutOfBoundsException
24
Nizovska promenljiva Nizovska promenljiva je odvojena od niza koji referiše. Na raznim mestima u programu možemo koristiti nizovsku promenljivu za čuvanje referenci na različite nizove. Npr. int[] niz = new int[10]; ... niz = new int[50]; To je sada novi niz, potpuno odvojen od prethodnog. Prethodni niz od 10 elemenata se odbacuje.
25
Inicijalizacija nizova
int[] niz={2,3,5,7,11,13,17}; int[] niz=new int[100]; // automatska inicij. na 0 niz[0]=2; niz[1]=3; double[] data = new double[50]; for(int i=0; i<data.length; i++) data[i]=1.0;
26
Korišćenje Utility metoda za inicijalizaciju nizova
Metod fill() definisan u klasi Arrays iz paketa java.util može se koristiti za inicijalizaciju niza import java.util.Arrays; Arrays.fill(data, 1.0); // popunjava sve elemente niza data jedinicom Prvi argument – ime niza koji treba popuniti Drugi argument – vrednost Ovaj metod ”radi” za sve vrednosti primitivnih tipova
27
fill() metod Pošto je fill() statički metod klase Arrays, može i ovako: import static java.util.Arrays.fill; pa onda možemo zvati metod bez navođenja klase fill(data,1.0);
28
Inicijalizacija nizovske promenljive
Nizovska promenljiva se može inicijalizovati i referencom na postojeći niz: long[] even = {2L,4L,6L,8L,10L}; long[] value = even; Onda nizovske promenljive even i value referišu na isti niz
29
Obrada nizova double average = 0.0; double[] uzorci = new double[50];
for(int i=0; i<uzorci.length; i++){ uzorci[i]=100.0*Math.random(); average += uzorci[i]; } average /= uzorci.length;
30
Obrada nizova – collection-based for-petlja
double average = 0.0; for( double value: uzorci ){ average += value; } average /= uzorci.length; Petlja iterira kroz vrednosti svih elemenata tipa double niza uzorci. Promenljivoj value se pridružuje jedna po jedna vrednost elemenata niza
31
Collection-based for petlja
Ovakva for-petlja služi za obradu celog niza Za obradu dela niza i dalje se mora koristiti standardna for-petlja Collection-based for petlja ne obezbeđuje pristup elementima u svrhu postavljanja njihovih vrednosti Za promene vrednosti elemenata niza koristi se standardna for-petlja
32
Nizovi nizova float[][] temperatura = new float[10][365];
Ovo je dvodimenzioni niz: postoji 10 jednodimenzionih nizova i svaki od njih ima 365 elemenata Primer obrade: for(int i=0; i<temperatura.length; i++) for(int j=0; j<temperatura[i].length; j++) temperatura[i][j]=(float)(45.0*Math.random()-10.0);
33
Nizovi nizova različitih dužina
Nizovi u nizu ne moraju biti iste dužine: float[][] uzorci; // deklarise niz nizova uzorci = new float[6][]; // definise 6 elemenata, svaki je niz // promenljiva uzorci sada referencira niz sa 6 // elemenata, od kojih svaki moze primiti // referencu na jednodimenzioni niz uzorci[2] = new float[3]; uzorci[5] = new float[101]; // uzorci.length ima vrednost 6 // uzorci[5].length ima vrednost 101
34
String-ovi U Javi, stringovi su objekti klase String, koja se nalazi u paketu java.lang String literal je niz karaktera pod dvostrukim navodnicima ”Ovo je String literal” - konstantan objekat klase String String-ovi se interno čuvaju kao Unicode karakteri
35
Kreiranje String objekata
String promenljiva je promenljiva koja čuva referencu na objekat klase String String promenljiva se deklariše na isti način kao i promenljive primitivnih tipova. Takođe, može se inicijalizovati pri deklarisanju, što je generalno dobra ideja. String mojString = ”Moj string”; mojString = ”Drugi string”; Sam String objekat je različit od promenljive koju koristimo da na njega referišemo
36
String String objekti su nepromenljivi. To znači da se ne može menjati string koga taj objekat predstavlja. String string; // deklaracija, bez inicijalizacije Ukoliko program pokuša da koristi promenljivu koja nije inicijalizovana, dobićemo grešku pri kompajliranju String string = null; // String promenljiva koja // ne referise na string
37
Nizovi String-ova String[] imena=new String[5];
String[] boje={”crvena”,”zuta”,”plava”};
38
Operacije nad String-ovima
Konkatenacija ( operator + ) kao rezultat se generiše potpuno nov String objekat, različit od String objekata koji su operandi Operator + se takođe koristi i za sabiranje, ali ako je bar jedan od operanada String objekat ili String literal, kompajler će interpretirati operaciju kao konkatenaciju stringova i konvertovaće objekat koji nije String objekat u String
39
Stringovi – operacije Ako npr. String promenljiva koja se koristi kao 1 od operanada za + sadrži null , ona se automatski konvertuje u string ”null” Može se koristiti i operator += // kombinovanje stringa i integer-a mojString = ”pedeset pet je ” ; System.out.println(mojString); // pedeset pet je 55
40
String-ovi // kombinovanje integer-a i stringa
mojString = ” je deset”; System.out.println(mojString); // 10 je deset ZAŠTO? Asocijativnost + je sleva nadesno i to je razlog što je u prvom primeru, a 10 u drugom
41
toString() Konverzija primitivnih tipova u tip String zapravo se vrši korišćenjem statičkog metoda toString() standardne klase koja odgovara tom primitivnom tipu Svaki od primitivnih tipova ima definisanu ekvivalentnu, tzv. wrapper, klasu: byte – Byte, short – Short, int – Integer, long – Long, float – Float, double – Double, boolean – Boolean, char – Character
42
toString() Kadgod se vrednost nekog od primitivnih tipova pojavi kao operand za +, a drugi operand je String objekat, kompajler prosleđuje vrednost primitivnog tipa metodu toString() definisanom u odgovarajućoj wrapper klasi. Metod toString() vraća String ekvivalentan vrednosti. Sve se to dešava automatski pri konkatenaciji stringova operatorom +.
43
valueOf() Metod klase String
Kreira String objekat od vrednosti proizvoljnog primitivnog tipa String doubleString = String.valueOf( ); valueOf() je statički metod klase String Zato se poziva sa String.valueOf() Kao argument može primiti literal ili promenljivu proizvoljnog primitivnog tipa
44
Poređenje stringova String promenljiva i string koji ona referiše se razlikuju Izraz string1 == string2 ne poredi same stringove, već reference na stringove Za takvo poređenje, može se koristiti metod equals(), koji je definisan za objekte tipa String Npr. string1.equals(string2) equals() vrši case-sensitive poređenje Postoji i equalsIgnoreCase() metod
45
Stringovi, operacije Metodima startsWith() / endsWith() koji kao argument primaju String, možemo izvršiti case-sensitive proveru da li string počinje / završava se stringom koji je dat kao argument metoda. String string1 = ”Ovo je string”; string1.startsWith(”Ovo”) // true string1.endsWith(”string”) // true
46
compareTo(String) Analogon strcmp() iz C-a
Poredi objekat String za koji je pozvan, sa String argumentom koji mu prosleđujemo i vraća int koji je negativan, ako je String objekat manji od argumenta, 0 ako su jednaki, a pozitivan inače. Zapravo, vrši se poređenje Unicode reprezentacija odgovarajućih karaktera stringova
47
String-ovi, operacije charAt() - prima int argument, indeks traženog karaktera. Ukoliko pokušamo da koristimo indeks manji od 0 ili veći od indeksa poslednjeg karaktera stringa, biće izbačen izuzetak tipa StringIndexOutOfBoundsException Za određivanje dužine stringa poziva se metod length() nad String objektom. Primetimo da se kod nizova pristupa atributu length.
48
Konvertovanje toLowerCase(), toUpperCase()
konvertuju String u mala, odnosno velika slova i vraćaju referencu na konvertovani String text = text.toLowerCase();
49
Pretraga Stringova indexOf(), lastIndexOf() metodi
Postoji nekoliko verzija ovih metoda koje omogućuju traženje pojedinačnog karaktera ili podstringa koji se zadaje kao (prvi) argument indexOf() traži od početka stringa, unapred, dok lastIndexOf() traži unatrag, počev od kraja stringa Vraćaju odgovarajući indeks, ako je traženje uspelo, a -1 inače
50
Pretraga Stringa Postoji varijacija prethodna 2 metoda koja ima i drugi argument. Njime se određuje pozicija od koje treba početi pretraživanje Ako se kao drugi argument prosledi negativna vrednost, metod indexOf() pretražuje ceo string, od početka Važno je proveriti da li je vraćena vrednost indeksa -1 pre njegovog korišćenja za indeksiranje Stringa!
51
Pretraga Stringa – rezime
indexOf(int ch) indexOf(int ch, int index) indexOf(String str) indexOf(String str, int index) I analogno za metod lastIndexOf() Metod startsWith() takođe ima verziju sa drugim argumentom, koji predstavlja poziciju od koje počinje potraga za datom sekvencom karaktera
52
Izdvajanje podstringova
Metod substring() izdvaja podstring iz stringa Postoje 2 verzije ovog metoda Prva izdvaja podstring koji se sastoji od svih karaktera počev od datog indeksa, pa do kraja stringa String place = ”Palm Springs”; lastWord = place.subString(5); // ”Springs” Druga omogućuje da izdvojimo podstring zadavanjem indeksa prvog karaktera podstringa i prvog karaktera iza poslednjeg karaktera podstringa String segment = place.substring(7,11); // ”ring” Ako indeks nije validan izbacuje se izuzetak
53
Metodi replace() i trim()
Metod replace() koristi se za zamenu određenog karaktera drugim kroz string. Prima dva argumenta: Prvi je karakter koji se menja Drugi je karakter kojim se menja Metod trim() služi za uklanjanje belina sa početka i kraja stringa
54
Kreiranje nizova karaktera od String objekata
Metod toCharArray() Kreira niz tipa char i vraća referencu na njega String text = ”To be or not to be” ; char[] textArray = text.toCharArray(); Moguće je izdvojiti i podstring kao niz karaktera metodom getChars(). Potrebno je kreirati dovoljno veliki niz u koji će se upisati rezultat i on se prosleđuje kao jedan od argumenata metoda. Metod zahteva 4 argumenta
55
Kreiranje String objekata od nizova karaktera
Statički metod copyValueOf() klase String Kreira String objekat od niza tipa char[] Char[] textArray = { 'T', 'o', ' ', 'b', 'e' }; String text = String.copyValueOf(textArray); String text = new String(textArray); // poziv konstruktora U Javi stringovi se ne završavaju sa '\0'!
56
CopyValueOf() - druga verzija
Druga verzija metoda copyValueOf() može kreirati podstring od podskupa elemenata niza. Ona zahteva 2 dodatna argumenta za određivanje indeksa prvog karaktera niza koji se izdvaja i broj karaktera koji se izdvaja String text = String.copyValueOf(textArray,9,3); Postoji i konstruktor klase String koji radi isto: String text = String(textArray,9,3);
57
Promenljivi stringovi – StringBuffer i StringBuilder
String objekti se ne mogu menjati Java ima još dve klase koje enkapsuliraju stringove: StringBuffer i StringBuilder Objekti obe ove klase mogu se direktno menjati Obe klase omogućuju iste operacije, ali StringBuffer objekti su bezbedni za korišćenje od strane većeg broja niti, a StringBuilder nisu Niti su nezavisni izvršni procesi unutar programa koji se mogu konkurentno izvršavati
58
String,StringBuffer,StringBuilder?
Ako smo sigurni da će našim promenljivim stringovima pristupati samo jedna nit, treba da koristimo StringBuilder objekte jer će operacije nad njima biti brže nego nad StringBuffer objektima StringBuffer i StringBuilder objekte treba koristiti kada se stringovi često transformišu – dopisuju, brišu ili menjaju podstringovi stringa. Ako uglavnom imamo statičke stringove koje tu i tamo treba da nadovežemo, String objekti su najbolji izbor
59
Kreiranje StringBuffer objekata
StringBuffer aString = new StringBuffer(”string”); NE MOŽE = ”string”; String phrase = ”Inicijalizacioni string”; StringBuffer buffer = new StringBuffer(phrase); StringBuffer myString = null; myString = new StringBuffer(”neki string”); StringBuffer aString = myString; // sada myString i aString referišu na 1 isti StringBuffer // objekat
60
Kapacitet StringBuffer objekta
StringBuffer objekat sadrži blok memorije, tzv. bafer koji može, a ne mora, sadržati string, a ako ga sadrži, string ne mora zauzimati ceo bafer. Tako, dužina stringa u StringBuffer objektu može biti različita od dužine odgovarajućeg bafera Dužina bafera je tzv. kapacitet StringBuffer objekta Metod length() određuje dužinu stringa koji je sadržan u objektu
61
Kapacitet StringBuffer objekta
Kada kreiramo StringBuffer objekat od postojećeg stringa, kapacitet će biti dužina stringa + 16 I kapacitet i dužina su izraženi u Unicode karakterima ( =>bajta) Kapacitet StringBuffer objekta nije fiksiran. On se automatski menja da bi se prilagodio stringu proizvoljne dužine. Takođe, može se zadati inicijalno kapacitet pri kreiranju objekta.
62
Kapacitet StringBuffer objekta
StringBuffer newString = new StringBuffer(50); /* kreira objekat newString sa kapacitetom za smeštanje 50 karaktera. Bez vrednosti 50, default kapacitet bio bi 16 karaktera. Bafer je inicijalno prazan – nijednog stringa nema u njemu */ Metod capacity() vraća kapacitet objekta u datom trenutku (kao broj Unicode karaktera koje objekat trenutno može da smesti )
63
Kapacitet StringBuffer objekta
Metod ensureCapacity() omogućuje da promenimo default kapacitet objekta. Minimalni kapacitet koji nam je potreban zadajemo kao argument metoda aString.ensureCapacity(40); /* ako je trenutni kapacitet objekta aString manji od 40, alociraće se novi, veći bafer, ali ne nužno kapaciteta 40. Kapacitet će biti veći od: argumenta metoda u ovom slučaju 40 i (2 puta trenutni kapacitet + 2)
64
Promena dužine StringBuffer objekta
Metod setLength() Kada uvećamo dužinu objekta, dopisuju se '\u0000' karakteri na postojeći string Uobičajenije je smanjenje dužine, u kom slučaju se vrši odsecanje stringa. Karakteri koji se odseku sa kraja stringa ovom operacijom bivaju izgubljeni. Ako se ponovo poveća dužina na prethodnu, novi karakteri biće '\u0000'
65
Promena dužine StringBuffer objekta
Dužina je svojstvo stringa kojeg objekat sadrži, dok je kapacitet svojstvo bafera Metod setLength() ne utiče na kapacitet objekta osim ako se dužina postavi na veću od kapaciteta. U tom slučaju, kapacitet će se povećati tako da se prilagodi novoj dužini stringa Ako se zada negativna dužina, biće izbačen izuzetak tipa StringIndexOutOfBoundsException
66
Dopisivanje na StringBuffer objekat
Metod append() omogućuje dodavanje stringa na kraj postojećeg stringa smeštenog u StringBuffer objektu StringBuffer aString = new StringBuffer(”prvi”); aString.append(” drugi”); // ”prvi drugi” Dužina stringa se uvećava za dužinu stringa koji smo dodali StringBuffer bString = aString.append(” drugi”); // sada u aString i bString pokazuju na isti objekat
67
Dopisivanje na StringBuffer objekat
Operator '.' koji koristimo za izvršavanje određenog metoda na objektu, asocijativan je sleva nadesno U jednoj naredbi moguće je pisati više operacija append StringBuffer string = new StringBuffer(); string.append(”Prvi”).append(” drugi”);
68
Dopisivanje podstringa
Druga verzija metoda append() dodaje deo String objekta StringBuffer objektu. Još 2 argumenta: indeks prvog karaktera String objekta koji će se nadovezati ukupan broj karaktera koji će biti nadovezani StringBuffer buf = new StringBuffer(”Hard ”); String aString = ”Waxworks”; buf.append(aString,3,4); // ”Hard work”
69
Nadovezivanje primitivnih tipova
Verzije append() metoda koje omogućuju nadovezivanje String ekvivalenata vrednosti svakog od primitivnih tipova na StringBuffer objekat Argument može biti tipa: boolean, char, byte, short, int, long, float, double Postoji i verzija koja kao argument prima niz tipa char. Sadržaj niza se nadovezuje na StringBuffer objekat kao string
70
Nadovezivanje Još jedna verzija omogućuje nadovezivanje podskupa elemenata niza tipa char 2 dodatna argumenta: Indeks prvog elementa koji se nadovezuje Ukupan broj elemenata koji se nadovezuju
71
Traženje pozicije podstringa
Metod lastIndexOf() 2 verzije: 1 argument – string koji tražimo, a metod vraća indeks poslednje pojave stringa ili -1 ako string nije pronađen ( indeksiranje kreće od 0 ) Još jedan argument – indeks u baferu odakle treba da počne pretraživanje
72
Zamena podstringa u baferu
Metod replace() Menja uzastopni niz karaktera datim stringom String kojim zamenjujemo može sadržati više karaktera od stringa koji se menja 3 argumenta: Prva 2 tipa int: početni indeks u baferu i 1 iza kraja podstringa koji treba zameniti Treći: tipa String i to je string koji treba ubaciti
73
Primer StringBuffer phrase = new StringBuffer(”one two three four”);
String substring = ”two”; String replacement = ”twenty”; int position = phrase.lastIndexOf(substring); phrase.replace(position, position+substring.length(), replacement); // za dobijanje vrednosti indeksa karaktera koji je neposredno iza // poslednjeg karaktera podstringa, samo dodamo dužinu podstringa // na indeks njegovog početka
74
Umetanje String-ova Metod insert()
Prvi argument određuje indeks u objektu gde treba umetnuti prvi karakter Mnoge verzije insert() metoda prihvataju drugi argument nekog od tipova koje prihvata i metod append() U svakom slučaju, string ekvivalentan drugom argumentu umeće se počev od indeksa datog prvim argumentom
75
charAt() i getChars() rade na isti način kao istoimeni metodi klase String setCharAt() - ovim metodom može se promeniti pojedinačni karakter StringBuffer objekta 2 argumenta: indeks karaktera koji se menja i kojim karakterom se menja deleteCharAt() - brisanje pojedinačnog karaktera objekta sa pozicije date argumentom delete() - brisanje nekoliko karaktera ( indeks prvog karaktera koji se briše, indeks karaktera neposredno iza poslednjeg koji se briše )
76
reverse() i toString()
reverse() - obrće sekvencu karaktera u StringBuffer objektu toString() - kreira novi String objekat i inicijalizuje ga stringom sadržanim u StringBuffer objektu Kompajler intenzivno koristi toString() i append() metode da bi implementirao konkatenaciju String objekata
77
Primer String saying = ”Many” + ” hands” + ” make” ;
kompajler to implementira ovako: String saying = new StringBuffer().append(”Many”).append(” hands”).append(” make”).toString();
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.