1. Understanding the execution of local variable declaration (in a method body) new expression ( 3 steps ) method call (method frames, call stack) examples.

Slides:



Advertisements
Similar presentations
Pass by Value. COMP104 Pass by Value / Slide 2 Passing Parameters by Value * A function returns a single result (assuming the function is not a void function)
Advertisements

Topic 10 Java Memory Management. 1-2 Memory Allocation in Java When a program is being executed, separate areas of memory are allocated for each class.
CSCI 160 Midterm Review Rasanjalee DM.
CSE115: Introduction to Computer Science I Dr. Carl Alphonce 219 Bell Hall
July 13 th.  If/ Else if / Else  Variable Scope  Nested if/else's  Switch statements  Conditional Operator.
CIT 590 Intro to Programming Java lecture 4. Agenda Types Collections – Arrays, ArrayLists, HashMaps Variable scoping Access modifiers – public, private,
Access to Names Namespaces, Scopes, Access privileges.
CS 1110 Prelim I: Review Session. Exam Info Prelim 1: 7:30–9:00PM, Thursday, 6 October, Statler Auditorium Look at the previous Prelims Arrive early!
1 What’s a class People are confused with nested classes and anonymous classes. Experiments in a recitation last week revealed that the problems were probably.
1 Executing Method Calls This lecture tells you precisely how method calls are executed (a few details will have to wait until we get to classes and objects).
CS 1110 Prelim I: Review Session. Introduction My name: Bruno Abrahao – We have four TA’s in the room to help you individually Shuang Zhao Nam Nguyen.
28-Jun-15 Access to Names Namespaces, Scopes, Access privileges.
Call-by-Value vs. Call-by-Reference Call-by-value parameters are used for passing information from the calling function to the called function (input parameters).
Writing Classes (Chapter 4)
Java Quiz Bowl A fun review of the Java you should know from CMPT 201 If you don’t know the answers - this week is for you to study up!
Arrays Module 6. Objectives Nature and purpose of an array Using arrays in Java programs Methods with array parameter Methods that return an array Array.
Arrays and ArrayLists in Java L. Kedigh. Array Characteristics List of values. A list of values where every member is of the same type. Each member in.
Arrays Chapter 8. What if we need to store test scores for all students in our class. We could store each test score as a unique variable: int score1.
1 Arrays An array is a collection of data values, all of which have the same type. The size of the array is fixed at creation. To refer to specific values.
CSc2310 tutoring session, week 8 Fall, 2012 Haidong Xue 5:30pm—8:30pm 11/06/2012 and 11/07/2012 -Test 3 Study Guide.
Topic 1 Object Oriented Programming. 1-2 Objectives To review the concepts and terminology of object-oriented programming To discuss some features of.
CSC1401 Classes - 2. Learning Goals Computing concepts Adding a method To show the pictures in the slide show Creating accessors and modifiers That protect.
Classes. Student class We are tasked with creating a class for objects that store data about students. We first want to consider what is needed for the.
This recitation 1 An interesting point about A3: Using previous methods to avoid work in programming and debugging. How much time did you spend writing.
CS100A, Fall 1998 Key Concepts 1 These notes contain short definitions of the basic entities that make up a Java program, along with a description of the.
1 Chapter 6 Methods. 2 Motivation Find the sum of integers from 1 to 10, from 20 to 30, and from 35 to 45, respectively.
CreatingClasses-SlideShow-part31 Creating Classes part 3 Barb Ericson Georgia Institute of Technology Dec 2009.
Recitation 5 Enums and The Java Collections classes/interfaces 1.
1 CS September 2008 Discussion of Methods: Executing method calls.If-statements. The return statement in a function. Local variables. For this and.
Methods.
1 CS1110 Thursday, 10 Feb 2011 Discussion of Methods: Executing method calls. If-statements. The return statement in a function. Local variables. For this.
Problem of the Day  Why are manhole covers round?
Loops. About the Midterm Exam.. Exam on March 12 Monday (tentatively) Review on March 5.
CS100Lecture 61 Announcements Homework P1 due on Thursday Homework P2 handed out.
Arrays Chapter 7.
Classes and Objects.
Object Oriented Programming
Software Development Java Classes and Methods
CS100A, Lecture 7, 22 Sept Static fields and methods
Method Parameters and Overloading
Repetition-Counter control Loop
Namespaces, Scopes, Access privileges
CS 302 Week 11 Jim Williams, PhD.
CS/ENGRD 2110 Spring 2018 Lecture 5: Local vars; Inside-out rule; constructors
Chapter 4 Procedural Methods.
CS 106A, Lecture 7 Parameters and Return
CS139 – Fall 2010 How far we have come
CS/ENGRD 2110 Spring 2017 Lecture 5: Local vars; Inside-out rule; constructors
CS 1110 Final Exam: Review Session 1 Drawing frames for calls, executing method calls Biggest issue!!! You can’t do questions on this topic correctly.
File Handling Programming Guides.
An Introduction to Java – Part II
Organizing Memory in Java
CS/ENGRD 2110 Fall 2017 Lecture 5: Local vars; Inside-out rule; constructors
Sit next to someone. Today, we do some work in pairs.
CHAPTER 6 GENERAL-PURPOSE METHODS
CS/ENGRD 2110 Fall 2018 Lecture 5: Local vars; Inside-out rule; constructors
CS2011 Introduction to Programming I Methods (II)
Sit next to someone. Today, we do some work in pairs.
CS 1110 Final Exam: Review Session 1 Drawing frames for calls, executing method calls Biggest issue!!! You can’t do questions on this topic correctly.
Chapter 6 Methods.
Chapter 7 Procedural Methods.
Namespaces, Scopes, Access privileges
CIS 199 Final Review.
IPC144 Introduction to Programming Using C Week 4 – Lesson 2
Classes, Objects and Methods
CS 1110 Prelim I: Review Session Spring 2011
CS 1054: Lecture 2, Chapter 1 Objects and Classes.
slides created by Ethan Apter and Marty Stepp
Review for Midterm 3.
Corresponds with Chapter 5
Presentation transcript:

1

Understanding the execution of local variable declaration (in a method body) new expression ( 3 steps ) method call (method frames, call stack) examples from previous exams code execution (Q4 from 2008 fall final, modified) method call (Q3 from 2007 fall final)

Important! All previous finals included some questions about code execution You need to know how to draw variables, objects, method frames … The purpose of such questions on executing statements with new expressions and method calls is to test your understanding of how java programs are executed

code segment (in a method body) int a = 3; C x = new C(a); C y = new C(a); x = y; The first thing to do? to draw all local variables

code segment (in a method body) int a = 3; C x = new C(a); C y = new C(a); x = y; public class C { private int f; C(int k) { f = k; } } xay 3

Execution of new expression 3 steps for executing the new expression create a new folder (object) of the class with a unique name (place it in the class file drawer) initialize the fields in the object by executing the constructor yield the name of the object as the value of the new expression

code segment (in a method body) int a = 3; C x = new C(a); C y = new C(a); x = y; public class C { private int f; C(int k) { f = k; } } xay 3 C f C(int); a0 3 C f C(int); a1 3 aliasing a1

variables inside a loop public void m(int size) { for (int i=0; i< size; i++) { int [] b = …; … } When is the local variable b inside the loop created? It is created once with other local variables when we start executing the method (in the method frame). Not after the loop starts.

Code Execution (Q4 from 2008 fall final, modified) public class Item { /* total cost of all items created */ private static int totalCost = 0; private int cost; // cost of this item private String name; // title /** Constructor: new Item with name t, cost c */ public Item(string t, int c) { name = t; cost = c; totalCost = totalCost + c; } /** = Cost of this item */ public int getCost() { return cost; } /** = this item’s name */ public String getName() { return name; } } /** = “ : ” */ public String toString() { return name + “:” + getCost(); } /** Add d to this item’s cost */ public void add(int d) { cost = cost + d; totalCost = totalCost + d; } /** = the total cost of all Items */ public static int getTotalCost() { return totalCost; } Execute the call: Store.session(); public class Store { public static void session() { 1: Item one = new Item(“ipod”, 20); 2: Item two = new Item(“wii”, 32); 3: Item treat = two; 4: Item three = one; 5: three.add(4); 6: System.out.println(one); 7: System.out.println(“Cost of Item: “+ Item.getTotalCost()); 8:System.out.println(“Are they the same?” + (one.getName() == treat.getName()) ); 9:System.out.println(“Are they the same?” + one.getName().equals(treat.getName()) ); 10:System.out.println(“Are they the same?” + (one.getName() == three.getName()) ); }

Code Execution (Q4 from 2008 fall final, modified) Execute the call: Store.session(); public class Store { public static void session() { 1: Item one = new Item(“ipod”, 20); 2: Item two = new Item(“wii”, 32); 3: Item treat = two; 4: Item three = one; 5: three.add(4); 6: System.out.println(one); 7: System.out.println(“Cost of Item: “+ Item.getTotalCost()); 8:System.out.println(“Are they the same?” + (one.getName() == treat.getName()) ); 9:System.out.println(“Are they the same?” + one.getName().equals(treat.getName()) ); 10:System.out.println(“Are they the same?” + (one.getName() == three.getName()) ); } answers : 6 : “ipod:24” 7 : “Cost of Item: 56” 8 : “Are they the same? false” 9 : “Are they the same? false” 10 : “Are they the same? true”

The frame (the box) for a method call 11 Remember: Every method is in a folder (object) or in a file-drawer. method name: instruction counterscope box local variables (don’t deal with these now) parameters Draw the parameters as variables.

The frame (the box) for a method call 12 Remember: Every method is in a folder (object) or in a file-drawer. method name: instruction counterscope box local variables (don’t deal with these now) parameters number of the statement of method body to execute NEXT. Helps you keep track of what statement to execute next. Start off with 1.

The frame (the box) for a method call 13 Remember: Every method is in a folder (object) or in a file-drawer. method name: instruction counterscope box local variables (don’t deal with these now) parameters scope box contains the name of entity that contains the method —a file drawer or object. If this is a static method, this method should be in the file-drawer, thus, the scope box should contain the class name, if it is not static, it is in the folder(Object), the scope box should contain the object.

14 a0 Score score setScore(int value) { score = value;} getScore() {…} To execute the call x.setScore(100); x a0 Score 1. Draw a frame for the call. 2. Assign the value of the argument to the parameter (in the frame). 3. Execute the method body. (Look for variables in the frame; if not there, look in the place given by the scope box.) 4. Erase the frame for the call. value value a0 setScore: 1 100

15 Scope of local variable: the sequence of statements following it within the containing “block”. /** = the max of x and y */ public static int max(int x, int y) { // Swap x and y to put the max in x if (x < y) { int temp; temp= x; x= y; y= temp; } return x; } scope of temp You can’t use temp down here This is an error. You can’t use temp down here This is an error.

16 Scope of local variable: the sequence of statements following it. /** s contains a name in the form exemplified by “David Gries”. Return the corresponding String “Gries, David”. There may be 1 or more blanks between the names. */ public static String switchFormat(String s) { // Store the first name in variable f and remove f from s int k; // Index of the first blank in s k= s.indexOf(' '); String f; // The first name in s. f= s.substring(0, k); s= s.substring(k); // Remove the blanks from s s= s.trim(); return s + ", " + f; } scope of k scope of f declaratio n assignmen t

Call Stack Call Stack is the stack of frames for uncompleted method calls, a frame for a method call lasts as long as the method call is being executed. When the call is finished, the frame is erased. This fact explains why local variables do not retain their values from one call of a method to the next call of the same method: All the information about the first call is in a frame, and the frame is erased when the call is completed. This fact explains why local variables do not retain their values from one call of a method to the next call of the same method: All the information about the first call is in a frame, and the frame is erased when the call is completed.

Exercise 1

Step Into vs Step Over Step Into: Draw the method call and execute the method call Step Into: Draw the method call and execute the method call Step Over: Assume the function is doing exactly what it should do based on the specifications of the function. Step Over: Assume the function is doing exactly what it should do based on the specifications of the function.