• No results found

Chapter 10 – Strings and Characters

N/A
N/A
Protected

Academic year: 2021

Share "Chapter 10 – Strings and Characters"

Copied!
89
0
0

Loading.... (view fulltext now)

Full text

(1)

2002 Prentice Hall, Inc. All rights reserved.

Chapter 10 – Strings and Characters

Outline

10.1 Introduction

10.2 Fundamentals of Characters and Strings 10.3 String Constructors

10.4 String Methods length, charAt and getChars 10.5 Comparing Strings

10.6 String Method hashCode

10.7 Locating Characters and Substrings in Strings 10.8 Extracting Substrings from Strings

10.9 Concatenating Strings

10.10 Miscellaneous String Methods 10.11 Using String Method valueOf 10.12 String Method intern

10.13 StringBuffer Class

10.14 StringBuffer Constructors

10.15 StringBuffer Methods length, capacity, setLength and ensureCapacity

(2)

Chapter 10 – Strings and Characters

10.16 StringBuffer Methods charAt, setCharAt, getChars and reverse

10.17 StringBuffer append Methods

10.18 StringBuffer Insertion and Deletion Methods 10.19 Character Class Examples

10.20 Class StringTokenizer

10.21 Card Shuffling and Dealing Simulation

10.22 (Optional Case Study) Thinking About Objects:

Event Handling

(3)

2002 Prentice Hall, Inc. All rights reserved.

10.1 Introduction

• String and character processing

– Class java.lang.String

– Class java.lang.StringBuffer – Class java.lang.Character

– Class java.util.StringTokenizer

(4)

10.2 Fundamentals of Characters and Strings

• Characters

– “Building blocks” of Java source programs

• String

– Series of characters treated as single unit – May include letters, digits, etc.

– Object of class String

(5)

2002 Prentice Hall, Inc. All rights reserved.

10.3 String Constructors

• Class String

– Provides nine constructors

(6)

Outline

StringConstructo rs.java

Line 25 Line 26 Line 27 Line 28 Line 29 Line 30 Line 31

1 // Fig. 10.1: StringConstructors.java

2 // This program demonstrates the String class constructors.

3

4 // Java extension packages 5 import javax.swing.*;

6

7 public class StringConstructors { 8

9 // test String constructors

10 public static void main( String args[] ) 11 {

12 char charArray[] = { 'b', 'i', 'r', 't', 'h', ' ', 13 'd', 'a', 'y' };

14 byte byteArray[] = { ( byte ) 'n', ( byte ) 'e', 15 ( byte ) 'w', ( byte ) ' ', ( byte ) 'y', 16 ( byte ) 'e', ( byte ) 'a', ( byte ) 'r' };

17

18 StringBuffer buffer;

19 String s, s1, s2, s3, s4, s5, s6, s7, output;

20

21 s = new String( "hello" );

22 buffer = new StringBuffer( "Welcome to Java Programming!" );

23

24 // use String constructors 25 s1 = new String();

26 s2 = new String( s );

27 s3 = new String( charArray );

28 s4 = new String( charArray, 6, 3 );

29 s5 = new String( byteArray, 4, 4 );

30 s6 = new String( byteArray );

31 s7 = new String( buffer ); Constructor copies StringBuffer Constructor copies byte-array subset

Constructor copies byte array Constructor copies

character-array subset

Constructor copies character array Constructor copies String

String default constructor instantiates empty string

(7)

2002 Prentice Hall, Inc.

All rights reserved.

Outline

StringConstructo rs.java

33 // append Strings to output

34 output = "s1 = " + s1 + "\ns2 = " + s2 + "\ns3 = " + s3 + 35 "\ns4 = " + s4 + "\ns5 = " + s5 + "\ns6 = " + s6 + 36 "\ns7 = " + s7;

37

38 JOptionPane.showMessageDialog( null, output, 39 "Demonstrating String Class Constructors", 40 JOptionPane.INFORMATION_MESSAGE );

41

42 System.exit( 0 );

43 } 44

45 } // end class StringConstructors

(8)

10.4 String Methods length, charAt and getChars

• Method length

– Determine String length

• Like arrays, Strings always “know” their size

• Unlike array, Strings do not have length instance variable

• Method charAt

– Get character at specific location in String

• Method getChars

– Get entire set of characters in String

(9)

2002 Prentice Hall, Inc.

All rights reserved.

Outline

StringMiscellane ous.java

Line 28 Line 33

1 // Fig. 10.2: StringMiscellaneous.java

2 // This program demonstrates the length, charAt and getChars 3 // methods of the String class.

4 //

5 // Note: Method getChars requires a starting point

6 // and ending point in the String. The starting point is the 7 // actual subscript from which copying starts. The ending point 8 // is one past the subscript at which the copying ends.

9

10 // Java extension packages 11 import javax.swing.*;

12

