Download String Handling

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts
no text concepts found
Transcript
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 ()