Java 方法调用

在调用方法时,程序的执行流程会进入方法的内部,当执行到方法内部的return语句或执行完方法内部的代码以后,则返回到调用该方法的位置继续向下执行。

  方法调用的语法分为以下两种:

  1、一个类内部的方法调用:指调用以及被调用的方法都在一个类的内部。 2、不同类之间的方法调用:指调用以及被调用的方法位于不同的类内部。

一个类内部方法调用语法

  在进行方法调用时,调用的语法格式和static修饰符有关,所以按照一个方法在声明时是否有static修饰分为两类:

(1)有static修饰的称作静态方法(2)没有static修饰的称作非静态方法

这样一个类内部的方法调用就存在四种情况:

  a、在非静态方法内部调用非静态方法

  b、在非静态方法内部调用静态方法

  c、在静态方法内部调用静态方法

  d、在静态方法内部调用非静态方法

其中前三种情况的调用都是直接调用,直接调用的语法格式为:

方法名(参数1值,……);

  这里方法名为被调用的方法名称,后续紧跟一对小括号,括号内部依次书写调用该方法时传入参数的值,语法上要求传入参数的个数、每个参数的类型都必须和方法声明时保持一致。而这里调用的表达式就代表方法的返回值,可以根据需要使用返回值进行赋值。

示例代码如下:

public class CallMethod{

public static void
main(String[] args){

int a = 10;

int b = 2;

int c = 3;

int d = 32;

max(a,b); //只比较,比较以后返回值丢失

int n = max(5,a); //比较,并把返回值赋值给变量n

int m = max(c,d); //比较,并把返回值赋值给变量m

//比较a、b、c、d四个数字的最大值

int maxNumber = max(max(a,b),max(c,d));

}

public static int
max(int a,int b){

if(a > b){

return
a;

}else{

return
b;

}

}

}

  该示例在静态的main方法内部调用静态的max方法,因为max方法在声明时参数列表为2个int的参数,则调用的时候必须传入2个int值,可以是int的变量也可以是int数值。

则调用的基本格式为:

max(参数值1,参数值2)

  调用的表达式可以在代码中单独成行,当方法的返回值类型不是void时,可以接收方法的返回值,也可以不接收。方法的返回值是一个确定类型的值,所以在以上比较时,方法调用之间可以进行嵌套。

int maxNumber = max(max(a,b),max(c,d));

  其中max(a,b)是获得a和b的最大值,max(c,d)是获得c和d的最大值,然后比较两个获得的最大值,该代码的功能和以下代码的功能相同:

int maxNumber = max(a,max(b,max(c,d)));

  总得来说,前三种情况的调用都是使用该种格式。对于最后一种情况,也就是在静态方法内部调用非静态的结构在语法上则比较复杂,以下是一个简单的示例:

public class
CallMethod2{

public static void main(String[] args){

CallMethod2
cm = new CallMethod2();

int
n = cm.max(1,2);

}

public int max(int a,int b){

if(a
> b){

return
a;

}else{

return
b;

}

}

}

在该代码涉及的语法格式在后续的代码中将进行讲解,这里只做简单的说明。其中:

CallMethod2 cm = new CallMethod2();

该行代码声明并创建了一个CallMethod2类型的对象cm。接着的代码:

int n = cm.max(1,2);

在调用max方法时,则使用对象名.方法名调用对应的方法,这里参数的规则和上面介绍的相同。

Java 方法调用,布布扣,bubuko.com

时间: 2024-10-08 21:16:11

Java 方法调用的相关文章

java 方法调用绑定

将一个方法调用同一个方法主体关联起来被称作绑定.若在程序执行前进行绑定(由编译器和连接器实现),叫做前期绑定.读者可能从来没有听说过这个术语,因为它在面向过程语言中不需要选择就默认的绑定方式.例如C语言有一种方法调用,那就是前期绑定.后期绑定也叫做动态绑定或是运行时绑定,它的含义是在运行时根据对象的类型进行绑定.如果一种语言想实现后期绑定,那就必须具有某种机制,以便在运行时能判断出对象的类型,从而调用恰当的方法.也就是说,编译器一直不知道对象的类型,但是方法调用机制能够找到正确的方法体,并加以调