13 public class StringMiscellaneous { 14

15 // test miscellaneous String methods 16 public static void main( String args[] ) 17 {

18 String s1, output;

19 char charArray[];

20

21 s1 = new String( "hello there" );

22 charArray = new char[ 5 ];

23

24 // output the string 25 output = "s1: " + s1;

26

27 // test length method

28 output += "\nLength of s1: " + s1.length();

29

30 // loop through characters in s1 and display reversed 31 output += "\nThe string reversed is: ";

32

33 for ( int count = s1.length() - 1; count >= 0; count-- ) 34 output += s1.charAt( count ) + " ";

35

Determine number of characters in String s1

Append s1’s characters in reverse order to

String output

(10)

Outline

StringMiscellane ous.java

Line 37

36 // copy characters from string into char array 37 s1.getChars( 0, 5, charArray, 0 );

38 output += "\nThe character array is: ";

39

40 for ( int count = 0; count < charArray.length; count++ ) 41 output += charArray[ count ];

42

43 JOptionPane.showMessageDialog( null, output, 44 "Demonstrating String Class Constructors", 45 JOptionPane.INFORMATION_MESSAGE );

46

47 System.exit( 0 );

48 } 49

50 } // end class StringMiscellaneous

Copy (some of) s1’s characters to charArray

(11)

2002 Prentice Hall, Inc. All rights reserved.

10.5 Comparing Strings

• Comparing String objects

– Method equals

– Method equalsIgnoreCase – Method compareTo

– Method regionMatches

(12)

Outline

StringCompare.ja va

Line 25 Line 31

1 // Fig. 10.3: StringCompare.java

2 // This program demonstrates the methods equals, 3 // equalsIgnoreCase, compareTo, and regionMatches 4 // of the String class.

5

6 // Java extension packages

7 import javax.swing.JOptionPane;

8

9 public class StringCompare { 10

11 // test String class comparison methods 12 public static void main( String args[] ) 13 {

14 String s1, s2, s3, s4, output;

15

16 s1 = new String( "hello" );

17 s2 = new String( "good bye" );

18 s3 = new String( "Happy Birthday" );

19 s4 = new String( "happy birthday" );

20

21 output = "s1 = " + s1 + "\ns2 = " + s2 + 22 "\ns3 = " + s3 + "\ns4 = " + s4 + "\n\n";

23

24 // test for equality

25 if ( s1.equals( "hello" ) )

26 output += "s1 equals \"hello\"\n";

27 else

28 output += "s1 does not equal \"hello\"\n";

29

30 // test for equality with ==

31 if ( s1 == "hello" )

Method equals tests two objects for equality using lexicographical comparison Equality operator (==) tests

if both references refer to same object in memory

(13)

2002 Prentice Hall, Inc.

All rights reserved.

Outline

StringCompare.ja va

Line 37 Lines 44-48 Line 52 and 59

36 // test for equality (ignore case) 37 if ( s3.equalsIgnoreCase( s4 ) ) 38 output += "s3 equals s4\n";

39 else

40 output += "s3 does not equal s4\n";

41

42 // test compareTo 43 output +=

44 "\ns1.compareTo( s2 ) is " + s1.compareTo( s2 ) + 45 "\ns2.compareTo( s1 ) is " + s2.compareTo( s1 ) + 46 "\ns1.compareTo( s1 ) is " + s1.compareTo( s1 ) + 47 "\ns3.compareTo( s4 ) is " + s3.compareTo( s4 ) + 48 "\ns4.compareTo( s3 ) is " + s4.compareTo( s3 ) + 49 "\n\n";

50

51 // test regionMatches (case sensitive) 52 if ( s3.regionMatches( 0, s4, 0, 5 ) )

53 output += "First 5 characters of s3 and s4 match\n";

54 else

55 output +=

56 "First 5 characters of s3 and s4 do not match\n";

57

58 // test regionMatches (ignore case)

59 if ( s3.regionMatches( true, 0, s4, 0, 5 ) )

60 output += "First 5 characters of s3 and s4 match";

61 else

62 output +=

63 "First 5 characters of s3 and s4 do not match";

64

Test two objects for equality, but ignore case

of letters in String

Method compareTo compares String objects

Method regionMatches compares portions of two String objects for equality

(14)

Outline

StringCompare.ja va

65 JOptionPane.showMessageDialog( null, output, 66 "Demonstrating String Class Constructors", 67 JOptionPane.INFORMATION_MESSAGE );

68

69 System.exit( 0 );

70 } 71

72 } // end class StringCompare

(15)

2002 Prentice Hall, Inc.

All rights reserved.

Outline

StringStartEnd.j ava

Line 21 Line 31

1 // Fig. 10.4: StringStartEnd.java

2 // This program demonstrates the methods startsWith and 3 // endsWith of the String class.

4

5 // Java extension packages 6 import javax.swing.*;

7

