**前言:**在面向对象编程中,类有两个重要部分,即数据和方法,方法有时也称为函数。比如从第一单元就用到的构造函数,也可以称为构造方法,构造方法是类里面一个特殊的方法,用来初始化对象。类中的数据表示对象的属性,而方法表示对象的行为。当一个程序员学习面向对象编程时,他必须理解那个方法是什么?它在类里面是如何运作的呢?
要创建一个方法,必须做两件事,即定义方法和调用方法
Java 编程中的方法有两种类型,一种是没有返回值的方法****,另一种是有返回值的方法**。****
方法的语法结构:
[修饰符列表] 返回值类型 方法名 (形象参数列表){
方法体;
}
一、说明方法的语法结构:
1.关于修饰列表:
-
可选项,不是必须的
-
目前统一写成 public static
-
方法的修饰列表当中static关键字的话怎么调用?
------类名.方法名 (实际参数列表)
2.返回值类型:
- 什么是返回值?返回最终执行的结果,也可能没有返回值(没有返回值用关键字void)
2.1在定义没有返回值的方法时,将 void 关键字用作前缀,然后与方法名一起
使用
void method_name(){
statement1;
statement2;
......
statementn;
} 没有返回值的方法的格式
返回值类型是void的时候,在方法体中不能编写”return“值;这样的语句但是要注意可以编写"return;"这样的语句
2.2与使用 void 关键字作为前缀的没有返回值的方法不同,具有 return 值的方
法以返回值类型开始,然后紧跟着方法的名称。方法的返回值类型可以是整数、浮点数、字符串、数组或对象。具有返回值的方法也返回与返回值类型匹配的值。return 关键字用于将值返回给方法。
returnvaluetype method_name(){
statement1;
statement2;
.......
statementn;
return value;
} 有返回值的方法的格式
- 只要return关键字的语法执行,return语句所在的方法结束
3.方法名:
- 只要是合法的标识符就行
- 方法名最好见名知意
- 方法名最好是动词
- 方法名首字母要求小写,后面每个单词首字母大写
4.形式参数列表(形参)
- 形参是局部变量(是变量就有数据类型)
- 形参的个数可以是0-N个
- 多个形参之间用”逗号“隔开
形参中起决定性作用的是形参的数据类型,形参的名字就是局部变量的名字 - 在调用方法时,传递的真实数据被称为:“实参”
- 方法的参数实际上是将由方法处理的数据,因此参数的数据类型由要处理的
数据类型决定
实参和形参列表必须满足:
- 数量相同
- 类型对应相同
eg:带有参数的方法语法格式如下
void method_name(int sum1,int sum2){
statement1;
statement2;
......
statementn;
}
方法怎么调用?
方法如果只定义不调用将无法执行,需要调用
类名.方法名(实参列表); [这是一条java语句,表示调用某个类的某个方法,传递这样的实参]
二、方法重载
方法重载是一种编程技术,它允许两个或多个方法具有相同的名称,但具有不同类型的参数。通过使用重载技术,可以创建两个或多个具有相同名称的方法,但每个方法具有不同的参数。只有当我们希望方法处理不同类型的数据时,才能对方法进行重载。两个同名的方法能够处理不同类型的数据。
- 方法重载机制:overload /Java支撑/JavaScript不支持该机制
- 什么时候考虑方法重载:功能相似的时候尽可能让方法名相同
什么条件满足之后构成方法重载? - 同一个类中
- 方法名相同
- 参数列表不同(数量不同,顺序不同,类型不同)
- 方法重载只与方法名和参数列表有关
为了让大家更直观更明确的理解这三种不同请看如下代码:
//以下两个方法构成重载
public static void m1( ){ }
public static void m1( double a){ }
//以下两个方法构成重载
public static void m2( ){ int a,double b}
public static void m2( double a,int b){ }
//以下两个方法构成重载
public static void m3( int a){ }
public static void m3( double a){ }
//编译错误:以下不是方法重载,是发生了方法重复
public static void m4(int a,int b ){ }
public static void m4( int b,int a){ }
**注意!这并不是顺序不同**
三、方法递归
递归方法是调用自身的方法。递归是一种允许方法调用自身的编程技术。递归方法将重复调用它自身,因此我们需要一个使调用停止的条件
a( ){
a( );
}
- 递归过程将从最小的参数值开始调用自己,然后调用最大的参数值
- 使用递归方法解决问题与使用循环语句解决问题具有相同的工作原理,因此,可以用循环语句解决的问题也可以用递归方法解决
- 递归必须有结束条件
- 递归耗内存,会报有Java.langstackoverflowError栈内存溢出错误