Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
BPJ444: Business Programming Using Java – String Handling Tim McKenna Seneca@York The String Class Strings are "immutable" objects: once instantiated, a String object is constant and not changeable. because String objects are immutable, they can be shared fearlessly: no one can change your object. Java optimizes memory by maintaining a pool of shared Strings: the constants "A", "A", "A" will have three references to the same String object. Note: an empty string object is not null literal: "" is a String object with a length() of 0 Example: StringDemo.java Strings are special in Java Strings are used so often in programming, Java makes special allowances for coding them construct a String without new String() String s1 = new String("some text"); String s2 = "more text"; the only overloaded operators in Java are for Strings s1 += s2; // s1 = s1.concat(s2); s1 = s2 + "etc"; // s1 = s2.concat("etc"); anything can be a String, just ask static method String.valueOf() returns a String can take almost anything as a parameter: all primitives, char array, any object. all objects inherit or override the Object class toString() method System.out.println() automatically calls toString() on any object in the parameter list System.out.println(myObject); // is same as System.out.println(myObject.toString() ); The String Class comparison of two String objects: thisString.equals(thatString) this is what most of us mean most of the time thisString compares contents == thatString compares obj.ref. this may seem like it works but is unreliable when is thisString really thatString an array of characters vs a String object Example: StringDemo2.java String Class Methods length() returns int of character count trim() returns String exclusive of lead/trail blanks toUpperCase(), to LowerCase() returns consistent case valueOf() returns String of any primitive indexOf() returns int locating a char or substring charAt() allows processing of string like char[] substring() returns a substring from this string replace() changes characters replaceAll() changes strings with regular expressions split() splits a string into an array of strings using reg.exp. Examples: StringDemo3.java, StringDemoGUI.java The StringBuffer/Builder Class mutable string objects much better performance for building up a String useful methods for string manipulation append() – add a string or char insert() setCharAt() – change a string setLength() – truncates or pads Example: StringDemo4.java StringTokenizer Class parsing: extract words (i.e. tokens) from a string StringTokenizer st; st = new StringTokenizer("this is a test"); // default delimiter is whitespace while (st.hasMoreTokens()) { System.out.println( st.nextToken()); } this is a test StringTokenizer alternatives API recommends using String.split("\\s+") split uses a regular expression to identify delimiters can be powerful but reg. exp. are tricky and require extensive, thorough, and exhaustive testing split takes 3-4 times longer than StringTokenizer Scanner class is a new alternative in J2SE 5.0 it takes 15-30+ times longer than StringTokenizer has other functions to parse primitives and BigDecimals Example: ParseString.java StringTokenizer and StringBuilder use these two classes to remove embedded blanks from a string. String s; StringTokenizer st; StringBuilder sb; s=" My Spacebar Is Sticky " st=new StringTokenizer(s); sb=new StringBuilder( s.length()); while ( st.hasMoreTokens() ) { sb.append( st.nextToken() );} s=sb.toString(); The Character Class some useful methods: isDigit () isLetter () isLetterOrDigit() isLowerCase () toLowerCase () isUpperCase () toUpperCase () isWhitespace ()