java方法

方法

方法是把一些相关的语句组织在一起,用于解决某一特定问题的语句块。方法必须放在类定义,也就是说,方法必须是某一个类的方法。
另外,在应用程序中,某些任务常常要在一个程序中运行好多次,举个最简单的例子,对多个数组进行排序。
此时我们就可以把这些相同的代码段写成一个单独的单元,需要的时候我们就来调用它

什么是方法

现实生活中,在遇到问题时,我们会想一些方法来解决
    比如:教务管理系统中,包含学生的平均成绩
在JAVA中方法,其实也是一样的
    定义:方法就是完成特定功能的代码块

方法的格式

[修饰符]   返回值类型  方法名(参数类型 形式参数1,参数类型 形式参数2,….)
      {
        程序代码
  return 返回值;
}
返回值类型 用于限定返回值的数据类型,无返回值void,
方法名 一个名称,为了方便我们调用方法
参数类型 限定调用方法时传入参数的数据类型
参数名 是一个变量,接收调用方法时传入的参数
方法体 完成功能的代码
return 结束方法以及返回方法指定类型的值 
返回值 程序被return带回的结果,返回给调用者
 

语法

       返回值类型 方法名(参数类型 形式参数1,参数类型 形式参数2,….)
      {
            程序代码
  return 返回值;
        }

java方法

方法调用的过程分析

java方法

 

方法的调用

方法调用的一般形式为:  方法名([参数列表]) 
   

注意事项


参数的个数、类型和顺序,应该与被调用方法所要求的参数个数、类型和顺序一致,才能正确地进行数据传递。
无参方法直接调用方法名。
有参方法比无参方法多了一个参数表。调用有参方法时,调用方法将赋予这些参数实际的值。
为了与调用方法提供的实际参数区别开,将方法定义中的参数表称为形式参数表,简称形参表。
 

方法的参数传递

Java的实参值如何传入方法呢?
      Java里方法的参数传递方式只有一种:值传递。  即将实际参数值的副本(复制品)传入方法内,而参数本身不受影响。
 1.形参:方法声明时,方法小括号内的参数
    实参:调用方法时,实际传入的参数的值
 2.规则:java中的参数传递机制
 1)形参是基本数据类型:将实参的值传递给形参的基本数据类型的变量
 2)形参是引用数据类型:将实参的引用类型变量的值(对应的堆空间的对象实体的首地址值)传递给形参的引用类型变量。

方法的返回值和返回类型

返回值与return语句
有参函数的返回值,是通过函数中的return语句来获得的。
 return语句的一般格式:  return 返回值表达式 ;
 return语句的功能:返回调用函数,并将“返回值表达式”的值带给调用函数。
注意:调用函数中无return语句,可以用“void”定义成“无(空)类型”。
函数类型
在定义函数时,对函数类型的说明,应与return语句中、返回值表达式的类型一致。

作用域

局部作用域


    在java中,局部变量被定义在某个区块中。也就是说,某区块中定义的变量,只能供这个区块使用,区块以外使用则报错。
   在方法主体中声明的变量只具有那个方法的作用域;一旦方法结束,它们也会消失,而且只能由那个方法内部执行的代码来访问。这些变量称为局部变量(local variable),因为它们局限于声明它们的那个方法,不能在其他任何方法的作用域中使用。换言之,你不能使用局部变量在不同的方法之间共享信息。 
类作用域


    在类定义体中(但不在某个方法中)声明的任何变量都具有那个类的作用域。在java语言中,使用成员变量一词来描述由一个类定义的变量。和局部变量不同,可以使用成员变量在不同的方法之间共享信息。 

案例

例如:
static int f1(int a)     /*函数f1*/
    {  int b,c;
        ……
    }        /*a,b,c作用域:仅限于函数f1()中*/
 
static int f2(int x)     /*函数f2*/
   {  int y,z;      
 ……
   }        /*x,y,z作用域:仅限于函数f2()中*/
 
static void main(string[] args)
    { int m,n;
       ……
    }        /*m,n作用域:仅限于函数main()中*/


方法的可变参数

在Java中提供了变长参数,允许在调用方法时传入不定长度的参数。本质上是基于数组。
定义方法:…args
void fun(String… args)

注意事项


可变参数只能作为函数的最后一个参数
由于可变参数必须是最后一个参数,所以一个函数最多只能有一个可变参数
Java的可变参数,会被编译器转型为一个数组
调用可变参数方法,可以给出零到任意多个参数,编译器会将可变参数转化为一个数组。也可以直接传递一个数组

方法重载

如果两个方法名同名,而且在同一个作用域中声明,就可以说它们重载。方法重载是声明两个以上的同名方法,以实现对不同数据类型的相同处理。
方法重载有两点要求:
重载的方法名称必须相同。
重载的方法,其形参个数或类型必须不同,否则将出现“已经定义了一个具有相同类型参数的方法成员”的编译错误。

方法的重载就是在同一个类中允许同时存在一个以上的同名方法,只要它们的参数个数或类型不同即可。 如:
public class Test{
    public static void main(String [] args){
    int isum;
    double dsum;
    isum=add(3,5);
    isum=add(3,5,6);
    dsum=add(3.2,6.5); 
    }
    public static int add(int x,int y)         {  reutrn x+y; }
    public static int add(int x,int y,int z)   { return x+y+z; }
    public static double add(double x,double y){  return x+y; }
}
 

在同一个类中,允许存在一个以上的同名方法,只要它们的参数个数或者参数类型不同即可
    public class PrintStream{
        public void print(int i) {……}
        public void print(float f) {……}
        public void print(String s) {……}
            }
重载方法的名字必须相同,参数列表必须不同(参数个数或者类型)
  重载方法与返回值无关,返回值类型可以相同,也可以不同
  调用时虚拟机通过参数列表的不同来区分同名方法
print(3);print(1.2f);print(“hello!”);

方法重载特点

与返回值类型无关,只看方法名和参数列表
在调用时,虚拟机通过参数列表的不同来区分同名方法