JAVA中值类型和引用类型的区别

Posted

tags:

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

(1)值类型:数据存储在内存的堆栈中,从堆栈中可以快速地访问这些数据,因此,值类型表示实际的数据。
(2)引用类型:对象、数组、函数。

1、值类型:包括:sbyte、short、int、long、float、double、decimal(以上值类型有符号)byte、ushort、uint、ulong(以上值类型无符号)bool、char
2、引用类型:包括:对象类型、动态类型、字符串类型。二、具体区别:
1、值类型:byteb1=1;byteb2=b1;Console.WriteLine("0,1。",b1,b2);b2=
2;Console.WriteLine("0,1。",b1,b2);Console.ReadKey();解释:byteb1=1;声明b1时,在栈内开辟一个内存空间保存b1的值1。byteb2=b1;声明b2时,在栈内开辟一个内存空间保存b1赋给b2的值1。Console.WriteLine("0,1。",b1,b2);输出结果为1,1。b2=2;将b2在栈中保存的值1改为
2。Console.WriteLine("0,1。",b1,b2);输出结果为1,2。
2、引用类型:复制代码。
参考技术A 引用类型要用ref,表示你操作的数据是同一个,也就是说当你传一个参数给,另一个方法是,你在另一个方法中改变这个变量的值,那么调用这个方法是传入的变量的值也将改变,而值类型表示复制一个当前变量传给方法,当你在这个方法中改变这个变量的值时,最初生命的变量的值不会变

Java中值类型与引用类型

JAVA中值类型和引用类型的不同?

 1.定义

    引用类型表示你操作的数据是同一个,也就是说当你传一个参数给另一个方法时,你在另一个方法中改变这个变量的值,那么调用这个方法是传入的变量的值也将改变;值类型表示复制一个当前变量传给方法,当你在这个方法中改变这个变量的值时,最初生命的变量的值不会变。通俗说法: 值类型就是现金,要用直接用;引用类型是存折,要用还得先去银行取现。

 2.分类

   (1)值类型

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

          四类:1.整型 2.浮点型 3.字符型4.逻辑型

          八种:

                  1.整型3种: byte,short,int,long;

                  2.浮点型2种 :float,double

                  3.字符型1种 :char

                  4.逻辑型1种 :boolean

    (2)引用类型

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

 3.传递类型

      (1)值类型传递

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

      (2)引用类型传递

             引用类型之间赋值属于引用传递。引用传递传递的是对象的引用地址,也就是它的本身(自己最通俗的理解)。

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

 4.内存分配

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

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

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

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

          

 

   

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

Java中值类型和引用类型的区别

Java中值类型和引用类型的区别

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

Java中值类型与引用类型

C#详解值类型和引用类型区别

值类型和引用类型