Java Strings Slides provided by the University of Washington Computer Science & Engineering department.
Strings string: an object storing a sequence of text characters. Creating a string: String name = "text"; String name = expression; Examples: String name = "Marty Stepp"; int x = 3; int y = 5; String point = "(" + x + ", " + y + ")";
String indexes Characters of a string are numbered with 0-based indexes: String fruit = "Apple"; index 1 2 3 4 character A p l e First character’s index: 0 Last character’s index: 1 less than the string’s length
String methods Method name Description int length() number of characters in this string String substring(int from, int to) returns the substring beginning at from and ending at to-1 String substring(int from) returns substring(from, length()) int indexOf(String str) returns the index of the first occurrence of str; returns -1 if not found int compareTo(String other) returns a value < 0 if this is less than other returns a value = 0 if this is equal to other returns a value > 0 if this is greater than other
String methods These methods are called using the dot notation: String veggie = "carrot"; System.out.println(veggie.length()); // 6 More examples: // index 012345678901 String s1 = "Stuart Reges"; System.out.println(s1.length()); // 12 System.out.println(s1.indexOf("e")); // 8 System.out.println(s1.substring(7, 10)); // "Reg"
String methods Given the following string: String message = "Hello, world!"; How would you extract the word “world”?
The equals method Objects are compared using a method named equals. if (string1.equals(string2)) { System.out.println("The strings are equal!"); } Technically this is a method that returns a value of type boolean, the type used in logical tests.
String question PROBLEM: Write a static method numWords that takes a String as a parameter and that returns the number of words in the String. By definition, words are separated by one or more spaces. EXAMPLES: numWords("how many?") Returns 2 numWords(" how about a-b-c and !&%-$!*() ") Returns 5
numWords solution 1 Here’s one way to solve the problem: public static int numWords(String s) { int count = 0; boolean insideWord = false; for (int i = 0; i < s.length(); i++) { String current = s.substring(i, i + 1); if (current.equals(" ")) { insideWord = false; } else if (!insideWord) { count++; insideWord = true; } return count;
numWords solution 2 Here’s another way to solve the problem: public static int numWords(String s) { int count = 0; String prev = " "; for (int i = 0; i < s.length(); i++) { String current = s.substring(i, i + 1); if (prev.equals(" ") && !current.equals(" ")) { count++; } prev = current; return count;