String and StringBuilder - PowerPoint PPT Presentation

About This Presentation
Title:

String and StringBuilder

Description:

Strings, unlike most other objects, have a defined operation (as opposed to a method) ... are powerful, but can be treacherous if you aren't very familiar with them ... – PowerPoint PPT presentation

Number of Views:121
Avg rating:3.0/5.0
Slides: 25
Provided by: davidma
Category:

less

Transcript and Presenter's Notes

Title: String and StringBuilder


1
String and StringBuilder
  • Part I String

2
About Strings
  • Strings are objects, but there is a special
    syntax for writing String literals
  • "Hello"
  • Strings, unlike most other objects, have a
    defined operation (as opposed to a method)
  • " This " "is String " "concatenation""
  • Strings can contain any character, but some of
    them must be escaped in order to write them in
    a literal
  • \" stands for the double-quote (") character
  • \n stands for the newline character
  • \\ stands for the backslash (\)character
  • Each of these is written as a two-character
    sequence, but represents a single character in
    the string

3
Useful String methods I
  • char charAt(int index)
  • Returns the character at the given index position
    (0-based)
  • boolean startsWith(String prefix)
  • Tests if this String starts with the prefix
    String
  • boolean endsWith(String suffix)
  • Tests if this String ends with the suffix String

4
Useful String methods II
  • boolean equals(Object obj)
  • Tests if this String is the same as the obj
    (which may be any type false if its not a
    String)
  • boolean equalsIgnoreCase(String other)
  • Tests if this String is equal to the other
    String, where case does not matter
  • int length()
  • Returns the length of this string note that this
    is a method, not an instance variable

5
Useful String methods III
  • int indexOf(char ch)
  • Returns the position of the first occurrence of
    ch in this String, or -1 if it does not occur
  • int indexOf(char ch, int fromIndex)
  • Returns the position of the first occurrence of
    ch, starting at (not after) the position
    fromIndex
  • There are two similar methods that take a String
    instead of a char as their first argument

6
Useful String methods IV
  • int lastIndexOf(char ch)
  • Returns the position of the last occurrence of ch
    in this String, or -1 if it does not occur
  • int lastIndexOf(char ch, int fromIndex)
  • Returns the position of the last occurrence of
    ch, searching backward starting at position
    fromIndex
  • There are two similar methods that take a String
    instead of a char as their first argument

7
Useful String methods V
  • String substring(int beginIndex)
  • Returns a new string that is a substring of this
    string, beginning with the character at the
    specified index and extending to the end of this
    string.
  • String substring(int beginIndex, int endIndex)
  • Returns a new string that is a substring of this
    string, beginning at the specified beginIndex and
    extending to the character at index endIndex - 1.
    Thus the length of the substring is
    endIndex-beginIndex

8
Understanding index
  • With charAt(index), indexOf(x), and
    lastIndexOf(x), just count characters (starting
    from zero)
  • With substring(from) and substring(from, to), it
    works better to count positions between characters
  • So, for example, substring(4, 8) is "said",
    andsubstring(8, 12) is ", \"H"
  • If indexOf(',') is 8, then substring(0,
    indexOf(',')) is "She said"and
    substring(indexOf(',') 1) is " \"Hi\""

9
Useful String methods VI
  • String toUpperCase()
  • Returns a new String similar to this String, in
    which all letters are uppercase
  • String toLowerCase()
  • Returns a new String similar to this String, in
    which all letters are lowercase
  • String trim()
  • Returns a new String similar to this String, but
    with whitespace removed from both ends

10
Useful String methods VII
  • String split(String regex)
  • Breaks the string up into an array of strings
  • The parameter is a regular expression that
    defines what separates the strings
  • For example, String s "one, two, three"
    String ss s.split(", ")
  • This assigns the array "one", "two", "three" to
    ss
  • Regular expressions are complex expressions that
    assign meanings to many common punctuation marks,
    such as , , period, and
  • Hence, regular expressions are powerful, but can
    be treacherous if you arent very familiar with
    them

11
Finally, a useless String method
  • String toString()
  • Returns this String
  • Why do we have this method?
  • Consistency--Every Object has a toString() method

