1 / 56

Using Objects

Using Objects. Chapter 3 Spring 2005 CS 101 Aaron Bloomfield. About the assignment statement. Assign the value 5 to the variable x int x; x = 5; 5 = x; NOT VALID! This is not a mathematical equals It’s a Java assignment The variable you want to copy the value to MUST be on the left

henrietta
Download Presentation

Using Objects

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Using Objects Chapter 3 Spring 2005 CS 101 Aaron Bloomfield

  2. About the assignment statement • Assign the value 5 to the variable x • int x; • x = 5; • 5 = x; NOT VALID! • This is not a mathematical equals • It’s a Java assignment • The variable you want to copy the value to MUST be on the left • The value you want to copy MUST be on the right • Assignment copies the value on the right to the variable on the left

  3. Getting classy • Purpose of this chapter • Gain experience creating and manipulating objects from the standard Java types • Why • Prepares you for defining your own classes and creating and manipulating the objects of those classes

  4. Values versus objects • Numbers • Have values but they do not have behaviors • Objects • Have attributes and behaviors • System.in • References an InputStream • Attribute: keyboard • Behaviors: reading • System.out • References an OutputStream • Attribute: monitor • Behaviors: printing

  5. int x double d char c 7 - ‘x’ 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

  6. 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 her me call them pointers instead of references • All objects in Java are declared as references

  7. 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 this lecture) Note that there is no “new” here

  8. 0x0d4fe1a8 int j Hello world 5 References 2 int j = 5; String s = “Hello world”; • What’s happening in memory int j = 5; String s = “Hello world”; • Primitive types are never references; only objects String s Takes up 32 bits (4 bytes) of memory Takes up 32 bits (4 bytes) of memory At memory location 0x0d4fe1a8 Takes up 12 bytes of memory

  9. Quick survey • I understand those slides on references… • I think so • I need some more review • Not really • Reference what?

  10. An old prediction of the future…

  11. Other Java object types • String • Rectangle • Color • JFrame

  12. peasPerPod message String - text = "Don't look behind the door!" - length = 27 - ... + length () : int + charAt ( int i ) : char + subString ( int m, int n ) : String + indexOf ( String s, int m ) : int + ... Representation • Statements int peasPerPod = 8; String message = "Don't look behind the door!“

  13. message String - text = "Don't look behind the door!" - length = 27 - ... + length () : int + charAt ( int i ) : char + subString ( int m, int n ) : String + indexOf ( String s, int m ) : int + ... Representation 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);

  14. Shorthand representation • Statements int peasPerPod = 8; String message = "Don't look behind the door!“

  15. Examples • Consider String a = "excellence“; String b = a; • What is the representation?

  16. Uninitialized versus null • Consider String dayOfWeek; Scanner inStream; • What is the representation?

  17. fontName fontName null null fileStream fileStream Uninitialized versus null • Consider String fontName = null; Scanner fileStream = null; • What is the representation? OR

  18. 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

  19. s String - text = “Hello world" - length = 11 - ... + length () : int + charAt ( int i ) : char + subString ( int m, int n ) : String + indexOf ( String s, int m ) : int + ... The null reference • Consider: String s = “Hello world”; System.out.println (s.length()); • What happens? • Java prints out 11

  20. 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: …

  21. What happens in Windows…

  22. So what is a null reference good for? • Let’s say you had a method that returned a String when passed some parameters • Normally it returns a valid String • But what if it can’t? How to deal with that? • Return a null reference

  23. Quick survey • I understand null references… • Pretty much • Once I read the text, I’ll be good • Not really • What’s a reference again?

  24. A bit of humor…

  25. 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 • That’s 16 billion Gb!

  26. String s1 “first string” “second string” String s2 length = 12 length = 13 References 4 String s1 = “first string”; String s2 = “second string”; s2 = s1; System.out.println (s2); • Consider: String s1 = “first string”; String s2 = “second string”; s2 = s1; System.out.println (s2); What happens to this?

  27. Java’s 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

  28. word1 "luminous" word2 "graceful" Assignment • Consider String word1 = "luminous"; String word2 = "graceful"; Word1 = word2; • Initial representation Garbage collection time!

  29. reponse "artiste" stdin Scanner: Using objects • Consider Scanner stdin = new Scanner(System.in); System.out.print("Enter your account name: "); String response = stdin.next(); • Suppose the user interaction is Enter your account name: artiste

  30. String representation • Consider • String alphabet = "abcdefghijklmnopqrstuvwxyz"; • Standard shorthand representation • Truer representation

  31. 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?

  32. Program WordLength.java public 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 + "haslength" + wordLength + "."); } }

  33. 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.

  34. 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

  35. Quick survey • I understand how one selects methods from an object. • Absolutely! • Kind of • Not really • What’s an object again?

  36. Today’s dose of demotivators

  37. 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 two 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 • It’s 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 • Like the difference between a recipe and a bunch of cookies

  38. Quick survey • I understand the difference between variables and types • Very well • With some review, I’ll be good • Not really • Not at all

  39. Classes vs. Objects • A class is a user-defined “thing” • Examples: String, Scanner, Rectangle, etc. • We’ll start defining our own classes next chapter • Classes are more complex than the primitive types • A class is analogous to a type • It’s 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 • It just is a reference instead • A class is a “template” used for creating objects

  40. More on classes vs. objects

  41. Quick survey • I understand the difference between classes and objects • Very well • With some review, I’ll be good • Not really • Not at all

  42. 3.14 -12 ‘a’ v1 v2 v3 s1 "-12" s2 "3.14" s3 "a" More String methods • Consider 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); 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);

  43. Final variables • Consider final String POEM_TITLE = “Appearance of Brown"; final String WARNING = “Weather ball is black"; • What is the representation?

  44. The reference cannot be In general, these attributes can be modified once it is established modified through member methods object type Value constant Final variables

  45. int x = 3; int y = 4; The upper-left-hand int width = 5; corner of the new Rectangle int height = 2; Rectangle r = new Rectangle(x, y, width, height); The dimensions of the new Rectangle Rectangle

  46. The reference cannot be modified once it is established LANGUAGE "Java" Final variables • Consider final String LANGUAGE = "Java";

  47. Rectangle final Rectangle BLOCK = new Rectangle(6,9,4,2); BLOCK.setLocation(1,4); BLOCK.resize(8,3); • Consider final Rectangle BLOCK = new Rectangle(6,9,4,2); BLOCK.setLocation(1,4); BLOCK.resize(8,3);

  48. x 10 y 4 String - text = “May Day" - text = “Groundhog Day" - text = “Halloween" - length = 7 - length = 13 - length = 9 s “Halloween" - ... + length () : int t “Groundhog Day" + subString ( int m, int n ) : String + indexOf ( String s, int m ) : int u v “Hallow" “May Day" + indexOf ( String s ) : int + ... String method usage • 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; 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;

  49. x 10 y 4 s “Halloween" t “Groundhog Day" u v “May Day" “Hallow" String method usage • 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; s = t; u = null; Java error: cannot assign a value to final variable u

  50. - x = 3 - x = 0 - x = 10 - x = 0 - x = 3 - x = 0 - width = 5 - width = 5 - width = 8 - width = 7 - width = 1 - width = 0 - y = 0 - y = 0 - y = 4 - y = 11 - y = 0 - y = 4 - height = 2 - height = 2 - height = 0 - height = 6 - height = 9 - height = 0 Rectangle Rectangle Rectangle s r + setWidth ( int w ) + setWidth ( int w ) + setWidth ( int w ) + setHeight ( int wh ) + setHeight ( int wh ) + setHeight ( int wh ) + setX ( int x ) + setX ( int x ) + setX ( int x ) + setY ( int y ) + setY ( int y ) + setY ( int y ) + ... + ... + ... Rectangle method usage Rectangle r = new Rectangle(); final Rectangle s = new Rectangle (1, 2, 3, 4); r.setWidth(5); r.setHeight(6); s.setWidth (7); r = new Rectangle (8,9,10,11); s = new Rectangle (12,13,14,15); • Consider: Rectangle r = new Rectangle(); final Rectangle s = new Rectangle (1, 2, 3, 4); r.setWidth(5); r.setHeight(6); s.setWidth (7); r = new Rectangle (8,9,10,11); s = new Rectangle (12,13,14,15);

More Related