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

Python011

JAVA中值类型和引用类型的区别,第1张

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

(2)引用类型:对象、数组、函数。

1、值类型:包括:sbyte、short、int、long、float、double、decimal(以上值类型有符号)byte、ushort、uint、ulong(以上值类型无符号)bool、char

2、引用类型:包括:对象类型、动态类型、字符串类型。二、具体区别:

1、值类型:byteb1=1byteb2=b1Console.WriteLine("{0},{1}。",b1,b2)b2=

2Console.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、引用类型:复制代码。

java中有8中基本数据类型和3中引用类型

1、8种基本类型

一)、4种整型

byte 1字节 -128——127

short 2 字节 -32,768 —— 32,767

int 4 字节 -2,147,483,648 ——2,147,483,647(超过20亿)

long 8 字节 -9,223,372,036,854,775,808——9,223,372,036854,775,807

二)、 2种浮点类型

float4 字节 32位IEEE 754单精度(有效位数 6 – 7位)

double 8 字节 64位IEEE 754双精度(有效位数15位)

三)、1种Unicode编码的字符单元

char2 字节 整个Unicode字符集

四)、1种真值类型

boolean1 位 True或者false

2、3种引用类型

类class

接口interface

数组array

我们在使用java编程开发语言开发软件的时候通常都会new对象,然后通过对对象的引用来实现不同的编程需求,而今天电脑培训http://www.kmbdqn.cn/就一起来了解一下,java编程开发语言中都有哪些常见的引用方法。

1:虚引用1.1简介:虚引用是所有引用中强度弱的,它完全类似于没有引用,在java.reflact.PhantomReference类中实现。

虚引用对象本身没有太大影响,对象甚至感觉不到虚引用的存在。

如果一个对象存在虚引用,那么它和没有引用的效果大致相同,虚引用无法引用任何堆中的对象作用:虚引用主要用于跟踪对象被JVM垃圾回收的状态,可以通过它来手机GC的行为。

可以通过检查与虚引用关联的引用队列中是否已经包含指定的虚引用,从而了解虚引用锁引用的对象是否被回收。

注意:虚引用无法单独使用,虚引用必须和引用队列(ReferenceQueue)联合使用.被虚引用所引用对象被垃圾回收后,虚引用将被添加到引用队列中。

2:弱引用简介:弱引用和虚引用有点类似,不同之处在于虚引用锁引用的对象生存期比虚引用长一点。

虚引用在java.reflact.WeakReference类实现。

在系统进行垃圾回收的时候,不管系统内存是否足够,总是回收该对象所占用的内存.但是弱引用的强度是要大于虚引用的3:软引用简介:软引用比弱引用的强度高一点,它是通过java.reflact.SoftReference来实现。

对于软引用来说,当系统内存空间足够时,它不会被系统回收,程序中改对象的引用也是有效的。

而当系统的内存空间不够时,系统将会回收它。

作用:软引用是强引用好的替代,它一定程度上可以避免系统内存不足的异常,可以充分使用软引用来解决内存紧张的问题。

4:强引用简介:强引用很常见,在平时的程序中,我们新new一个对象,比如Objectobject=newObject()那么这个object就是指向object对象的强引用。

强引用的特点就是:被引用的java对象绝对不会被垃圾回收机制回收,即使系统的内存非常紧张,即使java以后也用不到,jvm不会回收强引用所引用的java对象。