chapter 7 strings use the string class to process fixed strings. use the stringbuffer class to...

25
Chapter 7 Strings Use the String class to process fixed strings. Use the StringBuffer class to process flexible strings. Use the StringTokenizer class to extract tokens from a string.

Upload: nigel-white

Post on 03-Jan-2016

248 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Chapter 7 Strings  Use the String class to process fixed strings.  Use the StringBuffer class to process flexible strings.  Use the StringTokenizer

Chapter 7 Strings

Use the String class to process fixed strings. Use the StringBuffer class to process

flexible strings. Use the StringTokenizer class to extract

tokens from a string.

Page 2: Chapter 7 Strings  Use the String class to process fixed strings.  Use the StringBuffer class to process flexible strings.  Use the StringTokenizer

The String Class Declaring a String String Length (length()) Substrings (substring(index), substring(start, end)) Retrieving Individual Characters in a string String Concatenation (concat) String Comparisons (equals, compareTo)

Page 3: Chapter 7 Strings  Use the String class to process fixed strings.  Use the StringBuffer class to process flexible strings.  Use the StringTokenizer

The String Class Declaring a String:String s = new String();

String message = "Welcome to Java!”; // OK

String message = new String("Welcome to Java!“);// ??

Page 4: Chapter 7 Strings  Use the String class to process fixed strings.  Use the StringBuffer class to process flexible strings.  Use the StringTokenizer

Strings are immutable Strings are immutable. The contents of a string cannot

be changed. One cannot delete, modify or inserts characters. But one can create a new string.

Therefore, you must use the equals method to test whether two strings have the same contents, and the == operator to test whether the two strings have the same references (that is, point to the same memory location).

Page 5: Chapter 7 Strings  Use the String class to process fixed strings.  Use the StringBuffer class to process flexible strings.  Use the StringTokenizer

Finding String Length

Finding string length using the length() method:

Example:

String message = "Welcome";

int len = message.length(); // (returns 7)

Page 6: Chapter 7 Strings  Use the String class to process fixed strings.  Use the StringBuffer class to process flexible strings.  Use the StringTokenizer

Retrieving Individual Characters in a String

Do not use message[0]!

Use:

char message.charAt(int index)

Index starts from 0

Example:

String message = "Welcome";

char c = message.charAt(1); // c is ‘e’

Page 7: Chapter 7 Strings  Use the String class to process fixed strings.  Use the StringBuffer class to process flexible strings.  Use the StringTokenizer

Substrings

String is an immutable class; its valuescannot be changed individually.

String s1 = "Welcome to Java";

String s2 = s1.substring(0,10) + "HTML";

Page 8: Chapter 7 Strings  Use the String class to process fixed strings.  Use the StringBuffer class to process flexible strings.  Use the StringTokenizer

String Concatenation

String s1=“Hello ”;

String s2=“World!”;

We can do concatenation in two ways:

1) String s3 = s1.concat(s2);

or

2) String s3 = s1 + s2;

Result: s3 is “Hello World!”

Page 9: Chapter 7 Strings  Use the String class to process fixed strings.  Use the StringBuffer class to process flexible strings.  Use the StringTokenizer

String Concatenation

Example 1:

String s1=“Result is ”;

int n = 4;

String s2 = s1 + n;

System.out.println(s2);

Output: Result is 4

Page 10: Chapter 7 Strings  Use the String class to process fixed strings.  Use the StringBuffer class to process flexible strings.  Use the StringTokenizer

String Concatenation

Example 2:

String s1=“Result is ”;

String s2 = s1 + 2 + 2;

String s3 = s1 + (2 + 2);

System.out.println(s2);

System.out.println(s3);

Output: ?

Page 11: Chapter 7 Strings  Use the String class to process fixed strings.  Use the StringBuffer class to process flexible strings.  Use the StringTokenizer

String ConcatenationExample 2:

String s1=“Result is ”;

String s2 = s1 + 2 + 2;

String s3 = s1 + (2 + 2);

System.out.println(s2);

System.out.println(s3);

Output:

Result is 22

Result is 4

Page 12: Chapter 7 Strings  Use the String class to process fixed strings.  Use the StringBuffer class to process flexible strings.  Use the StringTokenizer

String Comparisons equals

String s1 = "Welcome";String s2 = "welcome";

