Local Variables and Constructors in Java Programming

slide1 n.w
1 / 12
Embed
Share

Explore the concept of local variables, the inside-out rule, and best practices for constructor placement in Java programming. Dive into scope rules and principles to enhance your understanding of Java programming fundamentals.

  • Java Programming
  • Local Variables
  • Constructors
  • Scope Rules
  • Best Practices

Uploaded on | 1 Views


Download Presentation

Please find below an Image/Link to download the presentation.

The content on the website is provided AS IS for your information and personal use only. It may not be sold, licensed, or shared on other websites without obtaining consent from the author. If you encounter any issues during the download, it is possible that the publisher has removed the file from their server.

You are allowed to download the files provided on this website for personal or commercial use, subject to the condition that they are used lawfully. All files are the property of their respective owners.

The content on the website is provided AS IS for your information and personal use only. It may not be sold, licensed, or shared on other websites without obtaining consent from the author.

E N D

Presentation Transcript


  1. 1 CS/ENGRD 2110 SPRING 2018 Lecture 5: Local vars; Inside-out rule; constructors http://courses.cs.cornell.edu/cs2110

  2. Announcements 2 A1 is due today If you are working with a partner, you must form a group on CMS and submit one solution! A2 is out. Remember to get started early! Next week's recitation is on testing. No tutorial/quiz this week! 1. 2. 3.

  3. Local variables middle(8, 6, 7) 3 /** Return middle value of a, b, c (no ordering assumed) */ publicstaticint middle(int a, int b, int c) { if (b > c) { int temp= b; b= c; c= temp; } method body Parameter: variable declared in () of method header Local variable: variable declared in a 8 b 6 c 7 temp ? if (a <= b) { return b; } All parameters and local variables are created when a call is executed, before the method body is executed. They are destroyed when method body terminates. return Math.min(a, c); }

  4. Scope of local variables 4 /** Return middle value of a, b, c (no ordering assumed) */ publicstaticint middle(int a, int b, int c) { if (b > c) { int temp= b; b= c; c= temp; } block Scope of local variable (where it can be used): from its declaration to the end of the block in which it is declared. if (a <= b) { return b; } return Math.min(a, c); }

  5. Scope In General: Inside-out rule 5 Inside-out rule: Code in a construct can reference names declared in that construct, as well as names that appear in enclosing constructs. (If name is declared twice, the closer one prevails.) /** A useless class to illustrate scopes*/ public class C{ private int field; publicvoid method(int parameter) { if (field > parameter) { int temp= parameter; } } } class method block

  6. Principle: declaration placement 6 /** Return middle value of a, b, c (no ordering assumed) */ publicstaticint middle(int a, int b, int c) { int temp; if (b > c) { temp= b; b= c; c= temp; } if (a <= b) { return b; } return Math.min(a, c); } Not good! No need for reader to know about temp except when reading the then-part of the if- statement Principle: Declare a local variable as close to its first use as possible.

  7. Poll time! What 3 numbers are printed? 8 public class ScopeQuiz { private int a; A: 5, 6, 6 B: 0, 6, 6 C: 6, 6, 6 D: 0, 6, 0 public ScopeQuiz(int b) { System.out.println(a); int a= b + 1; this.a= a; System.out.println(a); a= a + 1; } public static void main(String[] args) { int a= 5; ScopeQuiz s= new ScopeQuiz(a); System.out.println(s.a); } }

  8. Bottom-up/overriding rule 9 Which method toString() is called by turing Person@20 turing.toString() ? Person@20 Object The overriding rule,a.k.a. the bottom-up rule: To find out which method is used, start at the bottom of the object and search upward until a matching one is found. toString() Person "Turing" name toString() { }

  9. Constructing with a Superclass 12 /** Constructor: person f n */ public Person(String f, String l) { first= n; last= l; } call superclass constructor. PhD@a0 Use super (not Person) to Object toString() Person /** Constructor: PhD with a year. */ public PhD(String f, String l, int y) { super(f, l); gradYear= y; } in constructor body! null "David" "Gries" null first getName() last Must be first statement PhD 1966 0 gradYear new PhD("David", "Gries", 1966);

  10. About super 13 Within a subclass object, super refers to the partition above the one that contains super. PhD@a0 Object toString() Person "David" "Gries" first last getName() Because of keyword super, the call toString here refers to the Person partition. PhD 1966 gradYear getName() { super.getName() }

  11. Bottom-Up and Inside-Out 14 Person PhD@a0 Object sep ' ' toString() Person "David" "Gries" first getName() last super PhD 1966 gradYear getName()

  12. Without OO 15 Without OO, you would write a long involved method: publicdouble getName(Person p) { if (p is a PhD) { } else if (p is a GradStudent) { } else if (p prefers anonymity) { } else } OO eliminates need for many of these long, convoluted methods, which are hard to maintain. Instead, each subclass has its own getName. Results in many overriding method implementations, each of which is usually very short

More Related Content