Java方法调用中的别名处理

将一个对象传递到方法内部时,也会产生别名现象.//: PassObject.java// Passing objects to methods can be a bit tricky62class Letter {char c;}public class PassObject {static void f(Letter y) {y.c = 'z';}public static void main(String[] args) {Letter x = new Letter();x.c = 'a';

java方法调用中参数传递的方式

1 package org.awt; 2 3 import java.awt.Graphics; 4 import java.applet.Applet; 5 6 7 public class test{ 8 9 float ptValue; 10 11 public void changeInt(int value) 12 { 13 value=55;//1 14 int val=value;//2 15 System.out.print(value); 16 //这里理解为型參,pt.cha

Java学习笔记之RMI远程方法调用

RMI 应用通常有两个分开的程序组成,一个服务端程序和一个客户端程序.一个典型的服务端程序创建一些远程对象,使得对这些远程对象的引用可以被访问,等待客户端调用这些远程对象提供的方法.一个典型的客户端程序获取远程引用,指向一个或者多个服务端上的远程对象,然后调用这些远程对象所提供的方法.通常我们称这为分布式对象应用程序. 3.1 RMI的工作方式 分布式对象应用程序需要做的事情: l 查找(定位)远程对象. 应用程序可以使用各种不同的机制取得远程对象的引用.比如应用程序可以通过 RMI 提供的简单

【解惑】Java方法参数是引用调用还是值调用?

最近找实习,在笔试时候做了下面这道题:求下面代码的输出结果. public class MyClass { static void aMethod(StringBuffer sf1,StringBuffer sf2){ sf1.append(sf2); sf2=sf1; } public static void main(String[] args){ StringBuffer sf1=new StringBuffer("A"); StringBuffer sf2=new String

循环语句,跳转语句,方法调用

1)循环语句while,do/while,for 格式:while(布尔表达式){循环体语句}//先验循环,可执行0次或n次,若布尔表达式第一次为false,永不执行循环体语句 do{循环体语句}while(布尔表达式)://后验循环,可执行一次或n次,且至少执行一次 for(初始化:布尔表达式:变量变化的方式){循环体语句}//初始化只执行一次,且可以留白,但是分号必须要有(重点掌握) 2)跳转语句break,continue break:跳出本层循环,一旦遇见,break之后的代码通通不执行

JAVA方法和本地方法(转载)

转载自:http://blog.sina.com.cn/s/blog_5b9b4abe01016zw0.html JAVA中有两种方法:JAVA方法和本地方法 JAVA方法是由JAVA编写的,编译成字节码,存储在class文件中 本地方法是由其它语言编写的,编译成和处理器相关的机器代码 本地方法保存在动态链接库中,即.dll(windows系统)文件中,格式是各个平台专有的 JAVA方法是与平台无关的,但是本地方法不是 运行中的JAVA方法调用本地方法时,虚拟机装载包含这个本地方法的动态库的,并

JVM 方法调用之解析

方法调用并不等同于方法执行,方法调用阶段唯一的任务就是确定被调用方法的版本(即调用哪一个方法),暂时还没有涉及到方法内部的具体运行过程.在程序运行时,进行方法调用是最普遍最频繁的操作,但Class文件的编译过程不包含传统编译中的连接步骤,一切方法调用在Class文件里存储的都只是符号引用,而不是方法在实际运行时内存布局中的入口地址(相当于之前说的直接引用).这个特性给Java带来了更强大的动态扩展能力,但也使得Java方法调用过程变得相对复杂起来,需要在类加载期间,甚至到了运行期间才能确定目标方

多态方法调用的解析和分派

方法调用并不等同于方法执行,方法调用阶段唯一的任务就是确定被调用方法的版本(即调用哪一个方法),暂时还不涉及方法内部的具体运行过程.在程序运行时,进行方法调用是最普遍.最频繁的操作,Class文件的编译过程中不包含传统编译中的连接步骤,一切方法调用在Class文件里面存储的都只是符号引用,而不是方法在实际运行时内存布局中的入口地址(相当于之前说的直接引用).这个特性给Java带来了更强大的动态扩展能力,但也使得Java方法调用过程变得相对复杂起来,需要在类加载期间,甚至到运行期间才能确定目标方法