Characters, Strings and the String Buffer - PowerPoint PPT Presentation

About This Presentation
Title:

Characters, Strings and the String Buffer

Description:

Characters, Strings and the String Buffer Jim Burns Identifying problems that can occur when you manipulate string data String is not a simple data type like int ... – PowerPoint PPT presentation

Number of Views:84
Avg rating:3.0/5.0
Slides: 34
Provided by: HPAuthoriz904
Learn more at: http://burns.ba.ttu.edu
Category:

less

Transcript and Presenter's Notes

Title: Characters, Strings and the String Buffer


1
Characters, Strings and the String Buffer
  • Jim Burns

2
Identifying problems that can occur when you
manipulate string data
  • String is not a simple data type like int, float,
    or double
  • String creates an instance of a class, the class
    String
  • As such it contains a reference or an address and
    not the actual string
  • So you cannot do equality comparisons of two
    different instances of String, because you are
    simply testing if the addresses are the same

3
An example of incorrect code
  • import javax.swing.JOptionPane
  • public class TryToCompareStrings
  • public static void main(String args)
  • String aName "Carmen"
  • String anotherName
  • anotherName JOptionPane.showInputDialog(nu
    ll,
  • "Enter your name")
  • if(aName anotherName)
  • JOptionPane.showMessageDialog(null,
    aName
  • " equals " anotherName)
  • else
  • JOptionPane.showMessageDialog(null,
    aName
  • " does not equal " anotherName)
  • System.exit(0)

4
Correct Code
  • import javax.swing.JOptionPane
  • public class CompareStrings
  • public static void main(String args)
  • String aName "Carmen"
  • String anotherName
  • anotherName JOptionPane.showInputDialog(nu
    ll,
  • "Enter your name")
  • if(aName.equals(anotherName))
  • JOptionPane.showMessageDialog(null,
    aName
  • " equals " anotherName)
  • else
  • JOptionPane.showMessageDialog(null,
    aName
  • " does not equal " anotherName)
  • System.exit(0)

5
Three classes for working with strings
  • Charactera class whose instances can hold a
    single character valueprovides methods that can
    manipulate or inspect single-character data
  • Stringa class for working with fixed-string
    datathat is unchanging data composed of multiple
    characters, strings that are immutable
  • StringBuffera class for storing and manipulating
    changeable data composed of mulltiple characters

6
Manipulating Characters
  • We know the char data type can hold any single
    character
  • Character class provides the following methods
  • isUpperCase(), toUpperCase(), isLowerCase(),
    toLowerCase(), isDigit(), isLetter(),
    isLetterOrDigit(), isWhitespace()
  • Methods that begin with is perform tests
    delivering true or false values
  • Methods that begin with to perform conversions

7
Declaring a String Object
  • We know that characters enclosed within double
    quotation marks are literal strings
  • Weve learned to print these strings using
    println() and showMessageDialog()
  • An literal string is an unnamed object, or
    anonymous object, of the String class
  • A String variable is simply a named object of the
    same class.
  • The class String is defined in java.lang.String,
    which is automatically imported into every
    program you write

8
Declaring a String variable
  • When you declare a String variable, the String
    itselfthat is, the series of characters
    contained in the Stringis distinct from the
    variable you use to refer to it.
  • Can initialize a String variable with or without
    a String constructor

9
With or without a String Constructor
  • With the constructor
  • String aGreeting new String(Hello)
  • Without the constructor
  • String aGreeting Hello
  • Unlike other classes, you can create a String
    object without using the keyword new or
    explicitly calling the class constructor

10
Comparing String Values
  • Consider the following two statements
  • String aGreeting hello
  • aGreeting Bonjour
  • These statements are syntactically correct. What
    happens is that the address contained in
    aGreeting is changed to point to Bonjour rather
    than hello, both of which are contained at
    different locations in memory. Eventually, the
    garbage collector discards the hello characters.

11
Comparing String Values
  • The String class provides methods for comparing
    strings
  • In the example above the sign is comparing
    memory addresses, not the actual strings.
  • The String class equals() method evaluates the
    contents of two String objects to determine if
    they are equivalent.

12
  • Import javax.swing.JOptionPane
  • Public class CompareStrings
  • public static void main(String args)
  • String aName Carmen, anotherName
  • anotherName JOptionPane. showInputDialog(null
    , Enter your name)
  • if(aName.equals(anotherName))
  • JOptionPane.showMessageDialog(null, aName
    equals anotherName)
  • else
  • JOptionPane.showMessageDialog(null, aName
    does not equal anotherName))
  • System.exit(0)

13
The equals() method
  • From the code above, we can see that the equals()
    method returns a Boolean value of true or false

14
equalsIgnoreCase() Method
  • Similar to the equals() method
  • Ignores case
  • String aName Roger
  • If(aName.equalsIgnoreCase(roGER))
  • evaluates to true

15
compareTo() method
  • Returns an integer that is the numeric difference
    between the first two non-matching characters

16
(No Transcript)
17
Using other String Methods
  • toUpperCase() and toLowerCase() convert any
    String to its uppercase and lowercase equivalent
  • Length() returns the length of a String

