String (Java)/PuceljStanka

Iz MaFiRaWiki

< String (Java)(Preusmerjeno iz Nizi v Javi)
Ta članek ali del članka je v delu. Veseli bomo, če ga boste dopolnili in popravili.

Kaj pomeni to opozorilo?

Delo z Nizi v javi omogočata dva razreda.

  • razred String
  • razred StringBuffer

Vsebina

String

Razred String uporabljamo za delo s konstantnimi nizi. Niz zapišemo med dvojne narekovaje. Znaki v nizu pa se štejejo od 0 dalje.

 
String niz = "Nov niz.";

Nizi poznajo poseben operator, ki omogoča njihovo združevanje. Zapišemo ga z znakom +. Čeprav velja teoretično pravilo, da tega ne moremo izvesti, pa vendar, saj bo za to izjemo poskrbel sam prevajalnik. Prevajalnik bo niza samodejno prevedel v razred StringBuffer in ju združil s postopkom append. Podobno pravilo opazimo tudi pri zapisu števil.

 
String s = "java";
s = "Programski " + "jezik " + s;
System.out.println(s);

Konstruktorji

Nize lahko ustvarjamo z več konstruktorji. Kreiramo jih lahko iz konstantnega besedila, drugih nizov, razreda StringBuffer, ...
Najbolj pogosteje uporabljeni primeri pa so:

String niz1 = new String(); S tem konstruktorjem ustvarimo prazen niz.
String niz2 = "Drugi niz."; Niz izdelamo iz konstantnega besedila.
String niz3 = new String("Tretji niz."); Niz ustvarimo prek operatorja new.
char znaki[] = {'Č', 'e','t','r','t','i'};

String niz4 = new String(znaki);

Niz lahko izdelamo tudi iz polja znakov. Najprej najavimo polje znakov, nato pa vanj vstavimo vrednosti.
char znaki[] = {'Č', 'e','t','r','t','i'};
String niz5 = new String(znaki, 0,3);
Izdelamo niz, tako, da vanj dodamo le želene znake drugega niza, npr. vse od prvega do četrtega znaka.
StringBuffer buf = new StringBuffer("Šesti niz.");
String niz6 = newString(buf);
Nizu lahko priredimo vrednost, ki je določena z razredom StringBuffer.


Primer_1

Primer vsebuje omenjene konstruktorje.

  1.  
  2. class Primer_1 {
  3. public static void main(String args[]) {
  4. String niz1 = new String();
  5. String niz2 = "Drugi niz.";
  6. String niz3 = new String("Tretji niz.");
  7. char znaki[] = {'C', 'e','t','r','t','i'};
  8. String niz4 = new String(znaki);
  9. String niz5 = new String(znaki, 2, 4);
  10. StringBuffer buf = new StringBuffer("Sesti niz.");
  11. String niz6 = new String(buf);
  12. System.out.println(niz1);
  13. System.out.println(niz2);
  14. System.out.println(niz3);
  15. System.out.println(niz4);
  16. System.out.println(niz5);
  17. System.out.println(niz6);
  18. }
  19. }


Izpis:

 
> java Primer_1
 
Drugi niz.
Tretji niz.
Cetrti
trti
Sesti niz.
>

Osnovni postopki:

V razredu String opazimo večje število postopkov.
Nekaj jih bom opisala:

  • Postopek charAt() omogoča dostop do posameznih znakov v nizu. Indeks iskane črke določimo prek parametra postopka.
  • Ukaz indexOf vrne indeks prve črke ali skupine iskanih znakov v našem nizu.
  • Postopek lastIndexOf uporabimo v primeru, ko želimo poiskati položaj zadnje črke ali podniza v našem nizu. Če postopek iskanega niza ne najde ničesar, vrne vrednost -1.
  • S postopkom substring ustvarimo nov niz, ki je podniz našega niza. Podniz določimo prek dveh indeksov.