8 public class StringStartEnd { 9

10 // test String comparison methods for beginning and end 11 // of a String

12 public static void main( String args[] ) 13 {

14 String strings[] =

15 { "started", "starting", "ended", "ending" };

16 String output = "";

17

18 // test method startsWith

19 for ( int count = 0; count < strings.length; count++ ) 20

21 if ( strings[ count ].startsWith( "st" ) ) 22 output += "\"" + strings[ count ] + 23 "\" starts with \"st\"\n";

24

25 output += "\n";

26

27 // test method startsWith starting from position 28 // 2 of the string

29 for ( int count = 0; count < strings.length; count++ ) 30

31 if ( strings[ count ].startsWith( "art", 2 ) ) 32 output += "\"" + strings[ count ] +

33 "\" starts with \"art\" at position 2\n";

34

35 output += "\n";

Method startsWith determines if String starts

with specified characters

(16)

Outline

StringStartEnd.j ava

Line 40

36

37 // test method endsWith

38 for ( int count = 0; count < strings.length; count++ ) 39

40 if ( strings[ count ].endsWith( "ed" ) ) 41 output += "\"" + strings[ count ] + 42 "\" ends with \"ed\"\n";

43

44 JOptionPane.showMessageDialog( null, output, 45 "Demonstrating String Class Comparisons", 46 JOptionPane.INFORMATION_MESSAGE );

47

48 System.exit( 0 );

49 } 50

51 } // end class StringStartEnd

Method endsWith determines if String ends

with specified characters

(17)

2002 Prentice Hall, Inc. All rights reserved.

10.6 String Method hashCode

• Hash table

– Stores information using calculation on storable object

• Produces hash code

– Used to choose location in table at which to store object

– Fast lookup

(18)

Outline

StringHashCode.j ava

Line 17 and 19

1 // Fig. 10.5: StringHashCode.java

2 // This program demonstrates the method 3 // hashCode of the String class.

4

5 // Java extension packages 6 import javax.swing.*;

7

8 public class StringHashCode { 9

10 // test String hashCode method

11 public static void main( String args[] ) 12 {

13 String s1 = "hello", s2 = "Hello";

14

15 String output =

16 "The hash code for \"" + s1 + "\" is " + 17 s1.hashCode() +

18 "\nThe hash code for \"" + s2 + "\" is " + 19 s2.hashCode();

20

21 JOptionPane.showMessageDialog( null, output, 22 "Demonstrating String Method hashCode", 23 JOptionPane.INFORMATION_MESSAGE );

24

25 System.exit( 0 );

26 } 27

28 } // end class StringHashCode

Method hashCode performs hash-code calculation

(19)

2002 Prentice Hall, Inc. All rights reserved.

10.7 Locating Characters and Substrings in Strings

• Search for characters in String

– Method indexOf

– Method lastIndexOf

(20)

Outline

StringIndexMetho ds.java

Lines 16-23 Lines 26-33

1 // Fig. 10.6: StringIndexMethods.java 2 // This program demonstrates the String 3 // class index methods.

4

5 // Java extension packages 6 import javax.swing.*;

7

8 public class StringIndexMethods { 9

10 // String searching methods

11 public static void main( String args[] ) 12 {

13 String letters = "abcdefghijklmabcdefghijklm";

14

15 // test indexOf to locate a character in a string 16 String output = "'c' is located at index " +

17 letters.indexOf( 'c' );

18

19 output += "\n'a' is located at index " + 20 letters.indexOf( 'a', 1 );

21

22 output += "\n'$' is located at index " + 23 letters.indexOf( '$' );

24

25 // test lastIndexOf to find a character in a string 26 output += "\n\nLast 'c' is located at index " + 27 letters.lastIndexOf( 'c' );

28

29 output += "\nLast 'a' is located at index " + 30 letters.lastIndexOf( 'a', 25 );

31

Method indexOf finds first occurrence of character in String

Method lastIndexOf finds last occurrence of

character in String

(21)

2002 Prentice Hall, Inc.

All rights reserved.

Outline

StringIndexMetho ds.java

35 // test indexOf to locate a substring in a string 36 output += "\n\n\"def\" is located at index " + 37 letters.indexOf( "def" );

38

39 output += "\n\"def\" is located at index " + 40 letters.indexOf( "def", 7 );

41

42 output += "\n\"hello\" is located at index " + 43 letters.indexOf( "hello" );

44

45 // test lastIndexOf to find a substring in a string 46 output += "\n\nLast \"def\" is located at index " + 47 letters.lastIndexOf( "def" );

48

49 output += "\nLast \"def\" is located at index " + 50 letters.lastIndexOf( "def", 25 );

51

52 output += "\nLast \"hello\" is located at index " + 53 letters.lastIndexOf( "hello" );

54

55 JOptionPane.showMessageDialog( null, output,

56 "Demonstrating String Class \"index\" Methods", 57 JOptionPane.INFORMATION_MESSAGE );

58

59 System.exit( 0 );

60 } 61

62 } // end class StringIndexMethods