18
  • import javax.swing.
  • public class BusinessLetter
  • public static void main(String args)
  • String name
  • String firstName ""
  • String familyName ""
  • int x
  • char c
  • name JOptionPane.showInputDialog(null,
  • "Please enter customer's first and last
    name")
  • x 0
  • while(x lt name.length())
  • if(name.charAt(x) ' ')
  • firstName name.substring(0, x)
  • familyName name.substring(x 1,
    name.length())

19
  • x 0
  • while(x lt name.length())
  • if(name.charAt(x) ' ')
  • firstName name.substring(0, x)
  • familyName name.substring(x 1,
    name.length())
  • x name.length()
  • x

20
(No Transcript)
21
Concatenation
  • You know you can concatenate strings to strings
    as in System.out.println(firstName
    lastName)

22
Concatenationnumbers to strings by using
  • The following is permissible
  • Int myAge 25
  • String aString My age is myAge
  • Another example would be
  • String anotherString
  • float someFloat 12.34f
  • anotherString someFloat

23
Concatenation by using the toString() method
  • String theString
  • Int someInt 10
  • theString Integer.toString(someInt)
  • String aString
  • double someDouble 8.25
  • aString Double.toString(someDouble)

24
Converting Strings to Numbers
  • Use a wrapper like the Integer class which is a
    part of java.lang
  • A wrapper is a class that is wrapped around a
    simpler element
  • Int anInt Integer.parseInt(649) stores the
    value 649 in the variable anInt

25
  • public class TestCharacter
  • public static void main(String args)
  • char aChar 'C'
  • System.out.println("The character is "
    aChar)
  • if(Character.isUpperCase(aChar))
  • System.out.println(aChar " is
    uppercase")
  • else
  • System.out.println(aChar " is not
    uppercase")
  • if(Character.isLowerCase(aChar))
  • System.out.println(aChar " is
    lowercase")
  • else
  • System.out.println(aChar " is not
    lowercase")
  • aChar Character.toLowerCase(aChar)
  • System.out.println("After toLowerCase(),
    aChar is " aChar)
  • aChar Character.toUpperCase(aChar)
  • System.out.println("After toUpperCase(),
    aChar is " aChar)
  • if(Character.isLetterOrDigit(aChar))

26
Test Character App
  • public class TestCharacter
  • public static void main(String args)
  • char aChar 'C'
  • System.out.println("The character is "
    aChar)
  • if(Character.isUpperCase(aChar))
  • System.out.println(aChar " is
    uppercase")
  • else
  • System.out.println(aChar " is not
    uppercase")
  • if(Character.isLowerCase(aChar))
  • System.out.println(aChar " is
    lowercase")
  • else

27
  • System.out.println(aChar " is not lowercase")
  • aChar Character.toLowerCase(aChar)
  • System.out.println("After toLowerCase(),
    aChar is " aChar)
  • aChar Character.toUpperCase(aChar)
  • System.out.println("After toUpperCase(),
    aChar is " aChar)
  • if(Character.isLetterOrDigit(aChar))
  • System.out.println(aChar " is a letter or
    digit")
  • else
  • System.out.println(aChar " is neither a
    letter nor a digit")
  • if(Character.isWhitespace(aChar))
  • System.out.println(aChar " is
    whitespace")
  • else
  • System.out.println(aChar " is not
    whitespace")

28
Learning about the StringBuffer Class
  • Some strings are not constants, not immutable
  • String someChars Goodbye
  • someChars Goodbye Everybody
  • someChars Goodbye Everybody
  • You cannot change the string Goodbye
  • To overcome these limitations, you can use the
    StringBuffer class
  • The StringBuffer class was invented to
    accommodate strings that are not immutable
    (constants)

29
The StringBuffer Class
  • Uses a buffer that is much larger than any one
    string actual size of the buffer is the capacity
  • Provides methods that can change individual
    characters within a string
  • Must initialize StringBuffer objects as follows
  • StringBuffer eventString new StringBuffer(Hello
    there)
  • Cannot use StringBuffer eventString Hello
    there

30
Methods in the StringBuffer Class
  • setLength() will change the length of a String in
    a StringBuffer object
  • capacity() will find the capacity of an object
  • Has four constructors
  • public StringBuffer() constructs a StringBuffer
    with no characters and a default size of 16
    characters
  • public StringBuffer(int Capacity) creates a
    StringBuffer with no characters and a capacity
    defined by the parameter
  • public StringBuffer(String s) contains the same
    characters as those stored in the String object s

31
Still more methods in the StringBuffer Class
  • Append() lets you add characters to the end of a
    StringBuffer object
  • Insert() lets you add characters at a specific
    location within a StringBuffer object
  • StringBuffer someBuffer new StringBuffer(Happy
    Birthday)
  • someBuffer.insert(6,30th )
  • Produces Happy 30th Birthday

32
Still more methods in StringBuffer
  • setCharAt() method allows you to change a single
    character at a specified location
  • someBuffer.setCharAt(6,4)
  • Changes someBuffer to Happy 40th Birthday
  • Can use charAt() method will return the character
    at an offset number of positions from the first
    character
  • StringBuffer text new StringBuffer(Java
    Programming)
  • Then text.charAt(5) returns the character P.

33
  • package Strings
  • import javax.swing.
  • public class RepairName
  • /
  • _at_param args
  • /
  • public static void main(String args)
  • String name, saveOriginalName
  • int stringLength
  • int i
  • char c
  • name JOptionPane.showInputDialog(null, "Please
    enter your first and last name")
  • saveOriginalName name
  • stringLength name.length()
  • for (i0 i lt stringLength i)
  • c name.charAt(i)
Write a Comment
User Comments (0)
About PowerShow.com