13方法

 

方法的执行在栈中,加载在方法区

访问修饰符 返回值类型 方法名(参数1,参数2);

    public static void delect(int i,int j)
    {
        
    }

这个方法的方法签名是delect(int,int)

调用方法的时候:先是进行精确匹配,如果没有精确匹配的方法,那么就进行相对精确的匹配

方法调用的时候如果传入的是基本数据类型,相当于是值的拷贝,那么形参的改变不影响实参,如果是引用数据类型,相当于传入的是地址,这个时候形参的改变会影响到实参

方法的重载:

在一个类中,出现了方法名一致但是参数列表不一致的方法 方法是根据方法签名进行区分的

相对精确匹配的数据类型必须小转大

    public static void main(String[] args) {
        int i=1;
        //m(1.0,1.0);

    }
    public static void m(int i,int j)
    {
        System.out.println("int,int");
    }
    public static void m(int i,double j) {
        System.out.println("int,double");
    }
    public static void m(double j,int i) {
        System.out.println("double,int");
    }

 方法的传值

 

    //所有的方法执行在栈中
    public static void main(String[] args) {
        int i=1;
        int[] arr={1,2,3};
        //调用方法
        //实参---实际赋予参数的值
        //如果传入的实参是基本类型,就是值的拷贝
        //m(i);//1
        //m(arr[1]);//1  数组元素---基本类型

        //如果参数是引用数据类型,就是地址值的拷贝
        //方法中拿到拷贝过来的地址值找到堆内存改变元素
        //就会对原堆空间影响
        //n(arr); //10
        //方法中拿到拷贝过来的地址值如果找到的不是原堆空间
        //做任何操作影响都不会影响原堆空间
        //mn(arr);//1
        System.out.println(arr[0]);
    }
    //形参---用于接收的参数
    public static void m(int i){
        i++;
        //System.out.println(i);
    }

    public static void n(int[] arr){//数组类型---数组地址值
        arr[0]=10;
    }

    public static void mn(int[] arr){
        arr=new int[4];
        arr[0]=10;
    }

方法的递归

方法中调用了方法的本身

public class HellowWorld {
    public static void main(String[] argv ) {
        System.out.println(sum(11));
    }//endmain,

    public static int sum(int i)
    {
        if(i==1) //递归的出口
            return i;
        return i+sum(--i);


    }
}//endclass

 

原文地址:https://www.cnblogs.com/xuwangqi/p/11043765.html