Methods indexOf and lastIndexOf can also find

occurrences of substrings

(22)

Outline

StringIndexMetho ds.java

(23)

2002 Prentice Hall, Inc. All rights reserved.

10.8 Extracting Substrings from Strings

• Create Strings from other Strings

– Extract substrings

(24)

Outline

SubString.java

Line 17 Line 20

1 // Fig. 10.7: SubString.java 2 // This program demonstrates the 3 // String class substring methods.

4

5 // Java extension packages 6 import javax.swing.*;

7

8 public class SubString { 9

10 // test String substring methods

11 public static void main( String args[] ) 12 {

13 String letters = "abcdefghijklmabcdefghijklm";

14

15 // test substring methods

16 String output = "Substring from index 20 to end is " + 17 "\"" + letters.substring( 20 ) + "\"\n";

18

19 output += "Substring from index 0 up to 6 is " + 20 "\"" + letters.substring( 0, 6 ) + "\"";

21

22 JOptionPane.showMessageDialog( null, output,

23 "Demonstrating String Class Substring Methods", 24 JOptionPane.INFORMATION_MESSAGE );

25

26 System.exit( 0 );

27 } 28

29 } // end class SubString

Beginning at index 20, extract characters from

String letters

Extract characters from index 0 to 6 from String letters

(25)

2002 Prentice Hall, Inc. All rights reserved.

10.9 Concatenating Strings

• Method concat

– Concatenate two String objects

(26)

Outline

StringConcatenat ion.java

Line 20 Line 22

1 // Fig. 10.8: StringConcatenation.java

2 // This program demonstrates the String class concat method.

3 // Note that the concat method returns a new String object. It 4 // does not modify the object that invoked the concat method.

5

6 // Java extension packages 7 import javax.swing.*;

8

9 public class StringConcatenation { 10

11 // test String method concat

12 public static void main( String args[] ) 13 {

14 String s1 = new String( "Happy " ), 15 s2 = new String( "Birthday" );

16

17 String output = "s1 = " + s1 + "\ns2 = " + s2;

18

19 output += "\n\nResult of s1.concat( s2 ) = " + 20 s1.concat( s2 );

21

22 output += "\ns1 after concatenation = " + s1;

23

24 JOptionPane.showMessageDialog( null, output, 25 "Demonstrating String Method concat", 26 JOptionPane.INFORMATION_MESSAGE );

27

28 System.exit( 0 );

29 } 30

31 } // end class StringConcatenation

Concatenate String s2 to String s1

However, String s1 is not modified by method concat

(27)

2002 Prentice Hall, Inc. All rights reserved.

10.10 Miscellaneous String Methods

• Miscellaneous String methods

– Return modified copies of String

– Return character array

(28)

Outline

StringMiscellane ous2.java

Line 22 Line 26 Line 27 Line 30 Line 33

1 // Fig. 10.9: StringMiscellaneous2.java

2 // This program demonstrates the String methods replace, 3 // toLowerCase, toUpperCase, trim, toString and toCharArray 4

5 // Java extension packages 6 import javax.swing.*;

7

8 public class StringMiscellaneous2 { 9

10 // test miscellaneous String methods 11 public static void main( String args[] ) 12 {

13 String s1 = new String( "hello" ), 14 s2 = new String( "GOOD BYE" ), 15 s3 = new String( " spaces " );

16

17 String output = "s1 = " + s1 + "\ns2 = " + s2 + 18 "\ns3 = " + s3;

19

20 // test method replace

21 output += "\n\nReplace 'l' with 'L' in s1: " + 22 s1.replace( 'l', 'L' );

23

24 // test toLowerCase and toUpperCase 25 output +=

26 "\n\ns1.toUpperCase() = " + s1.toUpperCase() + 27 "\ns2.toLowerCase() = " + s2.toLowerCase();

28

29 // test trim method

30 output += "\n\ns3 after trim = \"" + s3.trim() + "\"";

31

Use method toUpperCase to return s1 copy in which every

character is uppercase

Use method trim to return s3 copy in which whitespace is eliminated Use method toLowerCase to

return s2 copy in which every character is uppercase

Use method replace to return s1 copy in which every occurrence of

‘l’ is replaced with ‘L’

(29)

2002 Prentice Hall, Inc.

All rights reserved.

Outline

StringMiscellane ous2.java

Line 36

35 // test toCharArray method

36 char charArray[] = s1.toCharArray();

37

38 output += "\n\ns1 as a character array = ";

39

40 for ( int count = 0; count < charArray.length; ++count ) 41 output += charArray[ count ];

42

43 JOptionPane.showMessageDialog( null, output, 44 "Demonstrating Miscellaneous String Methods", 45 JOptionPane.INFORMATION_MESSAGE );

46

47 System.exit( 0 );

48 } 49

50 } // end class StringMiscellaneous2

Use method toCharArray to return character array of s1

(30)

10.11 Using String Method valueOf

