cis 234: strings (click, scroll down)strings dr. ralph d. westfall april, 2010
TRANSCRIPT
![Page 1: CIS 234: Strings (click, scroll down)Strings Dr. Ralph D. Westfall April, 2010](https://reader035.vdocuments.site/reader035/viewer/2022062407/56649e225503460f94b0fa3f/html5/thumbnails/1.jpg)
CIS 234: Strings (click, scroll down)
Dr. Ralph D. WestfallApril, 2010
![Page 2: CIS 234: Strings (click, scroll down)Strings Dr. Ralph D. Westfall April, 2010](https://reader035.vdocuments.site/reader035/viewer/2022062407/56649e225503460f94b0fa3f/html5/thumbnails/2.jpg)
What Is a String? series of characters enclosed in double
quotes characters can include letters (lower case
and upper case), digits, special characters (spaces, punctuation marks, mathematical operators, "escape sequences," etc.)
"Kim" "137 Flower St." "a + b\n“ it is a data type but not a primitive
one
![Page 3: CIS 234: Strings (click, scroll down)Strings Dr. Ralph D. Westfall April, 2010](https://reader035.vdocuments.site/reader035/viewer/2022062407/56649e225503460f94b0fa3f/html5/thumbnails/3.jpg)
Strings in Memory memory is assigned when a string is
created if a string's value changes, its memory
location (and possibly length) changes "anonymous" strings have a memory
location but no variable nameSystem.out.println("Total: "); //anonymous
![Page 4: CIS 234: Strings (click, scroll down)Strings Dr. Ralph D. Westfall April, 2010](https://reader035.vdocuments.site/reader035/viewer/2022062407/56649e225503460f94b0fa3f/html5/thumbnails/4.jpg)
Strings in Memory - 2 each character in a string is
identified by an offset from its memory location
1st character is at address of string offset = 0
2nd character is at string address + 1 x 2 offset = 2 bytes (in Unicode)
3rd is at string address + 2 x 2, etc.
![Page 5: CIS 234: Strings (click, scroll down)Strings Dr. Ralph D. Westfall April, 2010](https://reader035.vdocuments.site/reader035/viewer/2022062407/56649e225503460f94b0fa3f/html5/thumbnails/5.jpg)
Exercise based on the spreadsheet
example, make up a variable name and address table and a memory diagram for: someone’s name their age how much money is in their pocket
![Page 6: CIS 234: Strings (click, scroll down)Strings Dr. Ralph D. Westfall April, 2010](https://reader035.vdocuments.site/reader035/viewer/2022062407/56649e225503460f94b0fa3f/html5/thumbnails/6.jpg)
String Class String is a class in Java, not a primitive
data type, so strings are declared with String (1st letter capitalized) unlike other classes, don't always have to
use newString myName = new String("Juan"); // okString yourName = "Viji"; // also ok
![Page 7: CIS 234: Strings (click, scroll down)Strings Dr. Ralph D. Westfall April, 2010](https://reader035.vdocuments.site/reader035/viewer/2022062407/56649e225503460f94b0fa3f/html5/thumbnails/7.jpg)
String Class Methods when creating a string, you create
an object of the String class can use String class methods with
strings you create, by attaching a method to a string with a dot
int size = myName.length();int size = "Joan of Arcadia".length();/* length method in String class
assigns # of characters in myName object to size */
![Page 8: CIS 234: Strings (click, scroll down)Strings Dr. Ralph D. Westfall April, 2010](https://reader035.vdocuments.site/reader035/viewer/2022062407/56649e225503460f94b0fa3f/html5/thumbnails/8.jpg)
String Class Comparisons with objects, == compares memory
locations, not actual values == wouldn't recognize exactly same string
values if in different memory locations in some situations, == test on exactly
the same strings may NOT be true to be safe, need to use String class
methods instead to compare values
![Page 9: CIS 234: Strings (click, scroll down)Strings Dr. Ralph D. Westfall April, 2010](https://reader035.vdocuments.site/reader035/viewer/2022062407/56649e225503460f94b0fa3f/html5/thumbnails/9.jpg)
String Class equals Method compares strings in same or different
memory locationsprivate String aName;private boolean test;aName = "Lee "; //includes spaces test = (aName.equals("Lee")) // false
"Lee " includes space characterstest = ("Lee".equals(aName)) // another
way
![Page 10: CIS 234: Strings (click, scroll down)Strings Dr. Ralph D. Westfall April, 2010](https://reader035.vdocuments.site/reader035/viewer/2022062407/56649e225503460f94b0fa3f/html5/thumbnails/10.jpg)
String compareTo Method compares two strings letter by
letter if identical, returns 0 otherwise returns numeric distance
between 1st nonmatching characters value is calculated as (1st – 2nd) if 1st is less, value is negative
![Page 11: CIS 234: Strings (click, scroll down)Strings Dr. Ralph D. Westfall April, 2010](https://reader035.vdocuments.site/reader035/viewer/2022062407/56649e225503460f94b0fa3f/html5/thumbnails/11.jpg)
String compareTo Method - 2String aName = "Li"; int distance =
(aName.compareTo("Le")); // i is ASCII 105, e is ASCII 101 aName ("Li) is 1st, "Le" is 2nd alphabetically, "Li" comes after "Lee"
result = "Li" minus "Le" therefore distance is positive (+4)
![Page 12: CIS 234: Strings (click, scroll down)Strings Dr. Ralph D. Westfall April, 2010](https://reader035.vdocuments.site/reader035/viewer/2022062407/56649e225503460f94b0fa3f/html5/thumbnails/12.jpg)
Practice
oneName = "Lee"; twoName = "Lidia";threeName = "Larry";test = (oneName.equals(twoName))
// test = ?num =
(threeName.compareTo(oneName));
// num= ?
![Page 13: CIS 234: Strings (click, scroll down)Strings Dr. Ralph D. Westfall April, 2010](https://reader035.vdocuments.site/reader035/viewer/2022062407/56649e225503460f94b0fa3f/html5/thumbnails/13.jpg)
String length Method
size = myEmail.length(); make sure that object you attach
length method to is a String, not an array of Strings possible to have an array (group with
same name) of strings length is also a method of Array class,
so would return size of array instead of string
![Page 14: CIS 234: Strings (click, scroll down)Strings Dr. Ralph D. Westfall April, 2010](https://reader035.vdocuments.site/reader035/viewer/2022062407/56649e225503460f94b0fa3f/html5/thumbnails/14.jpg)
String indexOf Method finds first location of a specific
character within a string 1st character has index of 0 if character not found, returns –1 (minus)
hisEmail = "[email protected]";at = hisEmail.indexOf('@'); // at = ?? can do this in Excel
too
![Page 15: CIS 234: Strings (click, scroll down)Strings Dr. Ralph D. Westfall April, 2010](https://reader035.vdocuments.site/reader035/viewer/2022062407/56649e225503460f94b0fa3f/html5/thumbnails/15.jpg)
String charAt Method returns character at offset
(integer) provided in argument
String twoName = "Lidia Papadakis";char firstLetter = twoName.charAt(0);char secondLetter =
twoName.charAt(1);
![Page 16: CIS 234: Strings (click, scroll down)Strings Dr. Ralph D. Westfall April, 2010](https://reader035.vdocuments.site/reader035/viewer/2022062407/56649e225503460f94b0fa3f/html5/thumbnails/16.jpg)
Practice
fourthName = "Hsing-Chen";num = fourthName.length(); // num = ?num2 = fourthName.indexOf ('i'); //num2
= ?myChar = fourthName.charAt(4);
//myChar= ?
![Page 17: CIS 234: Strings (click, scroll down)Strings Dr. Ralph D. Westfall April, 2010](https://reader035.vdocuments.site/reader035/viewer/2022062407/56649e225503460f94b0fa3f/html5/thumbnails/17.jpg)
startsWith, endsWith Methods compare start or end of string with
another string value return true or false
aString = "vegetate";test1 = aString.startsWith("b"); // ??test2 = aString.endsWith("ate"); // ??
![Page 18: CIS 234: Strings (click, scroll down)Strings Dr. Ralph D. Westfall April, 2010](https://reader035.vdocuments.site/reader035/viewer/2022062407/56649e225503460f94b0fa3f/html5/thumbnails/18.jpg)
String replace Method replaces all occurrences of 1
character with another cf. "Replace all" in Word, Excel, etc.
arguments are character to find, character to replace it withoneString = "some hot";twoString = oneString.replace('o', 'a');// twoString = ?
![Page 19: CIS 234: Strings (click, scroll down)Strings Dr. Ralph D. Westfall April, 2010](https://reader035.vdocuments.site/reader035/viewer/2022062407/56649e225503460f94b0fa3f/html5/thumbnails/19.jpg)
String substring Method returns part of another string arguments are starting position
(offset) and "boundary" position (end +1)oneString = "separate";twoString = oneString.substring(3, 7);// twoString = ?
//notes on slides 8 to 18
![Page 20: CIS 234: Strings (click, scroll down)Strings Dr. Ralph D. Westfall April, 2010](https://reader035.vdocuments.site/reader035/viewer/2022062407/56649e225503460f94b0fa3f/html5/thumbnails/20.jpg)
String Class Case Methods toUpperCase converts to capital
lettersaName = aName.toUpperCase(); used for "shouting" in Mouth class
toLowerCase converts to lower case used for "quiet" in Mouth class
Makes it possible to ignore case of inputs Makes ANA the same as Ana and ana
![Page 21: CIS 234: Strings (click, scroll down)Strings Dr. Ralph D. Westfall April, 2010](https://reader035.vdocuments.site/reader035/viewer/2022062407/56649e225503460f94b0fa3f/html5/thumbnails/21.jpg)
Numbers to Strings toString converts other data types
to stringslong bigNum = 1234243342;strBigNum = toString(bigNum);
// stringBigNum = "1234243342"
![Page 22: CIS 234: Strings (click, scroll down)Strings Dr. Ralph D. Westfall April, 2010](https://reader035.vdocuments.site/reader035/viewer/2022062407/56649e225503460f94b0fa3f/html5/thumbnails/22.jpg)
Strings to Numbers use data type "wrapper" class methods
wrapper classes make it possible to treat "primitive" data types like they were classes
int num = Integer.parseInt("135"); Integer class is wrapper for int data typedouble dNum = Double.valueOf("1.2343"); Double class is double data type wrapper
![Page 23: CIS 234: Strings (click, scroll down)Strings Dr. Ralph D. Westfall April, 2010](https://reader035.vdocuments.site/reader035/viewer/2022062407/56649e225503460f94b0fa3f/html5/thumbnails/23.jpg)
Review Questions only alphabetical letters can be in
Strings, not numerical ones: T or F? Strings are primitive variables: T or
F? why is the s capitalized in String?
where else are first letters capitalized? what punctuation marks enclose
values in a String?
![Page 24: CIS 234: Strings (click, scroll down)Strings Dr. Ralph D. Westfall April, 2010](https://reader035.vdocuments.site/reader035/viewer/2022062407/56649e225503460f94b0fa3f/html5/thumbnails/24.jpg)
Review Questions - 2 what is the recommended way to
check if two Strings are equal? int distance = ("J".compareTo("Lo")); how do we find the length of a String? how do we pick out parts of a String?
what are the arguments we need for this? who is richer—Scrooge McDuck or
Flintheart Glomgold—and why? (artist)
![Page 25: CIS 234: Strings (click, scroll down)Strings Dr. Ralph D. Westfall April, 2010](https://reader035.vdocuments.site/reader035/viewer/2022062407/56649e225503460f94b0fa3f/html5/thumbnails/25.jpg)
Appendix 1: StringBuffer Class problems with String class
every time you change a string's value, Java creates a new string
the length of a string is set when it is created, and can't be changed
StringBuffer class deals with these problems stored in same place, size can increase
![Page 26: CIS 234: Strings (click, scroll down)Strings Dr. Ralph D. Westfall April, 2010](https://reader035.vdocuments.site/reader035/viewer/2022062407/56649e225503460f94b0fa3f/html5/thumbnails/26.jpg)
StringBuffer Constructors 3 constructors (note signatures)
StringBuffer() creates an empty StringBuffer object with space for 16 characters
StringBuffer(int length) new object has space for # of characters in argument
StringBuffer(String s) creates object with string s characters plus space for 16 more
![Page 27: CIS 234: Strings (click, scroll down)Strings Dr. Ralph D. Westfall April, 2010](https://reader035.vdocuments.site/reader035/viewer/2022062407/56649e225503460f94b0fa3f/html5/thumbnails/27.jpg)
StringBuffer Methods append method adds new string to
end of previous one insert method puts characters in
between existing characters, starting at specified location
for both, if not enough space, Java will automatically expand the buffer object
![Page 28: CIS 234: Strings (click, scroll down)Strings Dr. Ralph D. Westfall April, 2010](https://reader035.vdocuments.site/reader035/viewer/2022062407/56649e225503460f94b0fa3f/html5/thumbnails/28.jpg)
Appendix 2: Inputting #s > 9
// (declarations omitted)newChar = (char) System.in.read();while (newChar >= '0' && newChar <= '9'){
inString = inString + newChar; // "adding" newChar = (char)System.in.read();}inNum = Integer.parseInt(inString);
![Page 29: CIS 234: Strings (click, scroll down)Strings Dr. Ralph D. Westfall April, 2010](https://reader035.vdocuments.site/reader035/viewer/2022062407/56649e225503460f94b0fa3f/html5/thumbnails/29.jpg)
Questions re Previous Slide why does code input newChar
before loop starts? why does code input newChar after
adding newChar to inString? what happens when user hits Enter
key?