java中的引用类型和值类型

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java中的引用类型和值类型相关的知识,希望对你有一定的参考价值。

值类型和引用类型的不同

【定义】

引用类型 表示你操作的数据是同一个,也就是说当你传一个参数给另一个方法时,你在另一个方法中改变这个变量的值,那么调用这个方法时,传入的变量的值也将改变。

值类型 表示复制一个当前变量传给方法,当你在这个方法中改变这个变量的值时,最初声明的变量的值不会变。

【值类型】

值类型就是基本数据类型 基本数据类型常被称为四类 八种

  1. 整型:byte、short、int、long
  2. 浮点型:float、double
  3. 字符型:char
  4. 逻辑型:boolean

【引用类型】

除了四类、八种基本类型外,所有的类型都称为引用类型(数组,类,接口,字符串)

[值传递]    

基本数据类型赋值都属于值传递,值传递传递的是实实在在的变量值,是传递原参数的拷贝,值传递后,实参传递给形参的值,形参发生改变而不影响实参。

在弄清楚值类型与引用类型之后,最后一点就是值传递与引用传递

【引用传递】

引用类型之间赋值属于引用传递。引用传递传递的是对象的引用地址,也就是它的本身

引用传递:传的是地址,就是将实参的地址传递给形参,形参改变了,实参当然被改变了,因为他们指向相同的地址。

引用和我们的指针差不多,但是它不又不需要我们去具体的操作

【内存分配】

一个具有值类型(value type)的数据存放在栈内的一个变量中。即是在栈中分配内存空间,直接存储所包含的值,其值就代表数据本身。

值类型的数据具有较快的存取速度。

一个具有引用类型(reference type)的数据并不驻留在栈中,而是存储于堆中。即是在堆中分配内存空间,不直接存储所包含的值,而是指向所要存储的值,其值代表的是所指向的地址。当访问一个具有引用类型的数据时,需要到栈中检查变量的内容,

该变量引用堆中的一个实际数据。引用类型的数据比值类型的数据具有更大的存储规模和较低的访问速度。

Java中有垃圾回收机制,栈内存中的变量随着方法的结束内存自然销毁了,而用引用类型的时候,当方法结束的时候,这个对象可能被另一个引用类型所应用,不会销毁,只有当一个对象没有任何引用变量引用的时候,垃圾回收机制才会回收

2,为什么Java中数据的存放有堆和栈之分?

技术分享

 

以上是关于java中的引用类型和值类型的主要内容,如果未能解决你的问题,请参考以下文章

理解Java中的引用传递和值传递

(转载)理解Java中的引用传递和值传递

java中的引用类型和值类型

java引用传递和值传递

c#中的引用类型和值类型有啥区别?

NET基础:引用类型和值类型