区别是定义不同。引用是说变量保存内容的,变量保存了一堆内存数据,我们把变量叫做对数据的引用。调用指的是编写代码的时候使用定义好的代码块(函数/方法),这个叫做调用方法或调用函数,通常来说引用是在栈里建立的内存,该内存的内容是堆里的对象的地址。
两者定义
不要因为后面都有个”用”字就以为他俩是类似的东西,实际上这两个词完全没有关系。引用是说变量保存内容的,变量保存了一堆内存数据,我们把变量叫做对数据的引用。调用指的是编写代码的时候使用定义好的代码块(函数/方法),这个叫做调用方法或调用函数。
通常来说引用是在栈里建立的内存,该内存的内容是堆里的对象的地址。而调用值得是执行某个函数, 对应的是cpu 指令。两者是完全不同的东西。另外引用还有一种常见a引用了b,这时引用值得是按使用了b的东西,也可能使用调用了b的方法。也可能是把b作为自己的成员或者使用了b的成员等等。
强引用,软引用,弱引用,虚引用。不同的引用类型主要体现在GC上。
强引用
如果一个对象具有强引用,它就不会被垃圾回收器回收。即使当前内存空间不足,JVM也不会回收它,而是抛出 OutOfMemoryError 错误,使程序异常终止。如果想中断强引用和某个对象之间的关联,可以显式地将引用赋值为null,这样一来的话,JVM在合适的时间就会回收该对象。
软引用
在使用软引用时,如果内存的空间足够,软引用就能继续被使用,而不会被垃圾回收器回收,只有在内存不足时,软引用才会被垃圾回收器回收。
弱引用
具有弱引用的对象拥有的生命周期更短暂。因为当 JVM 进行垃圾回收,一旦发现弱引用对象,无论当前内存空间是否充足,都会将弱引用回收。不过由于垃圾回收器是一个优先级较低的线程,所以并不一定能迅速发现弱引用对象。
虚引用
顾名思义,就是形同虚设,如果一个对象仅持有虚引用,那么它相当于没有引用,在任何时候都可能被垃圾回收器回收。
延伸阅读:
什么是Java
Java具有大部分编程语言所共有的一些特征,被特意设计用于互联网的分布式环境。Java具有类似于C++语言的”形式和感觉”,但它要比C++语言更易于使用,而且在编程时彻底采用了一种”以对象为导向”的方式。使用Java编写的应用程序,既可以在一台单独的电脑上运行,也可以被分布在一个网络的服务器端和客户端运行。另外,Java还可以被用来编写容量很小的应用程序模块或者applet,做为网页的一部分使用。applet可使网页使用者和网页之间进行交互式操作。
Java是Sun微系统公司在1995年推出的,推出之后马上给互联网的交互式应用带来了新面貌。最常用的两种互联网浏览器软件中都包括一个Java虚拟机。几乎所有的操作系统中都增添了Java编译程序。
使用Java编写的应用程序,既可以在一台单独的电脑上运行,也可以被分布在一个网络的服务器端和客户端运行。另外,Java还可以被用来编写容量很小的应用程序模块或者applet,做为网页的一部分使用。applet可使网页使用者和网页之间进行交互式操作。
文章标题:JAVA语言中引用和调用有区别吗,发布者:小编,转载请注明出处:https://worktile.com/kb/p/37811