• String provides static class methods

– Method valueOf

• Returns String representation of object, data type, etc.

(31)

2002 Prentice Hall, Inc.

All rights reserved.

Outline

StringValueOf.ja va

Lines 26-32

1 // Fig. 10.10: StringValueOf.java

2 // This program demonstrates the String class valueOf methods.

3

4 // Java extension packages 5 import javax.swing.*;

6

7 public class StringValueOf { 8

9 // test String valueOf methods

10 public static void main( String args[] ) 11 {

12 char charArray[] = { 'a', 'b', 'c', 'd', 'e', 'f' };

13 boolean b = true;

14 char c = 'Z';

15 int i = 7;

16 long l = 10000000;

17 float f = 2.5f;

18 double d = 33.333;

19

20 Object o = "hello"; // assign to an Object reference 21 String output;

22

23 output = "char array = " + String.valueOf( charArray ) + 24 "\npart of char array = " +

25 String.valueOf( charArray, 3, 3 ) + 26 "\nboolean = " + String.valueOf( b ) + 27 "\nchar = " + String.valueOf( c ) + 28 "\nint = " + String.valueOf( i ) + 29 "\nlong = " + String.valueOf( l ) + 30 "\nfloat = " + String.valueOf( f ) + 31 "\ndouble = " + String.valueOf( d ) + 32 "\nObject = " + String.valueOf( o );

33

static method valueOf of class String returns String

representation of various types

(32)

Outline

StringValueOf.ja va

34 JOptionPane.showMessageDialog( null, output, 35 "Demonstrating String Class valueOf Methods", 36 JOptionPane.INFORMATION_MESSAGE );

37

38 System.exit( 0 );

39 } 40

41 } // end class StringValueOf

(33)

2002 Prentice Hall, Inc. All rights reserved.

10.12 String Method intern

• String comparisons

– Slow operation

– Method intern improves this performance

• Returns reference to String

• Guarantees reference has same contents as original String

(34)

Outline

StringIntern.jav a

Lines 15-20 Line 26 Lines 33-34

1 // Fig. 10.11: StringIntern.java

2 // This program demonstrates the intern method 3 // of the String class.

4

5 // Java extension packages 6 import javax.swing.*;

7

8 public class StringIntern { 9

10 // test String method intern

11 public static void main( String args[] ) 12 {

13 String s1, s2, s3, s4, output;

14

15 s1 = new String( "hello" );

16 s2 = new String( "hello" );

17

18 // test strings to determine if they are same 19 // String object in memory

20 if ( s1 == s2 )

21 output = "s1 and s2 are the same object in memory";

22 else

23 output = "s1 and s2 are not the same object in memory";

24

25 // test strings for equality of contents 26 if ( s1.equals( s2 ) )

27 output += "\ns1 and s2 are equal";

28 else

29 output += "\ns1 and s2 are not equal";

30

31 // use String intern method to get a unique copy of

String s1 and String s2 have same content

Reference returned by s1.intern() is same as that String s1 and String s2

occupy different memory locations

(35)

2002 Prentice Hall, Inc.

All rights reserved.

Outline

StringIntern.jav a

36 // test strings to determine if they are same 37 // String object in memory

38 if ( s3 == s4 )

39 output += "\ns3 and s4 are the same object in memory";

40 else

41 output +=

42 "\ns3 and s4 are not the same object in memory";

43

44 // determine if s1 and s3 refer to same object 45 if ( s1 == s3 )

46 output +=

47 "\ns1 and s3 are the same object in memory";

48 else

49 output +=

50 "\ns1 and s3 are not the same object in memory";

51

52 // determine if s2 and s4 refer to same object 53 if ( s2 == s4 )

54 output += "\ns2 and s4 are the same object in memory";

55 else

56 output +=

57 "\ns2 and s4 are not the same object in memory";

58

59 // determine if s1 and s4 refer to same object 60 if ( s1 == s4 )

61 output += "\ns1 and s4 are the same object in memory";

62 else

63 output +=

64 "\ns1 and s4 are not the same object in memory";

65

(36)

Outline

StringIntern.jav a

66 JOptionPane.showMessageDialog( null, output, 67 "Demonstrating String Method intern", 68 JOptionPane.INFORMATION_MESSAGE );

69

70 System.exit( 0 );

71 } 72

73 } // end class StringIntern

(37)

2002 Prentice Hall, Inc. All rights reserved.

10.13 StringBuffer Class

• Class StringBuffer

– When String object is created, its contents cannot change – Used for creating and manipulating dynamic string data

• i.e., modifiable Strings

– Can store characters based on capacity

• Capacity expands dynamically to handle additional characters

– Uses operators + and += for String concatenation

(38)

10.14 StringBuffer Constructors

• Three StringBuffer constructors

– Default creates StringBuffer with no characters

• Capacity of 16 characters

(39)

2002 Prentice Hall, Inc.

All rights reserved.

Outline

