如何查看在VB中实例化的对象哪些还在内存中占用着
1个回答
展开全部
首先明确一个概念,Java里只有“值传递”,没有“引用传递”。好吧,我知道很多人听到这个会觉得三观有点动摇,我来解释一下。
Java有一个分裂的类型系统,包括用户自定义类型,也就是大家都熟悉的Object及其各种子类,还有基本类型,也叫“值类型”:包括int、long、char等,以及一个没名字但是一般都被大家称之为reference的类型。Java中不能自定义值类型。
在Java中,无论是参数传递、函数返回值、赋值、以及参与表达式运算的所有东西,只能是值类型。也就是说对于f(x)这样一个函数调用,x是一个类型为reference的值类型,不是对象本身,返回值一样也只能是值类型。同样,a=b+c这样的表达式中,a、b、c也都只能是值类型。
值类型,顾名思义,只能是值传递的,也就是说,形参接受的实参永远是值的拷贝,所以f(x)这样的函数调用实际的含义是,将实参x的值拷贝一份,绑定给函数f定义中声明的形参。
如果之前一段真的让你的三观动摇了,下面我来把它们稳定一下,毕竟,稳定压倒一切,世界不会毁灭,下个月你也不需要那张船票。
如果Java中只有值传递。那么一个对象是怎样传递的呢?还记得我们刚才说过的么,Java中有一个没名字但是被大家称之为reference的值类型,当你写“SomeType obj=...”的时候,obj的类型其实并不是SomeType,而是一个只能兼容SomeType的reference(这里的兼容指obj只能用来引用SomeType及其子类,如果SomeType是一个interface,那么obj只能用来引用实现了SomeType的对象)。
依靠这个reference,Java实现了对象的传递。
如果此时你一恢复了神志,那么我们来解释一下题目中的代码:
User user = um.showUserById(JSONObject.getNames(uid)[0]);
user是一个兼容User类型的reference,“=”是一个赋值操作,这句话的含义就是,把=右边表达式返回的值赋给user这个reference,记住“=”右边返回的不可能是一个对象,只能是一个值,当然在这里这个值是一个reference,它可能指向一个对象,在这种情况下,该语句执行完之后,user和“=”右边返回的reference值相等,也就是说它们指向同一个对象。
Java有一个分裂的类型系统,包括用户自定义类型,也就是大家都熟悉的Object及其各种子类,还有基本类型,也叫“值类型”:包括int、long、char等,以及一个没名字但是一般都被大家称之为reference的类型。Java中不能自定义值类型。
在Java中,无论是参数传递、函数返回值、赋值、以及参与表达式运算的所有东西,只能是值类型。也就是说对于f(x)这样一个函数调用,x是一个类型为reference的值类型,不是对象本身,返回值一样也只能是值类型。同样,a=b+c这样的表达式中,a、b、c也都只能是值类型。
值类型,顾名思义,只能是值传递的,也就是说,形参接受的实参永远是值的拷贝,所以f(x)这样的函数调用实际的含义是,将实参x的值拷贝一份,绑定给函数f定义中声明的形参。
如果之前一段真的让你的三观动摇了,下面我来把它们稳定一下,毕竟,稳定压倒一切,世界不会毁灭,下个月你也不需要那张船票。
如果Java中只有值传递。那么一个对象是怎样传递的呢?还记得我们刚才说过的么,Java中有一个没名字但是被大家称之为reference的值类型,当你写“SomeType obj=...”的时候,obj的类型其实并不是SomeType,而是一个只能兼容SomeType的reference(这里的兼容指obj只能用来引用SomeType及其子类,如果SomeType是一个interface,那么obj只能用来引用实现了SomeType的对象)。
依靠这个reference,Java实现了对象的传递。
如果此时你一恢复了神志,那么我们来解释一下题目中的代码:
User user = um.showUserById(JSONObject.getNames(uid)[0]);
user是一个兼容User类型的reference,“=”是一个赋值操作,这句话的含义就是,把=右边表达式返回的值赋给user这个reference,记住“=”右边返回的不可能是一个对象,只能是一个值,当然在这里这个值是一个reference,它可能指向一个对象,在这种情况下,该语句执行完之后,user和“=”右边返回的reference值相等,也就是说它们指向同一个对象。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询