Java一篇简单的方法调用了解方法基本内存原理

一、方法运行到销毁的过程

public class Method{

    public static void main(String[] args){

        eat();        

    }

     public static void eat(){

        study();        
        System.out.println("吃饭");
        sleep();

    }

    public static void sleep(){

        System.out.println("睡觉");     

    }

    public static void study(){

        System.out.println("学习");     

    }
}

在栈中方法以先进后出的规则存储

程序开始时存储方法:main() => eat() => study() => sleep()

输出结果:学习 - 吃饭 - 睡觉

当所有程序执行完毕后销毁方法: sleep() => study()=> eat() => main()

想象一把枪,子弹第一个放入弹匣的,打完所有子弹,而第一个放入弹匣的子弹是最后一个被打出的,这就是典型的先进后出的原则。

二、方法带参基本数据类型时运行的结果

public class Method{

    public static void main(String[] args){
        int num = 10;
        System.out.println(num) // 打印结果10
        run(num)       
        System.out.println(num) // 打印结果?10?20?
    }

     public static void run(int num){
        num = 20;
    }
}

请思考10秒,并在评论敲出你理想中的答案,并解释为什么会是它,最后再看答案。

这里的答案是:10,因为在方法中基础变量给的是真实的数据,不受参数赋值的影响。

如果想打印出 20 请看下面的代码修改。

public class Method{

    public static void main(String[] args){
        int num = 10;
        System.out.println(num) // 打印结果10
        num = run(num)   // 赋值 
        System.out.println(num) // 打印结果 20
    }

     public static int run(int num){
       int num1 = 20; // 申明变量赋值
       return num1;  // 这里需要返回num1的变量
    }
}

 三、方法带参引用数据类型时运行的结果

public class Method{

    public static void main(String[] args){
        int [] num = {1,2,3};
        System.out.println(num[1]) // 打印结果2
        run(num)       
        System.out.println(num[1]) // 打印结果20
    }

     public static void run(int [] num){
        num[1] = 20;
    }
}

仔细观看第二步和第三步的区别,引用数据类型,赋值的地址值,可以直接修改数组对应下标的值。 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一条小仔仔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值