StringBufferCons tructors.java

Line 14 Line 15 Line 16 Lines 19-21

1 // Fig. 10.12: StringBufferConstructors.java

2 // This program demonstrates the StringBuffer constructors.

3

4 // Java extension packages 5 import javax.swing.*;

6

7 public class StringBufferConstructors { 8

9 // test StringBuffer constructors

10 public static void main( String args[] ) 11 {

12 StringBuffer buffer1, buffer2, buffer3;

13

14 buffer1 = new StringBuffer();

15 buffer2 = new StringBuffer( 10 );

16 buffer3 = new StringBuffer( "hello" );

17

18 String output =

19 "buffer1 = \"" + buffer1.toString() + "\"" + 20 "\nbuffer2 = \"" + buffer2.toString() + "\"" + 21 "\nbuffer3 = \"" + buffer3.toString() + "\"";

22

23 JOptionPane.showMessageDialog( null, output,

24 "Demonstrating StringBuffer Class Constructors", 25 JOptionPane.INFORMATION_MESSAGE );

26

27 System.exit( 0 );

28 } 29

30 } // end class StringBufferConstructors

Default constructor creates empty StringBuffer with

capacity of 16 characters

Second constructor creates empty StringBuffer with capacity of

specified (10) characters

Third constructor creates StringBuffer with String “hello” and capacity of 16 characters Method toString returns

String representation of StringBuffer

(40)

10.15 StringBuffer Methods length, capacity, setLength and ensureCapacity

• Method length

– Return StringBuffer length

• Method capacity

– Return StringBuffer capacity

• Method setLength

– Increase or decrease StringBuffer length

• Method ensureCapacity

– Set StringBuffer capacity

– Guarantee that StringBuffer has minimum capacity

(41)

2002 Prentice Hall, Inc.

All rights reserved.

Outline

StringBufferCapL en.java

Line 17 Line 18 Line 20 Line 23

1 // Fig. 10.13: StringBufferCapLen.java

2 // This program demonstrates the length and 3 // capacity methods of the StringBuffer class.

4

5 // Java extension packages 6 import javax.swing.*;

7

8 public class StringBufferCapLen { 9

10 // test StringBuffer methods for capacity and length 11 public static void main( String args[] )

12 {

13 StringBuffer buffer =

14 new StringBuffer( "Hello, how are you?" );

15

16 String output = "buffer = " + buffer.toString() + 17 "\nlength = " + buffer.length() +

18 "\ncapacity = " + buffer.capacity();

19

20 buffer.ensureCapacity( 75 );

21 output += "\n\nNew capacity = " + buffer.capacity();

22

23 buffer.setLength( 10 );

24 output += "\n\nNew length = " + buffer.length() + 25 "\nbuf = " + buffer.toString();

26

27 JOptionPane.showMessageDialog( null, output, 28 "StringBuffer length and capacity Methods", 29 JOptionPane.INFORMATION_MESSAGE );

30

31 System.exit( 0 );

32 } 33

34 } // end class StringBufferCapLen

Method length returns StringBuffer length

Method capacity returns StringBuffer capacity Use method ensureCapacity

to set capacity to 75 Use method setLength

to set length to 10

(42)

Outline

StringBufferCapL en.java

Only 10 characters from StringBuffer are printed

Only 10 characters from StringBuffer are printed

(43)

2002 Prentice Hall, Inc. All rights reserved.

10.16 StringBuffer Methods charAt, setCharAt, getChars and reverse

• Manipulating StringBuffer characters

– Method charAt

• Return StringBuffer character at specified index

– Method setCharAt

• Set StringBuffer character at specified index

– Method getChars

• Return character array from StringBuffer

– Method reverse

• Reverse StringBuffer contents

(44)

Outline

StringBufferChar s.java

Lines 16-17 Line 20 Lines 26-27 Line 30

1 // Fig. 10.14: StringBufferChars.java

2 // The charAt, setCharAt, getChars, and reverse methods 3 // of class StringBuffer.

4

5 // Java extension packages 6 import javax.swing.*;

7

8 public class StringBufferChars { 9

10 // test StringBuffer character methods 11 public static void main( String args[] ) 12 {

13 StringBuffer buffer = new StringBuffer( "hello there" );

14

15 String output = "buffer = " + buffer.toString() + 16 "\nCharacter at 0: " + buffer.charAt( 0 ) + 17 "\nCharacter at 4: " + buffer.charAt( 4 );

18

19 char charArray[] = new char[ buffer.length() ];

20 buffer.getChars( 0, buffer.length(), charArray, 0 );

21 output += "\n\nThe characters are: ";

22

23 for ( int count = 0; count < charArray.length; ++count ) 24 output += charArray[ count ];

25

26 buffer.setCharAt( 0, 'H' );

27 buffer.setCharAt( 6, 'T' );

28 output += "\n\nbuf = " + buffer.toString();

29

30 buffer.reverse();

31 output += "\n\nbuf = " + buffer.toString();

Return StringBuffer characters at indices 0

and 4, respectively

Return character array from StringBuffer

Replace characters at indices 0 and 6 with ‘H’

and ‘T,’ respectively Reverse characters in

(45)

2002 Prentice Hall, Inc.

All rights reserved.

Outline

StringBufferChar s.java

33 JOptionPane.showMessageDialog( null, output,

34 "Demonstrating StringBuffer Character Methods", 35 JOptionPane.INFORMATION_MESSAGE );

36

37 System.exit( 0 );

38 } 39