12
Strings are immutable
  • A String, once created, cannot be changed
  • None of the preceding methods modify the String,
    although several create a new String
  • Statements like this create new Strings
  • myString myString anotherCharacter
  • Creating a few extra Strings in a program is no
    big deal
  • Creating a lot of Strings can be very costly

13
More about equals
  • If you write String s "abc" String t
    "abc"the compiler only creates the string
    "abc" once, and makes s and t both refer to this
    one string
  • It can do this because strings are immutable
  • Hence, the test s t will be true
  • However, if you now write String u "a"
    "bc"the test s u will be false
  • This is because they are different strings
  • Moral Use equals for strings, not

14
Still more about equals
  • Suppose you want to test whether a variable name
    has the value "Dave"
  • Heres the obvious way to do it if
    (name.equals("Dave")) ...
  • But you could also do it this way if
    ("Dave".equals(name)) ...
  • It turns out that the second way is usually
    better
  • Why?
  • If name null, the first way will cause a
    NullPointerException, but the second way
    will just return false

15
Strings, Etc.
  • Part II StringBuilder

16
About StringBuilders
  • A StringBuilder has a capacity (the number of
    characters it can hold) and a length (the number
    of characters it is currently holding)
  • If the capacity is exceeded, the StringBuilder is
    copied to a new location with more room
  • StringBuilder is a reimplementation of
    StringBuffer
  • The API (collection of methods) is the same
  • StringBuffers are threadsafe, but StringBuilders
    are more efficient
  • StringBuilders are used to implement String
    concatenation
  • Whenever you say String s "ab" "cd", Java
    creates a StringBuffer containing the characters
    a and b, appends the characters c and d to it,
    and converts the result back to a String
  • As you might guess, this isnt terribly
    efficient, but its fine if you dont overdo it

17
StringBuilder constructors
  • StringBuilder()
  • Constructs a StringBuilder with a capacity of 16
    characters
  • StringBuilder(int capacity)
  • Constructs a StringBuilder with the requested
    capacity
  • StringBuilder(String str)
  • Constructs a StringBuilder containing the String
    str

18
Useful StringBuilder methods I
  • StringBuilder append(X)
  • Appends X to the end of this StringBuilder also
    (as a convenience) returns this StringBuilder
  • The append method is so heavily overloaded that
    it will work with any argument if the argument
    is an object, its toString() method is used

19
Useful StringBuilder methods II
  • int length()
  • Returns the number of characters in this
    StringBuilder
  • void setLength(int newLength)
  • Sets the number of characters in this
    StringBuilder this may result in truncation of
    characters at the end, or addition of null
    characters

20
Useful StringBuilder methods III
  • char charAt(int index)
  • Returns the character at the location index
  • void setCharAt(int index, char ch)
  • Sets the character at location index to ch
  • StringBuilder reverse()
  • The sequence of characters in this StringBuilder
    is replaced by the reverse of this sequence, and
    also returned as the value of the method

21
Useful StringBuilder methods IV
  • StringBuilder insert(int offset, X)
  • Insert X starting at the location offset in this
    StringBuilder, and also return this StringBuilder
    as the value of the method. Like append, this
    method is heavily overloaded
  • StringBuilder deleteCharAt(int index)
  • Deletes the character at location index
  • StringBuilder delete(int start, int end)
  • Deletes chars at locations start through end-1

22
Useful StringBuilder methods V
  • String substring(int start)
  • Returns a new String of characters from this
    StringBuilder, beginning with the character at
    the specified index and extending to the end of
    this string.
  • String substring(int start, int end)
  • Returns a new String of characters from this
    StringBuilder, beginning at location start and
    extending to the character at index end-1. Thus
    the length of the substring is end-begin
  • String toString()
  • Returns the characters of this StringBuilder as a
    String

23
When to use StringBuilders
  • If you make a lot (thousands) of changes or
    additions to a String, it is much more efficient
    to use a StringBuilder
  • If you are simply examining the contents of a
    String, then a String is at least as efficient as
    a StringBuilder
  • For incidental use (such as creating output
    lines), use Strings they are more convenient

24
The End
Write a Comment
User Comments (0)
About PowerShow.com