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的对象存贮在堆里面)所以不会出现退栈而导致找不到变量值的情况。
上一篇: 判断手机上是否安装某个APP(iOS)