40 } // end class StringBufferChars

(46)

10.17 StringBuffer append Methods

• Method append

– Allow data-type values to be added to StringBuffer

(47)

2002 Prentice Hall, Inc.

All rights reserved.

Outline

StringBufferAppe nd.java

Line 24

1 // Fig. 10.15: StringBufferAppend.java 2 // This program demonstrates the append 3 // methods of the StringBuffer class.

4

5 // Java extension packages 6 import javax.swing.*;

7

8 public class StringBufferAppend { 9

10 // test StringBuffer append methods

11 public static void main( String args[] ) 12 {

13 Object o = "hello";

14 String s = "good bye";

15 char charArray[] = { 'a', 'b', 'c', 'd', 'e', 'f' };

16 boolean b = true;

17 char c = 'Z';

18 int i = 7;

19 long l = 10000000;

20 float f = 2.5f;

21 double d = 33.333;

22 StringBuffer buffer = new StringBuffer();

23

24 buffer.append( o );

25 buffer.append( " " );

26

Append String “hello”

to StringBuffer

(48)

Outline

StringBufferAppe nd.java

Line 27 Line 29 Line 31 Lines 33-43

27 buffer.append( s );

28 buffer.append( " " );

29 buffer.append( charArray );

30 buffer.append( " " );

31 buffer.append( charArray, 0, 3 );

32 buffer.append( " " );

33 buffer.append( b );

34 buffer.append( " " );

35 buffer.append( c );

36 buffer.append( " " );

37 buffer.append( i );

38 buffer.append( " " );

39 buffer.append( l );

40 buffer.append( " " );

41 buffer.append( f );

42 buffer.append( " " );

43 buffer.append( d );

44

45 JOptionPane.showMessageDialog( null, 46 "buffer = " + buffer.toString(),

47 "Demonstrating StringBuffer append Methods", 48 JOptionPane.INFORMATION_MESSAGE );

49

50 System.exit( 0 );

51 } 52

53 } // end StringBufferAppend

Append String “good bye”

Append “a b c d e f”

Append “a b c”

Append boolean, char, int, long, float and double

(49)

2002 Prentice Hall, Inc. All rights reserved.

10.18 StringBuffer Insertion and Deletion Methods

• Method insert

– Allow data-type values to be inserted into StringBuffer

• Methods delete and deleteCharAt

– Allow characters to be removed from StringBuffer

(50)

Outline

StringBufferInse rt.java

1 // Fig. 10.16: StringBufferInsert.java

2 // This program demonstrates the insert and delete 3 // methods of class StringBuffer.

4

5 // Java extension packages 6 import javax.swing.*;

7

8 public class StringBufferInsert { 9

10 // test StringBuffer insert methods

11 public static void main( String args[] ) 12 {

13 Object o = "hello";

14 String s = "good bye";

15 char charArray[] = { 'a', 'b', 'c', 'd', 'e', 'f' };

16 boolean b = true;

17 char c = 'K';

18 int i = 7;

19 long l = 10000000;

20 float f = 2.5f;

21 double d = 33.333;

22 StringBuffer buffer = new StringBuffer();

23

(51)

2002 Prentice Hall, Inc.

All rights reserved.

Outline

StringBufferInse rt.java

Lines 24-40 Line 45 Line 46

24 buffer.insert( 0, o );

25 buffer.insert( 0, " " );

26 buffer.insert( 0, s );

27 buffer.insert( 0, " " );

28 buffer.insert( 0, charArray );

29 buffer.insert( 0, " " );

30 buffer.insert( 0, b );

31 buffer.insert( 0, " " );

32 buffer.insert( 0, c );

33 buffer.insert( 0, " " );

34 buffer.insert( 0, i );

35 buffer.insert( 0, " " );

36 buffer.insert( 0, l );

37 buffer.insert( 0, " " );

38 buffer.insert( 0, f );

39 buffer.insert( 0, " " );

40 buffer.insert( 0, d );

41

42 String output =

43 "buffer after inserts:\n" + buffer.toString();

44

45 buffer.deleteCharAt( 10 ); // delete 5 in 2.5

46 buffer.delete( 2, 6 ); // delete .333 in 33.333 47

48 output +=

49 "\n\nbuffer after deletes:\n" + buffer.toString();

50

51 JOptionPane.showMessageDialog( null, output,

52 "Demonstrating StringBufferer Inserts and Deletes", 53 JOptionPane.INFORMATION_MESSAGE );

54

55 System.exit( 0 );

56 } 57

58 } // end class StringBufferInsert