Primer_2

  1.  
  2. class Primer_2 {
  3. public static void main(String args[]) {
  4. String niz = "Zunaj sije sonce.";
  5. System.out.println("Niz: " + niz); // izpisemo niz
  6. System.out.println("prva crka: " + niz.charAt(0)); // izpisemo prvi znak niza
  7. System.out.println("indexOf (crka j): " + niz.indexOf("j")); // izpisemo mesto, kjer je prvic napisan znak j
  8. System.out.println("lastIndexOf (crka j): " + niz.lastIndexOf("j")); // izpisemo mesto, kjer je zadnjic napisan znak j
  9. System.out.println("Podniz: " + niz.substring(11,16)); // izpisemo podniz od 11-tega indeksa do (16-1) -tega indeksa
  10. }
  11. }

Izpis:

 
> java Primer_2
Niz: Zunaj sije sonce.
prva crka: Z
indexOf (crka j): 4
lastIndexOf (crka j): 8
Podniz: sonce
>

Primerjanje nizov

  • S postopkom compareTo() primerjamo dva niza po abecednem položaju. Vrnjena vrednost -1 nakaže, da je primerjani niz na nižjem položaju, 0 sporoča enakost, vrednost, ki je večja od 0 pa pomeni, da je niz na višjem položaju, torej 'na začetku slovarja'.
  • S postopkom equals() primerjamo dva objekta niza. Ukaz vrne vrednost true, če sta niza enaka.
  • Ukaz equalsIgnoreCase() omogoča primerjavo dveh nizov ne glede na velike ali male črke.


Primer_3

  1.  
  2. class Primer_3 {
  3. public static void main(String args[]) {
  4. String niz1 = "Zunaj sije sonce.";
  5. String niz2 = "Zunaj sije sonce in ne bo dezevalo.";
  6. String niz3 = "Zunaj sije sonce In ne bo dezevalo.";
  7. System.out.println("Niz1: " + niz1); // izpisemo niz1
  8. System.out.println("Niz2: " + niz2); // izpisemo niz2
  9. System.out.println("Niz3: " + niz3); // izpisemo niz3
  10. System.out.println("compareTo: " + niz1.compareTo(niz2)); // primerjamo niza, ali sta enaka in izpisemo
  11. System.out.println("equals: " + niz1.equals(niz2)); // izpisemo ali sta niz1 in niz2 enaka
  12. System.out.println("equalsIgnoreCase: " + niz2.equalsIgnoreCase(niz3)); // izpisemo ali sta niza enaka, velikost crk ni pomembna
  13. }
  14. }

Izpis:

 
> java Primer_3
Niz1: Zunaj sije sonce.
Niz2: Zunaj sije sonce in ne bo dezevalo.
Niz3: Zunaj sije sonce In ne bo dezevalo.
compareTo: 14
equals: false
equalsIgnoreCase: true
>

Spreminjanje niza

  • Z ukazom toLowerCase() pretvorimo vse velike črke v male.
  • S postopkom toUpperCase() pretvorimo vse male črke v velike.
  • Postopek toString() vrne vsebino lastnega niza.


Primer_4

  1.  
  2. class Primer_4 {
  3. public static void main(String args[]) {
  4. String niz1 = "Zunaj sije sonce.";
  5. System.out.println("Niz1: " + niz1); // izpisemo niz1
  6. System.out.println("toLowerCase: " + niz1.toLowerCase()); // pretvorimo vse velike crke v male in izpisemo
  7. System.out.println("toString: " + niz1.toString()); // izpisemo lasten niz1
  8. System.out.println("toUpperCase: " + niz1.toUpperCase()); // pretvorimo vse male crke v velike in izpisemo
  9. }
  10. }

Izpis:

 
> java Primer_4
Niz1: Zunaj sije sonce.
toLowerCase: zunaj sije sonce.
toString: Zunaj sije sonce.
toUpperCase: ZUNAJ SIJE SONCE.
>

Lastnosti niza

  • Postopke length() uporabljamo za ugotavljanje dolžine oz. število znakov v nizu.
  • Postopek valueOf() je zelo uporaben, saj nam prek različnih povoženih postopkov omogoči spreminjanje Booleanovih vrednosti, naravnih in realnih števil v nize.
  • Nize,ki so sestavljeni iz samih cifer (decimalne pike, predznaka), lahko pretvorimo v števila.
    • pretvorbo niza v celo število omogoča metoda parseInt() iz razreda Integer.
    • pretvorbo niza v realno število omogoča metoda parseDouble() iz razreda Double.


