1 / 19

Föreläsning 10

Föreläsning 10. Stränghantering. java.lang. String. String. En sträng har:. value : char[] - count : int. Ett värde och en längd. + length(): int + charAt(int): char + indexOf(char): int …. Ett antal metoder. En sträng består av ett antal tecken

fedora
Download Presentation

Föreläsning 10

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Föreläsning 10 Stränghantering

  2. java.lang.String String En sträng har: • value : char[]- count : int Ett värde och en längd + length(): int+ charAt(int): char+ indexOf(char): int … Ett antal metoder • En sträng består av ett antal tecken • Strängar i Java hanteras som objekt av klassen String • En sträng kan inte modifieras efter att den har skapats!

  3. java.lang.String • Krävs ingen hantering av en strängs storlek eller avslutande null-tecken • Liknar till en viss del primitiva typer • Kan vara en konstant • Kan tilldelas en strängkonstant "Programmering i Java" // en strängkonstantString s = "Programmering i Java"; • En strängvariabel är en referens till ett sträng-objekt

  4. Skapa Strängar s1 s2 s1 : String s2 : String value = ""count = 0 value = "Java"count = 4 + length(): int+ charAt(int): char+ indexOf(char): int … + length(): int+ charAt(int): char+ indexOf(char): int … • Några användbara konstruktorer: public String()public String(Stringen_annan_sträng)public String(StringBufferen_stringbuffer) String s1 = new String();String s2 = new String("Java");

  5. Strängkonstanter "strängar" : String "strängar" value = "strängar"count = 8 + length(): int+ charAt(int): char+ indexOf(char): int … • "tecken omslutna av dubbel-fnuttar" • En konstant, t.ex "strängar" ses som en referens till ett String-objekt. • Alla förekomster av "strängar" i pro-grammet refererar till samma objekt

  6. Addera Strängar ("5 + 5 = " + "5" + "5") ("5 + 5 = " + "10") • Ytterligare ett sätt att skapa strängar är att addera två andra • + operatorn används för detta String efterNamn = "Karlsson";String namn = "Kalle " + efternamn;System.out.println(namn); // Kalle Karlsson • Primitiva typer konverteras om automatiskt vid strängaddition System.out.println("5 + 5 = " + 5 + 5); // 5 + 5 = 55System.out.println("5 + 5 = " + (5 + 5)); // 5 + 5 = 10

  7. Metoden length() 0 1 2 3 4 5 6 7 8 9 index J a v a k u r s e n tecken • Antalet tecken i en sträng är lika med strängens längd String s1 = ""; // s1.length()  0 String s2 = "Java"; // s2.length()  4 String s3 = "kursen"; // s3.length()  6String s4 = s2 + s3; // s4.length()  10 • Positionen av ett visst tecken i strängen kallas för dess index • Första tecknet har index 0

  8. Metoden charAt() 0 1 2 3 4 5 6 7 8 9 J a v a k u r s e n s1.charAt(0); s1.charAt(4); s1.charAt(s1.length() - 1); • charAt() används för att komma åt ett tecken på ett visst index public char charAt(int index) • Exempel: String s1 = "Javakursen";char ch = s1.charAt(4);System.out.println(ch); // Skriver ut k

  9. Metoden substring() 0 1 2 3 4 5 6 7 8 9 J a v a k u r s e n s1.substring(4, 7) • substring() används om man vill komma åt fler än ett tecken public String substring(int startindex)public String substring(int startindex, int slutindex) • Exempel: String s1 = "Javakursen";String s2 = s1.substring(7); // sen String s3 = s1.substring(4, 7); // kur

  10. Metoden indexOf() String s1 = ""; s1.indexOf('a') == -1 String s2 = "Java"; s2.indexOf('a') == 1 String s3 = "kursen"; s3.indexOf("va") == 1 String s4 = s2 + s3; s4.indexOf("va") == 2 s4.indexOf('a', 2) == 3 0 1 2 3 4 5 6 7 8 9 J a v a k u r s e n • Söker från vänster till höger efter ett tecken eller substring • Returnerar tecknets index eller –1 public int indexOf(char tecken)public int indexOf(char tecken, int startindex)public int indexOf(String string)public int indexOf(String string, int startindex)

  11. Metoden lastIndexOf() String s1 = ""; s1.lastIndexOf('a') == -1 String s2 = "Java"; s2.lastIndexOf("va") == 2 String s3 = " java!"; s3.lastIndexOf('a') == 4 String s4 = s2 + s3; s4.lastIndexOf("va") == 7 s4.lastIndexOf("va", 5) == 2 0 1 2 3 4 5 6 7 8 9 J a v a j a v a ! • lastIndexOf söker från höger till vänster efter tecken eller substring • Returnerar tecknets index eller –1 public int lastIndexOf(char tecken)public int lastIndexOf(char tecken, int startindex)public int lastIndexOf(String string)public int lastIndexOf(String string, int startindex)

  12. Jämföra strängar • Tre metoder för att jämföra strängar public boolean equals(Object anObject) // Överlagringpublic boolean equalsIgnoreCase(String anotherString)publicint compareTo(String anotherString) • Två strängar är lika om de inne-håller samma tecken i rätt ordning String s1 = "Java";String s2 = "java"; s1.equals(s2); // false s1.equalsIgnoreCase(s2); // trues1 == s2; // false (fel sätt)s1.compareTo("C++"); // returnerar 1s1.compareTo("Pascal"); // returnerar -1 • == kollar om det är samma referens

  13. Fler Metoder • Klassen String innehåller även dessa metoder (används inte lika ofta) boolean endsWith(String suffix)boolean startsWith(String prefix)String toUpperCase()String toLowerCase()String trim()String replace(char oldChar, char newChar) String s1 = "Javakursen";boolean end = s1.endsWith("sen"); // trueboolean start = s1.startsWith("Java"); // trues1 = s1.toUpperCase(); // "JAVAKURSEN"s1 = s1.toLowerCase(); // "javakursen"s1 = " Javakursen ".trim(); // "Javakursen" s1.replace('a', 'o'); // "Jovokursen"

  14. Effektivitet • Strängar i Java kan inte modifieras • När ett värde tilldelas en sträng skapas ett nytt objekt -tidskrävande String resultat = "";for (int i = 0; i < 10; i++) resultat = resultat + i; • Med System.currentTimeMillis() kan vi mäta tiden för en operation long start = System.currentTimeMillis();// operation som ska mätaslong end = System.currentTimeMillis();long tid = end – start; // antal ms det tog

  15. java.lang.StringBuffer • Är strängar som kan modifieras • Några konstruktorer: public StringBuffer()public StringBuffer(Stringen_existerande_sträng) • Några metoder: public StringBuffer append(Type t) // lägger till sistpublic StringBuffer insert(int offset, Type t) // sätter in vid offsetpublic StringBuffer delete(int start, int end) // tar bort tecknen mellanpublic StringBuffer reverse() // vänder - java  avajpublic String toString() // StringBuffer som String public char charAt(int index) // returnerar tecknet vid indexpublicint indexOf(String str) // index där str finns (vänsterhöger)publicint lastIndexOf(String str) // index där str finns (högervänster) publicint length() // antal tecken i aktuell StringBufferpublic String substring(int start) // en substräng från start till slutet

  16. java.util.StringTokenizer • Används för att dela upp en sträng i delar (tokens), t.ex ta fram orden ur en mening • Normalt delas strängen vid mellan-slag, tabb och radbyte • Man kan också ange vilka tecken strängen ska delas vid.

  17. StringTokenizer (forts) • str är strängen som ska delas upp • Delim anger vilka tecken str ska delas vid • Returnerar true om det finns några tokens kvar att plocka fram ur strängen • Returnerar nästa token • Räknar ut hur många tokens det finns kvar i strängen // Några konstruktorerpublic StringTokenizer(String str) // 1public StringTokenizer(String str, String delim) // 2// Några metoderpublicboolean hasMoreTokens() // 3publicString nextToken() // 4publicint countTokens() // 5

  18. StringTokenizer (forts) Dettaärenmeningslösmening. httpwww.itm.mh.se~roberiindex.html Tokens Tokens • Default-avgränsare är whitespace String s = "Detta är en meningslös mening.";StringTokenizer st = new StringTokenizer(s); String s = "http://www.itm.mh.se/~roberi/index.html";StringTokenizer st = new StringTokenizer(s, ":/"); • Kan ange egna avgränsare

  19. StringTokenizer (forts) • Exempel import java.util.StringTokenizer;publicclass RaknaOrd {publicstaticvoidmain(String[] args) { String mening = "Detta är en meningslös mening"; StringTokenizer st = new StringTokenizer(mening);int antalOrd = st.countTokens(); System.out.println("Antal ord: " + antalOrd); // Skriver ut ordenwhile (st.hasMoreTokens()) { System.out.println(st.nextToken()); } }}

More Related