<< Chapter < Page Chapter >> Page >

Note: In a call to a static method, the name of the class in which it is defined can be given as in the second call.Since the method is defined in the same class as the call, the class name need not be given, as shown in the first call.

Exercise Trace the execution of a call of the following method and explain why it doesn't swap the values of the actual parameters.

void swap(int a, int b) {  int temp = a; a = b;  b = temp;}

Can you write a method to swap two integer values?

A method returning a value

Concept When a method that is declared with a return type is called, it allocates memory for its parameters and local variables, executesits statements and then returns a value of the type. The call is a statement constructedfrom the name of the method followed by a list of actual parameters; the call is an expression and can appear wherever an expression is allowed.

Program: Method02.java

// Learning Object Method02 //    methods returning a valuepublic class Method02 {     static int maximum(int a, int b) {        if (a > b)             return a;        else             return b;    }      public static void main(/*String[] args*/) {        int x = 10, y = 20;         int max;        max = maximum(x, y);         System.out.println(max);    } }
  • The variables x and y are allocated and initialized; the variable max is allocated but not initialized.
  • An assignment statement is executed: the expression on the right hand side is a method call including the values of the actual parameters x and y .
  • Memory is allocated for the formal parameters of the method and the local variables. This is called an activation record and is displayed by Jeliot in the upper left hand part of the screen labeled Method Area . The new activation record hides the previous ones which are no longer accessible.
  • The actual parameters are used to initialize the formal parameters in the activation record.
  • The statements of the method are executed.
  • When the statement return b is executed, the value of b is used for the value to be returned.
  • The method returns and the activation record is deallocated.
  • The value returned becomes the value of the expression assigned to the variable max .
  • The value of max is printed.

Exercise Write the body of the main method as one statement.

Calling one method from another

Concept One method can call another, that is, when executing one method, any statement or expression call be a method call. A sequenceof method calls results in a stack of activation records, where each method (except the last one that was called)is waiting for the method it called to return. There is no limit on the depth of method calls, except of course the amount of memory allocated to the program.

Note: The main method is a method like any other. The operating system can be considered as a program which calls the main method.This call has a single parameter: an array of strings containing the contents of the command line.

Program: Method03.java

// Learning Object Method03 //    calling a method from a methodpublic class Method03 {     static int maximum(int a, int b) {        if (a > b)             return a;        else             return b;    }      static void printMax(int a, int b) {         int max;        max = Method03.maximum(a, b);         System.out.println(max);    }      public static void main(/*String[] args*/) {        printMax(10, 20);     }}

Get Jobilize Job Search Mobile App in your pocket Now!

Get it on Google Play Download on the App Store Now




Source:  OpenStax, Learning objects for java (with jeliot). OpenStax CNX. Dec 28, 2009 Download for free at http://cnx.org/content/col10915/1.2
Google Play and the Google Play logo are trademarks of Google Inc.

Notification Switch

Would you like to follow the 'Learning objects for java (with jeliot)' conversation and receive update notifications?

Ask