1、作用:将一段独立功能的代码放入方法中,方便调用
2、定义:对象的动作就是方法
3、方法声明:访问修饰符 返回值类型 方法名(参数列表){方法体}
(1)访问修饰符:规定方法的访问权限 public公共的;
(2)返回值类型:通过执行方法向外界返回的结果,如果没有结果用void;
(3)方法名:遵循标识符的命名规则;
(4)参数列表:外界向方法提供的原料;
4、注意事项:
(1)在一个类中正常是不允许定义两个同名方法的;
(2)方法不能嵌套定义,即不能一个方法中又定义另外一个方法;
如:
public class Test {
public static void main(String[] args) {
MathCalc m=new MathCalc();
int sum=m.sum(6, 7, 8);
System.out.println(sum); //21
}
}
class MathCalc{
public int sum(int a,int b,int c) {
int sum=a+b+c;
return sum;
}
}
5、方法重载:在一个类中定义名字相同的多个方法,保证参数列表不一致(参数类型、参数个数)
如:
public class Test {
public static void main(String[] args) {
MathCalc m=new MathCalc();
int sum=m.sum(6, 7, 8);
System.out.println(sum); //21
int sum2=m.sum(5,7);
System.out.println(sum2); //12
}
}
class MathCalc{
public int sum(int a,int b) {
int sum=a+b;
return sum;
}
public int sum(int a,int b,int c) {
int sum=a+b+c;
return sum;
}
}
6、可变参数:是在定义方法时不需要指定参数的个数,可以接收任意多个参数
(1)语法: 数据类型... 参数名
(2)注意事项:
①可变参数在方法中可以像数组一样使用;
②可变参数能直接传递数组;
③在类中固定参数的方法会优先于可变参数的方法执行;
如:
public class Test {
public static void main(String[] args) {
MathCalc m=new MathCalc();
int sum=m.sum(4,5,6,7,8);
System.out.println(sum); //30
}
}
class MathCalc{
public int sum(int...array) {
int sum=0;
for(int i=0;i<array.length;i++) {
sum+=array[i];
}
return sum;
}
}
7、方法参数的类型: 匿名类型 基本类型 引用类型
(1)基本类型:在方法中对值的修改不会影响主方法
public class New {
public static void main(String[] args) {
MathCalc m=new MathCalc();
int num=5;
m.calc(num);
System.out.println(num);
}
}
class MathCalc{
public void calc(int num) {
++num;
System.out.println(num);
}
}
输出结果:6、5
(2)引用类型:在方法中对值的修改会影响主方法
public class Test{
public static void main(String[] args) {
MathCalc m=new MathCalc();
int[] num= {5};
m.calc(num);
System.out.println(num[0]);
}
}
class MathCalc{
public void calc(int[] num) {
++num[0];
System.out.println(num[0]);
}
}
输出结果:6、6
(3)匿名类型:传递一个对象,而这个对象没有对象名;
8、方法的递归调用: 自身调用自身
如:n的阶乘
public class New {
public static void main(String[] args) {
MathCalc m=new MathCalc();
Scanner input=new Scanner(System.in);
System.out.println("请输入一个整数:");
int n=input.nextInt();
int result=m.f(n);
System.out.println(n+"的阶乘是:"+result);
}
}
class MathCalc{
public int f(int n) {
if(n==1) {
return 1;
}else {
return n*f(n-1);
}
}
}
输出结果:假如输入5,结果是120