Section 7.12 Chapter Summary
Subsection 7.12.1 Technical Terms
| baseline | concatenation | copy cosntructor |
| data structure | delimited string | delimiter |
| empty string | garbage collection | glyph |
| lexicographic order | logical font | off-by-one error |
| orphan object | physical font | read only |
| string | string index | string literal |
| token | unit indexed | zero indexed |
Subsection 7.12.2 Important Points}
-
A
Stringliteral is a sequence of 0 or more characters enclosed within double quotation marks. AStringobject is a sequence of 0 or more characters, plus a variety of class and instance methods and variables. -
A
Stringobject is created automatically by Java the first time it encounters a literal string, such as βSocrates,β in a program. Subsequent occurrences of the literal do not cause additional objects to be instantiated. Instead, every occurrence of the literal βSocratesβ refers to the initial object. -
A
Stringobject is created whenever thenewoperator is used in conjunction with aString()constructorβfor example,new String("hello"). -
The
Stringconcatenation operator is the overloaded \(+\) symbol; it is used to combine twoStrings into a singleString: βhelloβ + βworldβ==>βhelloworldβ. Strings are indexed starting at 0. TheindexOf()andlastIndexOf()methods are used for finding the first or last occurrence of a character or substring within aString. ThevalueOf()methods convert a nonstring into aString. Thelength()method determines the number of characters in aString. ThecharAt()method returns the single character at a particular index position. The varioussubstring()methods return the substring at particular index positions in aString. -
The overloaded
equals()method returnstrueif twoStrings contain the same exact sequence of characters. The==operator, when used onStrings, returns true if two references designate the sameStringobject. String objects are immutable. They cannot be modified. -
A
StringBufferis a string object that can be modified using methods such asinsert()andappend(). -
A
StringTokenizeris an object that can be used to break aStringinto a collection of tokens separated by delimiters. The whitespace charactersβtabs, blanks, and newlinesβare the default delimiters. -
The
FontMetricsclass is used to obtain the specific dimensions of the the variousFonts. It is useful when you wish to center text.Fonts are inherently platform dependent. For maximum portability, it is best to use default fonts.
Solutions 7.12.3 Solutions to Self-Study Exercises
7.2 String Basics
7.2.1 Constructing Strings
Self-Study Exercises
7.2.1.2. What is printed?
7.2.1.3. Creating an empty string.
7.2.1.4. String objects.
7.2.2 Concatenating Strings
Self-Study Exercises
7.2.2.1. What is printed?
7.2.2.2. Evaluate expressions.
7.2.4 Converting Data to Strings
Self-Study Exercises
7.2.4.1. String.valueOf().
7.3 Finding Things Within a String
7.3.1 indexOf()
Self-Study Exercises
7.3.1.1. String indexOf() expressions.
7.3.1.2. String indexOf() expressions.
7.3.1.3. String indexOf() expressions.
7.3.1.4. String indexOf() expressions.
7.3.1.5. Tricky indexOf() expression.
7.4 Example: Keyword Search
7.4.2 Testing and Debugging
Self-Study Exercise
7.4.2.1. Keyword search.
Solution.
public static void main(String args[]) {
KeywordSearch searcher = new KeywordSearch();
String result = searcher.keywordSearch("this is a test","is");
System.out.println(result);
result = searcher.keywordSearch("able was i ere i saw elba","a");
System.out.println(result);
result = searcher.keywordSearch("this is a test","taste");
System.out.println(result);
}
7.5 From the Java Library: java.lang.StringBuffer
Self-Study Exercise
7.5.1. Revised Keyword Search.
Solution.
public static void main(String args[]) {
KeywordSearch searcher = new KeywordSearch();
String result = searcher.keywordSearch("this is a test","is");
System.out.println(result);
result = searcher.keywordSearch("able was i ere i saw elba","a");
System.out.println(result);
result = searcher.keywordSearch("this is a test","taste");
System.out.println(result);
}
7.6 Retrieving Parts of Strings
7.6.1 charAt() and subString() methods
Self-Study Exercises
7.6.1.1. Substring expressions.
7.6.1.2. Substring expressions 2.
7.8 Processing Each Character in a String
7.8.5 Example: Capitalizing the First Letter
Self-Study Exercises
7.8.5.1. String processor.
Solution.
public static String removeBlanks(String s) {
StringBuffer sb = new StringBuffer();
for (int k = 0; k < s.length(); k++) {
if (s.charAt(k) != ' ') {
sb.append(s.charAt(k));
}
}
return sb.toString();
}
7.9 Comparing Strings
7.9.1 Lexicographic Order
Self-Study Exercises
7.9.1.1. Lexicographic Order.
7.9.1.2. StringFollows.
Solution.
public class StringFollows {
public static boolean follows(String s1, String s2) {
int minlen = Math.min(s1.length(), s2.length()); // Pick shorter length
for (int k=0; k < minlen; k++) { // For each ch in shorter string
if (s1.charAt(k) != s2.charAt(k)) // If chars unequal
return s1.charAt(k) > s2.charAt(k); // return true if s1's ch > s2's
}
// If all characters so far are equal
// then s1 > s2 if it is longer than s2
return s1.length() > s2.length();
}
public static void main(String args[]) {
// Add code to test your methods here
System.out.println (follows("a", "ab") );
System.out.println (follows("ab", "a") );
System.out.println (follows("ab", "ab") );
} // main()
} // StringFollows
7.9.3 String Identity Versus String Equality
Self-Study Exercises
7.9.3.1. String equality vs identity.
7.9.3.2. String equality vs identity Part 2.
7.9.3.3. String Play.
Solution.
public static void main(String args[]) {
String s1 = "abcdefghijklmnopqrstuvwxyz";
String s2 = "hello world";
// Combine parts of s1 and s2 to create a new string "hello abc".
System.out.println(s2.substring(0,6)+s1.substring(0,3));
// Swap "world" and "hello" in s2 to give "world hello".
System.out.println(s2.substring(6) + " " + s2.substring(0,5));
// Swap the front and back halves of s1 to give:
// nopqrstuvwxyzabcdefghijklm
System.out.println(s1.substring(s1.indexOf('n')) +
s1.substring(0,s1.indexOf('n')));
} // main()
You have attempted of activities on this page.

