Title: Introducing Methods
1Introducing Methods
- Corresponds with Chapter 5
2What is a Method?
- Method declaration
- Signature
- Modifier(s)
- e.g. public or private, static
- Return type
- e.g. void, int, boolean, etc. OR a class type. OR
no type (if a constructor) - Identifier
- Formal Parameter List
- Enclosed in parentheses
- types and identifiers (like variable declaration)
- Separated by commas
- Method Body
- requires return statement if return type is not
void.
A method is a collection of statements that are
grouped together to perform an operation.
- Method call
- Specify the identifier
- Place actual parameters (arguments) in
parentheses - Actual data (literal, constant, variable, or
expression) - Use return value (if not void)
3Introducing Methods(Example 5.1)
calling a method
method
4Anatomy of Method Declaration and Call
method declaraion
5Processing Sequence of a Method Call
method call
3) Function body executes.
method declaration
6Parameter Order and Type Assocation
- void nPrintln (String message, int n)
-
- for (int i0 iltn i)
- System.out.println(message)
IMPORTANT the order and data type of actual
parameters in a method call MUST match the order
and data type of formal parameters in the method
signature. Otherwise you will get a syntax error.
OK
Not OK
7Frame Stack
- The Java Virtual Machine keeps manages the local
variables and parameters of method in a Frame
Stack (also referred to as Call Stack or Program
Stack). - Frame a data structure that holds the values of
all the local variables and formal parameters of
a method. - Stack a last-in, first-out data structure.
Items are pushed onto the top of the stack. Items
are popped off the top of the stack. - When a method is called, its frame (local
variables and parameters) are pushed onto the top
of the stack. - When a method terminates, its frame is removed
from the stack. - ? the formal parameters and local variables of a
method exist ONLY AS LONG AS THE METHOD IS
EXECUTING.
8Memory Changes During Processing(Listing 5.1,
p132)
9Memory Changes During Processing(Listing 5.1)
In main(), before calling max()
2
Frame Stack
10Memory Changes During Processing(Listing 5.1)
In max(), just started
2
Frame Stack
11Memory Changes During Processing(Listing 5.1)
In max(), before it terminates
5
2
Frame Stack
12Memory Changes During Processing(Listing 5.1)
Back in main(), after max() returns
NOTE the value returned from max() was assigned
into the variable k.
2
Frame Stack
13Debugger
- You can view the contents of the frame stack in
the debugger. - The Java JDK includes a program for debugging
applications (called jdb.exe, in the bin
subdirectory). - NetBeans provides a GUI interface to the debugger.
NOTE You will be learning how to use the
debugger in future assignments!
14Stopped at this statement (breakpoint)
mains frame on the frame stack
Local data in main method
15Stopped at this statement (breakpoint)
maxs frame pushed on top of mains frame
Local data in max method
16Stopped at this statement (breakpoint)
maxs return value was assigned to variable k
maxs frame was popped off of the frame stack
17Scope
- A variables scope is its visibility.
- Which statements can refer to the variables
identifier. - Local variables and formal parameters have method
scope. They can only be used inside the method
for which they are declared. - Variables declared inside blocks have block
scope. They can be used only inside the block for
which they are declared. - Variables declared in the parentheses of a
control structure can only be used within the
control structure for which they are declared. - You can declare multiple variables of the same
name as long as they are not in the same nesting
structure. - You cannot declare variables of the same name
within the same nesting structure.
18Variables i, j, and k, and parameter args are in
mains scope.
Note max cannot refer to any of mains variables
or parameters...otherwise youll get a syntax
error.
19Variable result, and parameters num1 and num2 are
in maxs scope. main cannot refer to these
identifiers.
20Another Scope Example
- The following example shows variables with
- Method scope (available throughout an entire
method) - Block scope (available only within a block of
code) - Loop scope (available only within a loop)
21Note the identifiers x and y are not available
to the main method.
22(No Transcript)
23(No Transcript)
24(No Transcript)
25(No Transcript)
26y
27Method Overloading
- Overloading declaring multiple methods of the
same name, but with different formal parameter
lists. - When you call an overloaded method, the compiler
knows which version you are calling based on the
types of actual parameters you pass.
28Method Overloading(Listing 5.4)
29Frame Stack
30maxs Frame (int)
Frame Stack
31Frame Stack
32maxs Frame (Double)
Frame Stack
33Frame Stack
34Note here the result returned from a method is
the actual parameter of another method call.
maxs Frame (Double, 3 params)
Frame Stack
35maxs Frame (Double)
maxs Frame (Double, 3 params)
Frame Stack
36maxs Frame (Double, 3 params)
5.4
Frame Stack
37maxs Frame (Double)
maxs Frame (Double, 3 params)
Frame Stack
38maxs Frame (Double, 3 params)
Frame Stack
10.14
39Frame Stack