Java编程那些事儿54—要领挪用
当前位置:以往代写 > JAVA 教程 >Java编程那些事儿54—要领挪用
2019-06-14

Java编程那些事儿54—要领挪用

Java编程那些事儿54—要领挪用

副标题#e#

7.4 要领挪用

要领声明是建设一个新的成果,声明出来的要领在需要的时候可以通过挪用执行该要领的成果,要领只有被挪用才气被执行。

在Java措施中有一个根基的main要领,其要领声明如下:

public static void main(String[] args)

该要领包括在开始的代码框架中,这是一个非凡的要领。Java语礼貌定,J2SE的代码都从该要领开始执行,假如一个代码中没有main要领,则该代码不能被直接运行。所以main要领也称作J2SE措施的进口要领,在运行措施时,自动挪用对应代码中的main要领开始措施的执行。

由于上面报告的原因,所以一个要领假如需要获得执行,则需要直接或间接在main要领中举办挪用。

在挪用要领时,措施的执行流程会进入要领的内部,当执行到要领内部的return语句或执行完要领内部的代码今后,则返回到挪用该要领的位置继承向下执行。

要领挪用的语法分为以下两种:

l一个类内部的要领挪用

指挪用以及被挪用的要领都在一个类的内部。

l差异类之间的要领挪用

指挪用以及被挪用的要领位于差异的类内部。

由于类的观念此刻还没有涉及到,所以这里指讲一个类内部的要领挪用语法,关于差异类之间的要领挪用则在后续的章节中举办先容。

7.4.1 一个类内部要领挪用语法

在前面的代码框架中,以下代码就是声明类的布局:

public class 文件名{

在该声明后续大括号内部的代码,称作一个类的内部。

在举办要领挪用时,挪用的语法名目和static修饰符有关,所以凭据一个要领在声明时是否有static修饰分为两类:

l有static修饰的称作静态要领

l没有static修饰的称作非静态要领

这样一个类内部的要领挪用就存在四种环境:

l在非静态要领内部挪用非静态要领

l在非静态要领内部挪用静态要领

l在静态要领内部挪用静态要领

l在静态要领内部挪用非静态要领

个中前三种环境的挪用都是直接挪用,直接挪用的语法名目为:

要领名(参数1值,……);


#p#副标题#e#

这里要领名为被挪用的要领名称,后续紧跟一对小括号,括号内部依次书写挪用该要领时传入参数的值,语法上要求传入参数的个数、每个参数的范例都必需和要领声明时保持一致。而这里挪用的表达式就代表要领的返回值,可以按照需要利用返回值举办赋值。

示例代码如下:

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要领时,则利用工具名.要领名挪用对应的要领,这里参数的法则和上面先容的沟通。

#p#副标题#e#

7.4.2 要领挪用后的执行流程

#p#分页标题#e#

在要领挪用时,措施的执行流程和以前的布局就有所区别。简朴说,就是当碰着要领挪用时,措施的执行流程将跳转到被挪用的要领内部,直到被挪用的要领返回时,才从挪用的位置继承向下执行。

以下是一个演示挪用进程的示例代码:

public class CallMethod3{
 public static void main(String[] args){
  System.out.println(1);
  printTest();
  System.out.println(2);
  max(10,20);
  System.out.println(3);
 }

 public static int max(int a,int b){
  System.out.println("进入max要领内部!");
  if(a > b){
    return a;
  }else{
    return b;
  }
 }

 public static void printTest(){
  System.out.println("进入printTest要领内部!");
  int a = 10;
  System.out.println("printTest要领执行完毕!");
 }
}

则该代码执行时的输出如下:

1
进入printTest要领内部!
printTest要领执行完毕!
2
进入max要领内部!
3

从措施执行的输出就可以清晰的看出要领挪用时代码的执行顺序。

    关键字:

在线提交作业