if (s1.equals(s2)) { // s1 and s2 have the same contents } if (s1 == s2)

{ // s1 and s2 have the same reference }

Page 13: Chapter 7 Strings  Use the String class to process fixed strings.  Use the StringBuffer class to process flexible strings.  Use the StringTokenizer

String Comparisons, cont. compareTo(Object object)

String s1 = "Welcome";String s2 = "welcome";

if (s1.compare(s2) > 0) { // s1 is greater than s2 } else if (s1.compare(s2 == 0) { // s1 and s2 have the same reference } else // s1 is less than s2

Page 14: Chapter 7 Strings  Use the String class to process fixed strings.  Use the StringBuffer class to process flexible strings.  Use the StringTokenizer

String Conversions The contents of a string cannot be changed once the string is created. But you can convert a string to a new string using the following methods:

String toLowerCase()

String toUpperCase()

String trim()

String replace(oldChar, newChar)

Page 15: Chapter 7 Strings  Use the String class to process fixed strings.  Use the StringBuffer class to process flexible strings.  Use the StringTokenizer

String ConversionsExample:

String s1 = “ WAY ”;

String s2 = s1.trim(); // “WAY”

String s3 = s2.toLowerCase(); // “way”

String s4 = s3.replace(‘w’,’d’); // ”day”

String s5 = s4.toUpperCase(); // “DAY”

Page 16: Chapter 7 Strings  Use the String class to process fixed strings.  Use the StringBuffer class to process flexible strings.  Use the StringTokenizer

Convert char and numbers to Strings

The String class provides several static valueOf() methods for converting a character, an array of characters, and numeric values to strings. These methods have the same name valueOf() with different argument types char, char[], double, long, int, and float. Example: , to convert a double value to a string, use

String.valueOf(5.44). The return value is string consists of characters ‘5’, ‘.’, ‘4’, and ‘4’.

Page 17: Chapter 7 Strings  Use the String class to process fixed strings.  Use the StringBuffer class to process flexible strings.  Use the StringTokenizer

Convert char and numbers to Strings

Example: int i = 3;

double d = 3.14;

char c = ‘e’;

char[] e = {‘y’,’e’,’s’};

String s1 = String.valueOf(i); // “3”

String s2 = String.valueOf(d); // “3.14”

String s3 = String.valueOf(c); // “e”

String s4 = String.valueOf(e); // “yes”

Page 18: Chapter 7 Strings  Use the String class to process fixed strings.  Use the StringBuffer class to process flexible strings.  Use the StringTokenizer

Are two Strings equal? boolean equals(String s2)

String s1 = "Welcome";String s2 = "welcome";

if (s1.equals(s2)) { // s1 and s2 have the same contents } if (s1 == s2) { // s1 and s2 have the same reference

Page 19: Chapter 7 Strings  Use the String class to process fixed strings.  Use the StringBuffer class to process flexible strings.  Use the StringTokenizer

String Comparisons, cont. int compareTo(String s2)

String s1 = "Welcome";String s2 = "welcome";

if (s1.compare(s2) > 0) { // s1 is greater than s2 } else if (s1.compare(s2 == 0) { // s1 and s2 have the same reference } else // s1 is less than s2

Page 20: Chapter 7 Strings  Use the String class to process fixed strings.  Use the StringBuffer class to process flexible strings.  Use the StringTokenizer

The StringBuffer Class The StringBuffer class is an alternative to the String class. In general, a string buffer can be used wherever a string is used.

StringBuffer is more flexible than String.

You can add, insert, or append new contents

into a string buffer.

Page 21: Chapter 7 Strings  Use the String class to process fixed strings.  Use the StringBuffer class to process flexible strings.  Use the StringTokenizer

StringBuffer Constructors public StringBuffer()

No characters, initial capacity 16 characters.

public StringBuffer(int length)No characters, initial capacity specified by the length argument.

public StringBuffer(String str)Represents the same sequence of charactersas the String argument. Initial capacity 16plus the length of the String argument.

Page 22: Chapter 7 Strings  Use the String class to process fixed strings.  Use the StringBuffer class to process flexible strings.  Use the StringTokenizer

Appending New Contentsinto a String Buffer

StringBuffer strBuf = new StringBuffer();strBuf.append("Welcome");strBuf.append(' ');strBuf.append("to");strBuf.append(' ');strBuf.append("Java");

“Welcome to Java”

Page 23: Chapter 7 Strings  Use the String class to process fixed strings.  Use the StringBuffer class to process flexible strings.  Use the StringTokenizer

The StringTokenizer Class Constructors

StringTokenizer(String s)

// default delimiters: \r\n\t and space StringTokenizer(String s, String delim, boolean returnTokens)

StringTokenizer(String s, String delim)

Page 24: Chapter 7 Strings  Use the String class to process fixed strings.  Use the StringBuffer class to process flexible strings.  Use the StringTokenizer

The StringTokenizer Class Methods

int countTokens() boolean hasMoreTokens()

String nextToken()

String nextToken(String delim)

Page 25: Chapter 7 Strings  Use the String class to process fixed strings.  Use the StringBuffer class to process flexible strings.  Use the StringTokenizer

Example 7.4import java.util.StringTokenizer;public class TestStringTokenizer { public static main(Strings[] args) { String s =“Java and Classes”; StringTokenizer st = new StringTokenizer(s); int n = st.countTokens(); // n is 3 while(st.hasMoreTokens()) { System.out.println(st.nextToken()); } }}

Java

and

Classes