Use method insert to insert data types in beginning of

StringBuffer

Use method deleteCharAt to remove character from index 10 in

StringBuffer

Remove characters from indices 2 through 5 (inclusive)

(52)

Outline

StringBufferInse rt.java

(53)

2002 Prentice Hall, Inc. All rights reserved.

10.19 Character Class Examples

• Treat primitive variables as objects

– Type wrapper classes

• Boolean

• Character

• Double

• Float

• Byte

• Short

• Integer

• Long

– We examine class Character

(54)

Outline

StaticCharMethod s.java

1 // Fig. 10.17: StaticCharMethods.java

2 // Demonstrates the static character testing methods 3 // and case conversion methods of class Character 4 // from the java.lang package.

5

6 // Java core packages 7 import java.awt.*;

8 import java.awt.event.*;

9

10 // Java extension packages 11 import javax.swing.*;

12

13 public class StaticCharMethods extends JFrame { 14 private char c;

15 private JLabel promptLabel;

16 private JTextField inputField;

17 private JTextArea outputArea;

18

19 // set up GUI

20 public StaticCharMethods() 21 {

22 super( "Static Character Methods" );

23

24 Container container = getContentPane();

25 container.setLayout( new FlowLayout() );

26

27 promptLabel =

28 new JLabel( "Enter a character and press Enter" );

29 container.add( promptLabel );

30

31 inputField = new JTextField( 5 );

(55)

2002 Prentice Hall, Inc.

All rights reserved.

Outline

StaticCharMethod s.java

35 // anonymous inner class 36 new ActionListener() { 37

38 // handle text field event

39 public void actionPerformed( ActionEvent event ) 40 {

41 String s = event.getActionCommand();

42 c = s.charAt( 0 );

43 buildOutput();

44 } 45

46 } // end anonymous inner class 47

48 ); // end call to addActionListener 49

50 container.add( inputField );

51

52 outputArea = new JTextArea( 10, 20 );

53 container.add( outputArea );

54

55 setSize( 300, 250 ); // set the window size 56 show(); // show the window 57 }

58

59 // display character info in outputArea 60 public void buildOutput()

61 {

(56)

Outline

StaticCharMethod s.java

Line 63 Line 66 Line 68 Line 69 Line 71 Lines 72-73

62 outputArea.setText(

63 "is defined: " + Character.isDefined( c ) + 64 "\nis digit: " + Character.isDigit( c ) + 65 "\nis Java letter: " +

66 Character.isJavaIdentifierStart( c ) + 67 "\nis Java letter or digit: " +

68 Character.isJavaIdentifierPart( c ) +

69 "\nis letter: " + Character.isLetter( c ) + 70 "\nis letter or digit: " +

71 Character.isLetterOrDigit( c ) +

72 "\nis lower case: " + Character.isLowerCase( c ) + 73 "\nis upper case: " + Character.isUpperCase( c ) + 74 "\nto upper case: " + Character.toUpperCase( c ) + 75 "\nto lower case: " + Character.toLowerCase( c ) );

76 } 77

78 // execute application

79 public static void main( String args[] ) 80 {

81 StaticCharMethods application = new StaticCharMethods();

82

83 application.addWindowListener(

84

85 // anonymous inner class 86 new WindowAdapter() { 87

88 // handle event when user closes window

89 public void windowClosing( WindowEvent windowEvent ) 90 {

91 System.exit( 0 );

92 }

Determine whether c is defined Unicode digit

Determine whether c can be used as first character in identifier

Determine whether c can be used as identifier character Determine whether c is a letter

Determine whether c is letter or digit

Determine whether c is uppercase or lowercase

References

Related documents

• The design should follow the overall European Athletics design using the typography, colour, wireframe and/or pattern. • The event logo must be placed on all invitations

Dinamika konflik keagamaan acapkali melibatkan pemeluk agama dalam jumlah besar cendrung (Konflik Komunal) mempunyai dampak sosial politik lebih luas dan

Some other examples are University of Brighton Academies Trust; Birmingham City University Academics Trust (BCUAT); Staffordshire University Academies Trust;

Human Resources &amp; Affirmative Action Southwest Tennessee Community College 737 Union Ave Memphis, TN 38103 Phone: (901) 333-5828 [email protected] President-Elect

Tags: CAM , Community Association Manager firm licenses , Department of Business and Professional Regulation , DPBR , Energy Systems Specialty Contractor's License ,

Based on the background, the author aimed to determine the relationship between nurse knowledge and nurse attitudes with the implementation of the Patient Safety

Line 2-14 compare to line 17, the effect of overexpression of YbeY (with plasmid ybeY annotated as pybeY, line 17) on ybeX deletion mutant strain is shown in comparison with

[r]