Primer_5

  1.  
  2. class Primer_5 {
  3. public static void main(String args[]) {
  4. String niz1 = "Zunaj sije sonce.";
  5. boolean vreme = true;
  6. int stevilo = 12345;
  7. System.out.println("Niz1: " + niz1); // izpisemo niz1
  8. String niz2 = "123";
  9. int celoStevilo = Integer.parseInt(niz2);
  10. System.out.println("Niz2: " + niz2);
  11. System.out.println("length: " + niz1.length());
  12. System.out.println("valueOf: " + niz1.valueOf(vreme));
  13. System.out.println("valueOf: " + niz1.valueOf(stevilo));
  14. }
  15. }

Izpis:

 
> java Primer_5
Niz1: Zunaj sije sonce.
Niz2: 123
length: 17
valueOf: true
valueOf: 12345
>

StringBuffer

Razred StrinBuffer se razlikuje od razreda String po tem, da lahko spreminjamo vrednosti niza, njegovo dolžino ipd.

Konstruktorji

V razredu StringBuffer lahko uporabimo tri konstruktorje:

StringBuffer(); S tem konstruktorjem ustvarimo prazen niz.
StringBuffer(int dolzina); S tem konstruktorjem ustvarimo niz določene dolžine.
StringBuffer(String niz); S tem konstruktorjem ustvarimo niz, ki mu določimo začetno besedilo.


Postopki

Na voljo imamo večje število postopkov. Najpomembnejši so:

  • S postopkom append()dodamo osnovnemu nizu novo vrednost. Ta je lahko niz, število, logična vrednost itn.
  • Ukaz capacity() vrne največje stevilo znakov, ki jih lahko vstavimo v nizov medpomnilnik. Ta je seveda večja od dolžina niza (length).
  • Postopek charAt() omogoča dostop do posameznih znakov v nizu. Indeks iskane črke določimo prek parametra postopka.
  • Postopek insert lahko izkoristimo za vstavljanje niza in vrednosti drugih podatkovnih tipov na poljubno mesto našega niza.
  • Dolžino oz. število znakov v nizu preverimo u ukazom length().
  • Postopek setCharAt() omogoča spremembo indeksiranega znaka v nizu.
  • S postopkom setLength() spremenimo dolžino niza.
  • ...


Primer_6

  1.  
  2. class Primer_6 {
  3. public static void main(String args[]) {
  4. StringBuffer niz1 = new StringBuffer("Zunaj sije sonce!");
  5. StringBuffer niz2 = new StringBuffer("Gremo na morje!");
  6. char znaki[] = new char[10];
  7. System.out.println("niz1: " + niz1);
  8. System.out.println("niz2: " + niz2);
  9. System.out.println("length: " + niz1.length()); // izpisemo stevilo znakov, ki jih vsebuje niz1
  10. System.out.println("capacity: " + niz1.capacity());
  11. niz1.append(niz2); // nizu niz1 dodamo se niz niz2
  12. System.out.println("append: " + niz1);
  13. System.out.println("length: " + niz1.length());
  14. System.out.println("capacity: " + niz1.capacity());
  15. System.out.println("insert: " + niz1.insert(0, "Ja, ")); // na prvo mesto v nizu (z indeksom nic) vstavimo "Ja"
  16. niz1.setCharAt(0, 'D'); // prvi znak v nizu zamenjamo z "D"
  17. System.out.println("setCharAt: " + niz1);
  18. niz1.setLength(14);
  19. System.out.println("setLength: " + niz1); // izpisemo prvih 14 znakov v nizu
  20. }
  21. }

Izpis:

 
> java Primer
niz1: Zunaj sije sonce!
niz2: Gremo na morje!
length: 17
capacity: 33
append: Zunaj sije sonce!Gremo na morje!
length: 32
capacity: 33
insert: Ja, Zunaj sije sonce!Gremo na morje!
setCharAt: Da, Zunaj sije sonce!Gremo na morje!
setLength: Da, Zunaj sije
>
Osebna orodja