一、概念
理解:用于描述类或对象的行为或功能,定义在类体中,属于类的成员
二、好处
1、提高代码的重用性和维护性
2、从调用层面上,调用者不用关心方法的内部实现细节,调用比较简单。只需要知道:
叫什么(方法名)
干什么(方法功能)
三、定义语法 ★
[修饰符] 返回类型 方法名(参数列表){
方法体
}
四、方法五要素
1、修饰符
特点:可选
public 公共的,任意类都可以调用该方法
2、返回类型
说明:某些行为或功能执行结束后需要返回给调用方一个具体的值,则将值的类型标注成返回类型,如果行为或功能执行结束后没有返回值,则返回类型写成void即可
特点:
①一个方法至多有一个返回值,要求返回值的类型和返回类型一致或兼容
②返回类型可以为任意类型,包含基本或引用
③如果方法有返回值,则方法体中要求必须有return语句,而且return的值的类型必须和返回类型一致或兼容
如果方法没有返回值,则方法体不用加return语句,如果非加,则写成 return;
④如果方法有返回值,则必须保证所有路径下都可以return值;
public int m(int i){
if(i>5)
return 10;
return 99;
}
3、方法名
遵循标识符的命名规则和规范(同变量的规范):见名知义,且遵循驼峰命名法
4、参数列表
说明:某些方法的执行需要调用方传递源数据,否则无法执行。我们把这些源数据称为参数
特点:
①参数可以为多个,语法如下:
(类型 参数名1,类型 参数名1,...,类型 参数名n)
②参数类型可以为任意类型,包含基本类型或引用类型
③参数的本质就是一个局部变量,也必须赋值后才能使用,但这个赋值一般是隐式赋值的(传参时)
④方法定义时的参数称为形式参数,简称形参;方法调用时的参数称为实际参数,简称实参
形参和实参的类型、个数必须一致,参数名无要求
5、方法体
可以包含0条或任意多条逻辑语句。
形式:输入、输出、变量、运算、分支、循环、方法调用
五、调用语法 ★
1、本类内方法调用:方法名(实参列表);
2、跨类中方法调用:对象或类名.方法名(实参列表);
注意:
如果待调用的方法有返回值,则最好用变量接受或做其他处理
如果待调用的方法没有返回值,则不能当成表达式做任何处理
六、调用机制 √
每次方法调用,都伴随“入栈”的操作
每次调用结束,都伴随“出栈”的操作
七、方法的传参 ★
特点:
java中方法按“值”传递。
参数类型为基本类型,则值代表元素内容,传递是一个拷贝,形参的改变不影响实参
参数类型为引用类型,则值代表地址,传递是一个地址(引用),形参的改变影响实参
示例:
public static void main(String[] args){
int[] arr = {1,2,3};
update(arr);
print(arr);//1 2 3
}
public static void update(int[] arr){
arr = new int[3];
arr[0]=100;
print(arr);//100 0 0
}
public static void print(int[] arr){
for(int i=0;i<arr.length;i++){
System.out.println(arr[i]);
}
}
八、方法的重载
1、定义:java中提供了一种机制,允许同一个类中多个同名但参数列表不同的方法存在
2、好处:
①解决了起名问题
②解决了记名麻烦问题
3要求:
①同一个类中
②方法名必须相同
③参数列表必须不同(参数类型、个数或顺序至少有一样不同)
④返回类型无要求
⑤修饰符无要求
九、可变参数的方法
1、理解:jdk5.0出现的新特性。java中允许将一个类中同名,同参数类型、同返回的多个方法抽取成一个可变参数的方法
2、语法:
修饰符 返回类型 方法名(参数类型...参数名){
//参数当做数组类型去使用
}
3、好处:
①提高重用性
②提高维护性和扩展性
4、特点:
①可变参数的实参允许0个或多个参数
②可变参数的实参允许数组类型
③可变参数可以和普通类型的参数同时出现在一个形参列表,但要求可变参数必须放在最后
④一个形参列表中最多有一个可变参数
⑤可变参数的方法、普通类型参数的方法实现了重载(注:不可以和同一类型的数组参数方法构成重载),传参时:
遵循:先找一致类型——>兼容类型——>可变参数
A a = new A();
a.m(10);//执行方法1
pubic class A{
public void m(int a){ } //方法1
public void m(double a){ } //方法2
public void m(int... a){}//方法3
}