方法的定义
方法的调用
方法的概念
-
方法是解决一类问题的步骤的有序集合
-
方法被包含在类中或对象里。
-
方法的本质就是函数,一个方法完成一个功能,后期的扩展。
-
静态方法(static)可以用类名来调用方法。如:One.add();
-
非静态方法(实例化类来调用 new)
-
静态方法效率上要比实例化高,静态方法的缺点是不自动进行销毁,而实例化的则可以做销毁
// 方法的创建
修饰符 返回值类型 方法名(参数类型 参数名){
方法体
return 返回值;
}
方法的使用(递归概念)
-
方法自己调用自己。
-
递归头:什么时候不调用自己。
-
递归体:什么时候调用自己。
用递归求阶乘5!
递归用的自己调用自己时会创建栈,自己调用自己太多会导致内存崩溃。
public int f(int n){
if(n == 1){
return 1;
}else{
return n*f(n-1);
}
}
方法的参数
-
形参(用于接收实参传递过来的)如:
public int sum(int number)
-
实参(实际给的值)如:
类名.方法名(实参);
-
命令行传参javac 编译好 , java 包名.Day02 参数
可变参数可变参数一个方法只能有一个,还必须在参数的最后。
public static int sum(int a,int... b){
for (int i=0;i<b.length;i++) {
// 通过b下标把可变参数的值取出。
a += b[i];
}
return a;
}
方法的重载(overload)
-
参数数量不同
-
参的类型不同
-
参数顺序不同
方法重载必须是在同一作用域中
public int add(int a,int b){//一个类中有多个同名不同参数的方法
return a+b;
}
public int add(int a,double b){//编译器根据传参的不同自动判断具体调用那个重载方法
return a+b;
}
值传递(String 和包装器类按值传递)
值传递的本质是赋值,是把实际参数赋值给行式参数的过程(形参改变实参不变)
public static void main(String[] args){
int a = 1;
System.out.println(a); //结果为:1
change(a); //结果为11
System.out.println(a); //结果为:1
}
public static void change(int a){
a = 10;
a++;
System.out.println("change的a:"+a);
}
引用传递
引用传递:是传递一个对象,本质还是值传递(形参改变实参改变)
public class Asd{
public static void main(String[] args){
Person per = new Person();
System.out.println(per.name); // 结果为:Null
Asd.change(per);
System.out.println(per.name); // 结果为:余
}
public void change(Person per){ //对象虚地址
per.name = "余";
}
}
class Person{
String name;
}