04 Ch2 Using Objects

Embed Size (px)

DESCRIPTION

,

Citation preview

  • 1Using Objects

    Chapter 2 (part 2 of 2)Spring 2007CS 101Aaron Bloomfield

  • 2Values versus objects Numbers Have values but they do not have behaviors In particular, each has only ONE value (or attribute)

    Objects Have attributes and behaviors An object can have multiple values (or attributes)

  • 3Using objects First, we create an object: Scanner stdin = new Scanner (System.in);

    Most object creation lines look like this

    Then we use the object stdin.nextInt(); stdin.nextDouble();

    Note that we could have called the object foo, bar, or anything stdin is just what we chose to call it

  • 4Using Rectangle objects Lets create some Rectangle objects

    Rectangle creation: Rectangle r = new Rectangle (10, 20);

    Objects have attributes (or properties): System.out.println (r.width); System.out.println (r.height);

    Objects have behaviors (or methods): r.grow (10, 20); r.isEmpty(); r.setLocation (5,4);

  • 5Using String objects Lets create some String objects

    String creation: String s = new String (Hello world);

    Objects have attributes (or properties): But we cant access them

    Objects have behaviors (or methods): s.substring(0,6); s.indexOf (world); s.toLowerCase();

  • 6The lowdown on objects Objects are things that have properties (attributes) and

    behaviors (methods)

    We first create one or more objects

    We then manipulate their properties and call their methods

  • 7So why bother with objects? Lets say you want to do a lot of String manipulation

    Once you create a String object, all the manipulation methods are contained therein Sun already wrote the methods for us

    So we can use String objects instead of writing our own code to get the substring, indexOf, etc.

  • 8More on Strings Strings are used very often

    As a shortcut, you can use: String s = Hello world;instead of: String s = new String (Hello world);

    Its just a shortcut that Java allows

    The two lines are almost the same There is a minor difference between the two Which well get to later

  • 9Visualizing objects

    Class (type) name

    Attributes (properties)

    Methods (behaviors)+ grow (int, int) : void+ isEmpty ( ) : void+ setLocation ( int, int ) : void+ resize ( int, int ) : void+ ...

    Rectangle

    - width = 10- height = 20- ...

  • 1010

    For ValentineFor Valentines Days Day

  • 1111

    Bittersweets: Dejected sayingsBittersweets: Dejected sayings

    I MISS MY EXI MISS MY EX PEAKED AT 17PEAKED AT 17 MAIL ORDERMAIL ORDER TABLE FOR 1TABLE FOR 1 I CRY ON QI CRY ON Q U C MY BLOG?U C MY BLOG? REJECT PILEREJECT PILE PILLOW HUGGINPILLOW HUGGIN

    ASYLUM BOUNDASYLUM BOUND DIGNITY FREEDIGNITY FREE PROG FANPROG FAN STATIC CLINGSTATIC CLING WE HAD PLANSWE HAD PLANS XANADU 2NITEXANADU 2NITE SETTLE 4LESSSETTLE 4LESS NOT AGAIN NOT AGAIN

  • 1212

    Bittersweets: Dysfunctional sayingsBittersweets: Dysfunctional sayings

    RUMORS TRUERUMORS TRUE PRENUP OKAY?PRENUP OKAY? HE CAN LISTENHE CAN LISTEN GAME ON TVGAME ON TV CALL A 900#CALL A 900# P.S. I LUV MEP.S. I LUV ME DO MY DISHESDO MY DISHES UWATCH CMT UWATCH CMT

    PAROLE IS UP!PAROLE IS UP! BE MY YOKOBE MY YOKO U+ME=GRIEFU+ME=GRIEF I WANT HALFI WANT HALF RETURN 2 PITRETURN 2 PIT NOT MY MOMMYNOT MY MOMMY BE MY PRISONBE MY PRISON C THAT DOOR? C THAT DOOR?

  • 13

    Review Variables of primitive types int, double, char, boolean, etc. Can assign a value to it Can read a value from it Cant do much else!

    Objects String, Rectangle, etc. Have many parts Rectangle has width, length, etc.

    Like a complex type Have methods String has length(), substring(), etc.

  • 14

    String methods

    length(): returns the Strings length (duh!)

    String s = hello world;

    String t = goodbye;

    System.out.println (s.length());

    System.out.println (t.length());

    Prints 11 and 7

    Note that calling s.length() is different than calling t.length()! Both return the length But of different Strings

  • 15

    More String methods Consider

    String weddingDate = "August 21, 1976";

    String month = weddingDate.substring(0, 6);

    System.out.println("Month is " + month + ".");

    What is the output?Month is August.

  • 16

    More String methods Consider

    String fruit = "banana";

    String searchString = "an";

    int n1 = fruit.indexOf(searchString, 0);

    int n2 = fruit.indexOf(searchString, n1 + 1);

    int n3 = fruit.indexOf(searchString, n2 + 1);

    System.out.println("First search: " + n1);

    System.out.println("Second search: " + n2);

    System.out.println("Third search: " + n3);

    What is the output?First search: 1

    Second search: 3

    Third search: -1

  • 1717

    String program examplesString program examples

  • 18

    Program WordLength.javapublic class WordLength {

    public static void main(String[] args) {

    Scanner stdin = new Scanner(System.in);

    System.out.print("Enter a word: ");

    String word = stdin.next();

    int wordLength = word.length();

    System.out.println("Word " + word + " has length "

    + wordLength + ".");

    }

    }

  • 1919

    Program demoProgram demo

    WordLength.javaWordLength.java

  • 2020

    MedicineMedicine PhysicsPhysics Public HealthPublic Health

    ChemistryChemistry EngineeringEngineering LiteratureLiterature PsychologyPsychology

    EconomicsEconomics PeacePeace

    BiologyBiology

    The 2004 The 2004 IgIg Nobel PrizesNobel Prizes"The Effect of Country Music on Suicide."The Effect of Country Music on Suicide.For explaining the dynamics of hulaFor explaining the dynamics of hula--hoopinghoopingInvestigating the scientific validity of the FiveInvestigating the scientific validity of the Five--

    Second RuleSecond RuleThe CocaThe Coca--Cola Company of Great BritainCola Company of Great BritainFor the patent of the For the patent of the combovercomboverThe American Nudist Research LibraryThe American Nudist Research LibraryItIts easy to overlook things s easy to overlook things even a man in a even a man in a

    gorilla suit.gorilla suit.The Vatican, for outsourcing prayers to IndiaThe Vatican, for outsourcing prayers to IndiaThe invention of karaoke, thereby providing an The invention of karaoke, thereby providing an

    entirely new way for people to learn to tolerate entirely new way for people to learn to tolerate each othereach other

    For showing that herrings apparently communicate For showing that herrings apparently communicate by fartingby farting

  • 21

    More String methods

    trim() Returns the String without leading and trailing whitespace Whitespace is a space, tab, or return

  • 22

    DateTranslation.java Goal: to translate the date from American format to standard format

    // Convert user-specified date from American to standard format

    import java.util.*;

    class DateTranslation {

    // main(): application entry pointstatic public void main(String args[]) {

    // produce a legend (Step 1) // prompt the user for a date in American format (Step 2) // acquire the input entered by the user (Step 3) // echo the input back (Step 4) // get month entered by the user (Step 5) // get day entered by the user (Step 6) // get year entered by the user (Step 7) // create standard format version of input (Step 8) // display the translation (Step 9)

    }}

  • 2323

    Program demoProgram demo

    DateTranslation.javaDateTranslation.java

  • 2424

    TodayTodays s demotivatorsdemotivators

  • 2525

    Classes vs. ObjectsClasses vs. Objects

  • 26

    Variables vs. Types The type is the recipe or template for how to create a variable

    Examples: int, double, char, boolean, etc. There are only 8 primitive types

    There are only a few things you can do with a type: Declare a variable int x;

    Use it as a cast x = (int) 3.5;

    There is only one of each type

    The variable is the actual instance of a type in memory Its a spot in memory where you store a value You choose the name: width, x, thatThemThereValue, etc. You can have as may variables as you want but only one of

    each type!

    Like the difference between a recipe and a bunch of cookies

  • 27

    Classes vs. Objects A class is a user-defined thing Examples: String, Scanner, Rectangle, etc. Well start defining our own classes later this semester

    Classes are more complex than the primitive types A class is analogous to a type Its just more complex and user-defined

    There can be only one class of each name

    An object is an instance of a class There is only one String class, but you can have 100

    String objects A object is analogous to a variable

    A class is a template used for creating objects

  • 28

    More on classes vs. objects

  • 2929

    Lots of Lots of piercingspiercings

    This may be a bit disturbingThis may be a bit disturbing

  • 3030

    ReferencesReferences

  • 31

    Java and variables Consider:

    int x = 7;

    double d;

    char c = x;

    The variable name is the actual spot in memory where the value is stored

    Note that d does not have a value

    7

    int x

    -

    double d

    x

    char c

  • 32

    What is a reference A reference is a memory address

    References are like pointers in C/C++ But they are not the exact same thing! C++ has references also (in addition to pointers) You may hear me call them pointers instead of references

    All objects in Java are declared as references

  • 33

    References 1 Consider:

    int j = 5;

    String s = Hello world;

    Java translates that last line into:String s = new String (Hello world);

    (Not really, but close enough for now)

    Note that there is no new here

  • 34

    0x0d4fe1a8

    Whats happening in memoryint j = 5;

    String s = Hello world;

    Primitive types are never references; only objects

    References 2

    5

    int j

    Hello world

    String s

    Takes up 32 bits(4 bytes) of memory Takes up 32 bits

    (4 bytes) of memory

    Takes up 12 bytes of memory

    At memory location 0x0d4fe1a8

    int j = 5;

    String s = Hello world;

  • 35

    Representation

    message

    + length () : int+ charAt ( int i ) : char+ subString ( int m, int n ) : String+ indexOf ( String s, int m ) : int+ ...

    String

    - text = "Don't look behind the door!"- length = 27- ...

    Statementsint peasPerPod = 8;

    String message = "Don't look behind the door!

    peasPerPod 8

  • 36

    Representation

    s

    + length () : int+ charAt ( int i ) : char+ subString ( int m, int n ) : String+ indexOf ( String s, int m ) : int+ ...

    String

    - text = I love CS 101"- length = 13- ...

    String s = I love CS 101;int l = s.length();char c = s.charAt (3);String t = s.subString(1,2);int t = s.indexOf (t, 0);

    A period means follow the reference

  • 37

    Shorthand represntation Consider:

    String s = Hello world;

    Takes up a lot of space on my slides

    So well use a shorthand representation:

    s

    + length () : int+ charAt ( int i ) : char+ subString ( int m, int n ) : String+ indexOf ( String s, int m ) : int+ ...

    String

    - text = Hello world"- length = 11- ...

    Hello world"s

  • 38

    Examples Consider

    String a = "excellence;

    String b = a;

    What is the representation?

    "excellence"a

    b

  • 39

    Consider:String s1 = first string;

    String s2 = second string;

    s2 = s1;

    System.out.println (s2);

    first string

    References 3

    String s1

    String s2

    second string

    What happensto this?

    String s1 = first string;

    String s2 = second string;

    s2 = s1;

    System.out.println (s2);

  • 40

    Javas garbage collection If an object in memory does not have a reference pointing to

    it, Java will automagically delete the object

    This is really cool!

    In C/C++, you had to do this by yourself

  • 4141

    An optical illusionAn optical illusion

  • 4242

    The null referenceThe null reference

  • 43

    Uninitialized versus null Consider

    String dayOfWeek;

    Scanner inStream;

    What is the representation?

    -dayOfWeek

    -inStream

  • 44

    Uninitialized versus null Consider

    String fontName = null;

    Scanner fileStream = null;

    What is the representation?

    nullfontName

    nullfileStream

    fontName

    fileStreamOR

  • 45

    The null reference Sometimes you want a reference to point to nothing

    Use the null reference:String s = null;

    The null reference is equivalent to a memory address of zero (0x00000000) No user program can exist there

  • 46

    The null reference Consider:

    String s = Hello world;

    System.out.println (s.length());

    What happens?

    Java prints out 11

    s

    + length () : int+ charAt ( int i ) : char+ subString ( int m, int n ) : String+ indexOf ( String s, int m ) : int+ ...

    String

    - text = Hello world"- length = 11- ...

  • 47

    The null reference Consider:

    String s = null;

    System.out.println (s.length());

    This is called accessing (or following) a null pointer/reference

    What happens? Java: java.lang.NullPointerException C/C++: Segmentation fault (core dumped) Windows:

  • 4848

    What happens in WindowsWhat happens in Windows

  • 49

    So what is a null reference good for?

    Lets say you had a method that returned a String when passed some parameters Normally it returns a valid String

    But what if it cant? How to deal with that?

    Return a null reference

  • 50

    References and memory Most modern computers are 32-bit computers This means that a reference takes up 32 bits 232 = 4 Gb

    This means that a 32-bit machine cannot access more than 4 Gb of memory! Well, without doing some tricks, at least Most machines come with 1 Gb memory these days Will come with 4 Gb in a year or so

    64-bit machines will have a maximum of 16 exabytes of memory Giga, Tera, Peta, Exa Thats 16 billion Gb!

  • 5151

    Beware!!!Beware!!!

  • 5252

    Using object examplesUsing object examples

  • 53

    Assignment Consider

    String word1 = "luminous";

    String word2 = "graceful";

    word1 = word2;

    Initial representation

    Garbage collection

    time!

    "luminous"word1

    "graceful"word2

  • 54

    Using objects Consider

    Scanner stdin = new Scanner(System.in);

    System.out.print("Enter your account name: ");

    String response = stdin.next();

    Suppose the user interaction isEnter your account name: artiste

    Scanner:stdin

    "artiste"reponse

  • 55

    String representation Consider String alphabet = "abcdefghijklmnopqrstuvwxyz";

    Standard shorthand representation

    Truer representation

    alphabet

    a b c d e f g h i j k l m n o p q r s t u v w y z

    "abcdefghijklmnopqrstuvwxyz"alphabet

  • 56

    String representation Consider String alphabet = "abcdefghijklmnopqrstuvwxyz"; char c1 = alphabet.charAt(9); char c2 = alphabet.charAt(15); char c3 = alphabet.charAt(2);

    What are the values of c1, c2, and c3? Why?

    'j'c1

    'p'c2

    'c'c3

    "abcdefghijklmnopqrstuvwxyz"alphabet

  • 57

    Considerint v1 = -12;double v2 = 3.14;char v3 = 'a';String s1 = String.valueOf(v1);String s2 = String.valueOf(v2);String s3 = String.valueOf(v3);

    int v1 = -12;double v2 = 3.14;char v3 = 'a';String s1 = String.valueOf(v1);String s2 = String.valueOf(v2);String s3 = String.valueOf(v3);

    More String methods

    "-12"s1

    "3.14"s2

    "a"s3

    v1 -12

    v2 3.14

    v3 a

  • 58

    Final variables Consider

    final String POEM_TITLE = Appearance of Brown";

    final String WARNING = Weather ball is black";

    What is the representation?

    "Appearance of Brown"POEM_TITLE

    "Weather ball is black"WARNING

    The locks indicat e t he memory locat ions holds const ant s

  • 59

    Final variables Consider

    final String LANGUAGE = "Java";

    The reference cannot bemodified once it is

    established

    "Java"LANGUAGE

  • 6060

    TodayTodays s demotivatorsdemotivators

  • 61

    Rectangle

    3x

    4y

    Rectangle:

    5width

    height 2

    r5

    2(3, 4)

    The dimensions ofthe new Rectangle

    The upper-left-handcorner of the new Rectangle

    int x = 3;int y = 4;int width = 5;int height = 2;Rectangle r = new Rectangle(x, y, width, height);

  • 62

    Considerfinal Rectangle BLOCK = new Rectangle(6, 9, 4, 2);

    BLOCK.setLocation(1, 4);

    BLOCK.resize(8, 3);

    final Rectangle BLOCK = new Rectangle(6, 9, 4, 2);

    BLOCK.setLocation(1, 4);

    BLOCK.resize(8, 3);

    Rectangle

    Rectangle:BLOCK4

    2(6, 9)

    Rectangle:BLOCK8

    3(1, 4)

  • 63

    s

    t

    u

    Consider:String s = "Halloween";

    String t = "Groundhog Day";

    String u = "May Day";

    String v = s.substring(0,6);

    int x = t.indexOf ("Day", 0);

    int y = u.indexOf ("Day");

    s = t;

    u = null;

    + length () : int+ subString ( int m, int n ) : String+ indexOf ( String s, int m ) : int+ indexOf ( String s ) : int+ ...

    String

    - ...

    String method usage

    String s = "Halloween";

    String t = "Groundhog Day";

    String u = "May Day";

    String v = s.substring(0,6);

    int x = t.indexOf ("Day", 0);

    int y = u.indexOf ("Day");

    s = t;

    u = null;

    Groundhog Day"

    May Day"

    - text = Halloween"- length = 9

    Halloween"

    - text = Groundhog Day"- length = 13- text = May Day"- length = 7

    x 10 y 4

    Hallow"

    v

  • 64

    s

    t

    u

    Consider:String s = "Halloween";

    String t = "Groundhog Day";

    final String u = "May Day";

    String v = s.substring(0,6);

    int x = t.indexOf ("Day", 0);

    int y = u.indexOf ("Day");

    s = t;

    u = null;

    String method usage

    Groundhog Day"

    May Day"

    Halloween"

    x 10 y 4

    Hallow"

    v

    s = t;

    u = null; Java error:Java error:cannot assign a cannot assign a value to final value to final

    variable uvariable u

  • 65

    Consider:

    Rectangle r = new Rectangle();

    final Rectangle s = new

    Rectangle (3, 4, 1, 2);

    r.setWidth(5);

    r.setHeight(6);

    s.setWidth (7);

    r = new Rectangle (10,11,8,9);

    s = new Rectangle (12,13,14,15);

    Rectangle r = new Rectangle();

    final Rectangle s = new

    Rectangle (3, 4, 1, 2);

    r.setWidth(5);

    r.setHeight(6);

    s.setWidth (7);

    r = new Rectangle (10,11,8,9);

    s = new Rectangle (12,13,14,15);

    s

    Rectangle method usage

    r

    + setWidth ( int w )+ setHeight ( int wh )+ setX ( int x )+ setY ( int y )+ ...

    Rectangle

    + setWidth ( int w )+ setHeight ( int wh )+ setX ( int x )+ setY ( int y )+ ...

    Rectangle

    - width = 7- height = 2

    - x = 3- y = 4

    tWidth ( i t )

    Rectangle

    - width = 8- height = 9

    - x = 10- y = 11

    - width = 1- height = 2

    - x = 3- y = 4

    - width = 0- height = 0

    - x = 0- y = 0

    - width = 5- height = 0

    - x = 0- y = 0

    - width = 5- height = 6

    - x = 0- y = 0

  • 66

    Scanner review To initialize a Scanner object: Scanner stdin = new Scanner (System.in); Scanner stdin = Scanner.create (System.in); This one will not work!

    To read an int from the keyboard: stdin.nextInt();

    To read a double from the keyboard: stdin.nextDouble();

    To read a String from the keyboard: stdin.next();

  • 67

    Scanner usage examples Consider:

    Scanner stdin = new Scanner (System.in);

    int x = stdin.nextInt();

    double d = stdin.nextDouble();

    String s = stdin.next();

    Scanner:stdin

    hello worlds

    d 3.5x 5

    Scanner stdin = new Scanner (System.in);

    int x = stdin.nextInt();

    double d = stdin.nextDouble();

    String s = stdin.next();

  • 6868

    BiologyBiology

    PhysicsPhysics

    InterdisciplinaryInterdisciplinary ChemistryChemistry MathematicsMathematics LiteratureLiterature

    PeacePeace

    HygieneHygiene EconomicsEconomics

    MedicineMedicine

    Courtship behavior of ostriches towards humans underCourtship behavior of ostriches towards humans under

    Demonstration of tDemonstration of t

    A comprehensive study of human belly button lintA comprehensive study of human belly button lintCreating a fourCreating a fourEstimation of the surface area of African elephantsEstimation of the surface area of African elephantsThe effects of preThe effects of pre

    For creating BFor creating B

    For creating a washing machine for cats and dogsFor creating a washing machine for cats and dogsEnron et. al. for applying Enron et. al. for applying

    (m(m

    The 2002 The 2002 IgIg Nobel PrizesNobel Prizes

    farming conditions in Britainfarming conditions in Britainhe exponential decay law using beer he exponential decay law using beer

    frothfroth

    --legged periodic tablelegged periodic table

    --existing inappropriate highlighting on existing inappropriate highlighting on reading comprehensionreading comprehension

    owow--lingual, a computerized doglingual, a computerized dog--toto--human human translation devicetranslation device

    imaginary numbers to the imaginary numbers to the business worldbusiness worldale) asymmetry in man in ancient sculptureale) asymmetry in man in ancient sculpture

  • 6969

    OverloadingOverloading

  • 70

    Overloading Consider the + operator It can mean integer addition: 3+5 = 8 It can mean floating-point addition: 3.0+5.0 = 8.0 It can mean string concatenation: foo + bar =

    foobar

    The + operator has multiple things it can do a.k.a. the + operator is overloaded

  • 71

    More on overloading Weve seen a number of methods In the String class: substring(), charAt(), indexOf(), etc. In the Rectangle class: setLocation(), translate()

    Consider the substring() method in the String class One version: s.substring(3) This will return a string from the 4th character on

    Another version: s.substring (3,6) This version will return a string from the character at

    index 3 up to (but not including!) the character at index 6

    There are multiple versions of the same method Differentiated by their parameter list

    The substring method can take one OR two parameters This is called overloading

  • 72

    More on more on overloading Consider the valueOf() method in the String class String.valueOf (3) The parameter is an int

    String.valueOf (3.5) The parameter is a double

    String.valueOf (3) The parameter is a char

    There are multiple versions of this method Differentiated by their parameter list Thus, the valueOf() method is overloaded

  • 7373

    More on methodsMore on methods

  • 74

    Accessors Some methods allow us to find out information about an

    object In the Rectangle class: getWidth(), getHeight() These methods are called accessors They allow us to access attributes of the object

    An accessor is a method that allows us to find out attributes of object

    Usually start with get in the method name I wont use this terminology much, but the book uses it

  • 75

    MutatorsSome methods allow us to set information about the object In the Rectangle class: setLocation(), setBounds() These methods are called mutators They allow us to change (or mutate) the attributes of

    an object A mutator is a method that allows us to set attributes of

    object Usually start with set in the method name I wont use this terminology much, but the book uses it

  • 76

    Constructors A constructor is a special method called ONLY when you are

    creating (or constructing) and object The name of the constructor is ALWAYS the exact same

    name as the class

    Scanner stdin = new Scanner (System.in); String foo = new String (hello world);

    There can be overloaded constructors Rectangle r = new Rectangle(); Rectangle s = new Rectangle (1, 2, 3, 4);

  • 77

    Calling the Circle constructor To create a Circle object:

    Circle c1 = new Circle();

    This does four things: Creates the c1 reference Creates the Circle object Makes the c1 reference point

    to the Circle object Calls the constructor with no

    parameters (the defaultconstructor)

    The constructor is always the first method called when creating (or constructing) an object

    c1

    Circle

    - radius = 0.0- PI = 3.14159-

    + Circle()+ Circle (double r)+

  • 78

    Calling the Circle constructor To create a Circle object:

    Circle c1 = new Circle(2.0);

    This does four things: Creates the c1 reference Creates the Circle object Makes the c1 reference point

    to the Circle object Calls the constructor with 1

    double parameters (the specificconstructor)

    The constructor is always the first method called when creating (or constructing) an object

    c1

    Circle

    - radius = 0.0- PI = 3.14159-

    + Circle()+ Circle (double r)+

    Circle

    - radius = 2.0- PI = 3.14159-

    + Circle()+ Circle (double r)+

  • 79

    Constructor varieties The default constructor usually sets the attributes of an

    object to default values But thats not why its called default (well get to that

    later) The default constructor ALWAYS takes in zero parameters Thus, there can be only one

    A specific constructor sets the attributes of the object to the passed values Well get to why its called a specific constructor later The specific constructor takes in one or more parameters There can be more than one (via overloading)

  • 80

    Method types review With the exception of constructors, these names are purely

    for human categorization

    Accessor: allows one to access parts of the object Mutator: allows one to change (mutate) a part of an object Constructor: used to create a object Default constructor: takes in no parameters Specific constructor: takes in one or more parameters

    Facilitator Any method that is not one of the above

  • 8181

    Java documentationJava documentation

  • 82

    Java documentation

  • 83

    Java packages Group similar classes together

    Packages we will use: java.lang: automatically imported by Java Contains the clases needed by the Java language

    java.util: contains Scanner, Vector, etc. Contains various utility classes

    java.text: we will use it later in the semester Contains classes used to manipulate text

    Any package (other than java.lang) must be imported to use the classes within it

  • 8484

    TodayTodays s demotivatorsdemotivators

  • 8585

    Example: last semesterExample: last semesters HW J2s HW J2

  • 86

    A previous semesters HW 2 Found online at

    http://www.cs.virginia.edu/~asb/teaching/cs101-fall05/hws/hwj2/index.html The HW listed 10 steps to be performed

    Used the StringBuffer class Which can be found at

    http://java.sun.com/j2se/1.5.0/docs/api/java/lang/StringBuffer.html

    Strings are immutable Meaning that once you create a String, you can never

    change it There are no mutator methods

    You can change what the String reference points to, but not the String itself

  • 87

    Preliminariesimport java.util.*;

    public class StringBufferManipulator {

    public static void main (String args[]) {

    // Preliminaries

    System.out.println ("StringBuffer manipulator\n");

    Scanner stdin = new Scanner (System.in);

    // Code for steps 1 to 10 will go here

    }

    }

  • 88

    Step 1 The user needs to enter two strings: one long string (say, 10

    or so characters at a minimum) and a shorter string that is contained within the longer string. This input should be obtained via the nextLine() method,

    as using the next() method will not read in a string that contains spaces.

    // Step 1

    System.out.println ("Enter a long string");

    String longString = stdin.nextLine();

    System.out.print ("\nEnter a shorter string within );

    System.out.println (the long string");

    String shortString = stdin.nextLine();

    System.out.println ();

  • 89

    Step 2 Create a StringBuffer object from the longer string -- this is

    the StringBuffer that you will manipulate for the rest of the homework. There are two ways to do this: create a default constructred StringBuffer, and append() the long string to that, or use the StringBuffer with the appropriate specific constructor.

    // Step 2

    StringBuffer buffer = new StringBuffer(longString);

  • 90

    Step 3 Include, as a comment in your program, the code for creating

    the StringBuffer in the other way from step 2.

    // Step 3

    // StringBuffer buffer = new StringBuffer();

    // buffer.append(longString();

  • 91

    Step 4 Find the position of the small string within the StringBuffer,

    and save that position.

    // Step 4

    int pos = buffer.indexOf(shortString);

  • 92

    Step 5 Delete the small string from the StringBuffer, and print out

    the result.

    // Step 5

    int shortLength = shortString.length();

    buffer.delete (pos, pos+shortLength);

    System.out.println (buffer);

  • 93

    Step 6 Insert "CS101" into the position of the StringBuffer where the

    small string was originally found (from step 3), and print out the result

    // Step 6

    buffer.insert (pos, "CS101");

    System.out.println (buffer);

  • 94

    Step 7 Remove the last word from the string. You can assume that

    everything from the last space (found via lastIndexOf()) to the end of the String is the last word. Print out the result.

    // Step 7

    pos = buffer.lastIndexOf(" ");

    int bufferLength = buffer.length();

    buffer.delete(pos, bufferLength);

    System.out.println (buffer);

  • 95

    Step 8 Append " rocks" to the end of the StringBuffer, and print out

    the result. Note that there is a space before the work 'rocks'.

    // Step 8

    buffer.append (" rocks");

    System.out.println (buffer);

  • 96

    Step 9 Delete the character at position n/2, where n is the length of

    the StringBuffer. Print out the result.

    // Step 9

    int n = buffer.length();

    buffer.deleteCharAt (n/2);

    System.out.println (buffer);

  • 97

    Step 10 Reverse the StringBuffer, and print out the result.

    // Step 10

    buffer.reverse();

    System.out.println (buffer);

  • 9898

    Program demoProgram demo

    StringBufferManipulator.javaStringBufferManipulator.java

  • 9999

    A bit of humorA bit of humor

    Using ObjectsValues versus objectsUsing objectsUsing Rectangle objectsUsing String objectsThe lowdown on objectsSo why bother with objects?More on StringsVisualizing objectsFor Valentines DayBittersweets: Dejected sayingsBittersweets: Dysfunctional sayingsReviewString methodsMore String methodsMore String methodsString program examplesProgram WordLength.javaProgram demoThe 2004 Ig Nobel PrizesMore String methodsDateTranslation.javaProgram demoTodays demotivatorsClasses vs. ObjectsVariables vs. TypesClasses vs. ObjectsMore on classes vs. objectsLots of piercingsReferencesJava and variablesWhat is a referenceReferences 1References 2RepresentationRepresentationShorthand represntationExamplesReferences 3Javas garbage collectionAn optical illusionThe null referenceUninitialized versus nullUninitialized versus nullThe null referenceThe null referenceThe null referenceWhat happens in WindowsSo what is a null reference good for?References and memoryBeware!!!Using object examplesAssignmentUsing objectsString representationString representationMore String methodsFinal variablesFinal variablesTodays demotivatorsRectangleRectangleString method usageString method usageRectangle method usageScanner reviewScanner usage examplesThe 2002 Ig Nobel PrizesOverloadingOverloadingMore on overloadingMore on more on overloadingMore on methodsAccessorsMutatorsConstructorsCalling the Circle constructorCalling the Circle constructorConstructor varietiesMethod types reviewJava documentationJava documentationJava packagesTodays demotivatorsExample: last semesters HW J2A previous semesters HW 2PreliminariesStep 1Step 2Step 3Step 4Step 5Step 6Step 7Step 8Step 9Step 10Program demoA bit of humor