Methods: Starting Out With Java: From Control Structures Through Objects Fifth Edition
Methods: Starting Out With Java: From Control Structures Through Objects Fifth Edition
Methods
Fifth Edition
by Tony Gaddis
Chapter Topics
• Introduction to Methods
• Passing Arguments to a Method
• More About Local Variables
• Returning a Value from a Method
• Problem Solving with Methods
5-2
Why Write Methods?
• Methods are commonly used to break a
problem down into small manageable pieces.
This is called divide and conquer.
• Methods simplify programs. If a specific task
is performed in several places in the program, a
method can be written once to perform that
task, and then be executed anytime it is needed.
This is known as code reuse.
5-3
void Methods and Value-Returning
Methods
• A void method is one that simply performs a
task and then terminates.
System.out.println("Hi!");
• A value-returning method not only performs a
task, but also sends a value back to the code
that called it.
double number = Math.pow(4,3);
5-4
Defining a void Method
• To create a method, you must write a definition,
which consists of a header and a body.
• The method header, which appears at the
beginning of a method definition, lists several
important things about the method, including
the method’s name.
• The method body is a collection of statements
that are performed when the method is
executed.
5-5
Two Parts of Method Declaration
Header
Body
5-6
Parts of a Method Header
Method Return Method
Modifiers Type Name Parentheses
5-7
Parts of a Method Header
• Method modifiers
– public—method is publicly available to code outside
the class
– static—method belongs to a class, not a specific
object.
• Return type—void or the data type from a value-
returning method
• Method name—name that is descriptive of what
the method does
• Parentheses—contain nothing or a list of one or
more variable declarations if the method is capable
of receiving arguments.
5-8
Calling a Method
• A method executes when it is called.
• The main method is automatically called when a
program starts, but other methods are executed by
method call statements.
displayMessage();
• Notice that the method modifiers and the void
return type are not written in the method call
statement. Those are only written in the method
header.
• Examples: SimpleMethod.java, LoopCall.java,
CreditCard.java, DeepAndDeeper.java
5-9
Documenting Methods
• A method should always be documented by
writing comments that appear just before the
method’s definition.
• The comments should provide a brief
explanation of the method’s purpose.
• The documentation comments begin with /**
and end with */.
5-10
Passing Arguments to a Method
• Values that are sent into a method are called
arguments.
System.out.println("Hello");
number = Math.pow(4,3);
• The data type of an argument in a method call must correspond
to the variable declaration in the parentheses of the method
declaration. The parameter is the variable that holds the value
being passed into a method.
• By using parameter variables in your method declarations, you
can design your own methods that accept data this way. See
example: PassArg.java
5-11
Passing 5 to the displayValue
Method
displayValue(5); The argument 5 is copied into the
parameter variable num.
5-12
Argument and Parameter Data Type
Compatibility
• When you pass an argument to a method, be
sure that the argument’s data type is compatible
with the parameter variable’s data type.
• Java will automatically perform widening
conversions, but narrowing conversions will
cause a compiler error.
double d = 1.0;
displayValue(d); Error! Can’t convert
double to int
5-13
Passing Multiple Arguments
The argument 5 is copied into the num1 parameter.
The argument 10 is copied into the num2 parameter.
5-14
Arguments are Passed by Value
• In Java, all arguments of the primitive data types are
passed by value, which means that only a copy of an
argument’s value is passed into a parameter variable.
• A method’s parameter variables are separate and
distinct from the arguments that are listed inside the
parentheses of a method call.
• If a parameter variable is changed inside a method, it
has no affect on the original argument.
• See example: PassByValue.java
5-15
Passing Object References to a Method
• Recall that a class type variable does not hold the
actual data item that is associated with it, but holds the
memory address of the object. A variable associated
with an object is called a reference variable.
5-16
Passing a Reference as an Argument
Both variables reference the same object
showLength(name);
“Warren”
address
5-17
Strings are Immutable Objects
• Strings are immutable objects, which means that
they cannot be changed. When the line
str = "Joe";
is executed, it cannot change an immutable object, so
creates a new object.
The name variable holds the
address of a String object address “Warren”
The str variable holds the
address of a different
String object
address “Joe”
5-18
More About Local Variables
• A local variable is declared inside a method and is not
accessible to statements outside the method.
• Different methods can have local variables with the same
names because the methods cannot see each other’s local
variables.
• A method’s local variables exist only while the method is
executing. When the method ends, the local variables and
parameter variables are destroyed and any values stored are
lost.
• Local variables are not automatically initialized with a
default value and must be given a value before they can be
used.
• See example: LocalVars.java
5-19
Returning a Value from a Method
• Data can be passed into a method by way of
the parameter variables. Data may also be
returned from a method, back to the
statement that called it.
double num = Math.pow(4,3);
• Two integers 4 and 3 are passed into the
pow method.
• The double value 64.0 is returned from the
method and assigned to the num variable.
5-20
Defining a Value-Returning Method
public static int sum(int num1, int num2)
{
int result; Return type
result = num1 + num2; The return statement
return result; causes the method to end
} execution and it returns a
value back to the
This expression must be of the statement that called the
same data type as the return type method.
5-21
Calling a Value-Returning Method
total = sum(value1, value2);
20 40
public static int sum(int num1, int num2)
{
60
int result;
result = num1 + num2;
return result;
}
5-22
Returning a booleanValue
• Sometimes we need to write methods to test
arguments for validity and return true or false
public static boolean isValid(int number)
{
boolean status;
if(number >= 1 && number <= 100)
status = true;
else
status = false;
return status;
}
Calling code:
int value = 20;
if(isValid(value))
System.out.println("The value is within range");
else
System.out.println("The value is out of range");
5-23
Returning a Reference to a String
Object
customerName = fullName("John", "Martin");
5-24
Problem Solving with Methods
• A large, complex problem can be solved a piece
at a time by methods.
• The process of breaking a problem down into
smaller pieces is called functional
decomposition.
• See example: SalesReport.java
• If a method calls another method that has a
throws clause in its header, then the calling
method should have the same throws clause.
5-25
Calling Methods that Throw Exceptions