当前位置: 主页 > JAVA语言

java 函数指针-Java的交换函数和变量退栈后找不到了

发布时间:2023-06-13 09:19   浏览次数:次   作者:佚名

先分析一段简单的代码

    //交换值
    public static void swap(int a,int b){
        int temp = a;
        a = b;
        b = temp;
    }
//--------以下调用swap方法
        int a=1;
        int b=2;
        swap(a,b);//调用后依旧是a = 1, b = 2

swap是一个交换函数,目的是交换 a 和 b 的值,但是当函数调用结束,函数和变量退栈后,a 和 b 在 swap的值将找不到(此时 a 和 b 的值并没有消失,而是函数退栈后找不到了!),所以这个时候必须要指针指向 a 和 b 的内存空间,即使在退栈后,也能通过指针所指向的内存地址找到a 和 b 的值。

这段代码是使用Java写的,Java同样会有这样的问题java 函数指针,但是Java是如何避免的?

Java是面向对象语言,很多时候都是通过对对象的操作来完成的,这涉及到Java的对象生存周期java 函数指针,在new完Java对象后,是由系统去执行析构函数(Java里貌似没析构函数的概念),可以理解为变量(属性)存储在里,但是对象的生存周期又特别长,(Java的对象存贮在堆里面)所以不会出现退栈而导致找不到变量值的情况。