欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Java为什么不需要指针

程序员文章站 2022-07-15 13:05:32
...

先分析一段简单的代码

    //交换值
    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的对象生存周期,在new完Java对象后,是由系统去执行析构函数(Java里貌似没析构函数的概念),可以理解为变量(属性)存储在里,但是对象的生存周期又特别长,(Java的对象存贮在堆里面)所以不会出现退栈而导致找不到变量值的情况。