java中值类型和引用类型的区别
4个回答
2022-11-07 · 百度认证:IT168官方账号,优质数码领域创作者
关注
展开全部
(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、引用类型:复制代码。
(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、引用类型:复制代码。
2018-08-01 · 百度知道合伙人官方认证企业
育知同创教育
1【专注:Python+人工智能|Java大数据|HTML5培训】 2【免费提供名师直播课堂、公开课及视频教程】 3【地址:北京市昌平区三旗百汇物美大卖场2层,微信公众号:yuzhitc】
向TA提问
关注
展开全部
1:Java 提供两种不同的类型:引用类型和原始类型(或内置类型)。Int是java的原始数据类型,Integer是java为int提供的封装类。Java为每个原始类型提供了封装类。 原始类型封装类 booleanBoolean charCharacter byteByte shortShort intInteger longLong floatFloat doubleDouble 引用类型和原始类型的行为完全不同,并且它们具有不同的语义。引用类型和原始类型具有不同的特征和用法,它们包括:大小和速度问题,这种类型以哪种类型的数据结构存储,当引用类型和原始类型用作某个类的实例数据时所指定的缺省值。对象引用实例变量的缺省值为 null,而原始类型实例变量的缺省值与它们的类型有关。
2:使用场合,例如说
往ArrayList里面add,必须add的是Object
而int不是对象,就只能把Integer添加进去
3:int是基本类型,
Integer是int对应的封装类,
声明int a; a自动赋值0;
声明Integer a; a自动赋值为null
4:int是基本的数据类型
integer是类
int的初始值为0,不能为null,如果需要为null的时候,需要用integer
2:使用场合,例如说
往ArrayList里面add,必须add的是Object
而int不是对象,就只能把Integer添加进去
3:int是基本类型,
Integer是int对应的封装类,
声明int a; a自动赋值0;
声明Integer a; a自动赋值为null
4:int是基本的数据类型
integer是类
int的初始值为0,不能为null,如果需要为null的时候,需要用integer
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
1、值类型变量的值是值本身,而引用类型变量的值的是对象的引用地址
2、通常情况下,值类型的变量在栈内存中,一旦脱离了作用域就会被自动释放;而引用类型的变量指向的对象在堆内存中,当对象没有被引用时,会被JVM的垃圾回收集(GC)回收。
3、作为参数传递时,二者都是传递给形参的是值的副本,但因为引用类型的值是对象的地址,所以其副本也是地址,因此在方法内部通过这个形参同样能对指向的对象的修改也能生效。但是如果在函数内部对这个形参进行重新赋值,同样不会影响到实际参数。因此,在Java中所有的参数传递其实都是值传递。
2、通常情况下,值类型的变量在栈内存中,一旦脱离了作用域就会被自动释放;而引用类型的变量指向的对象在堆内存中,当对象没有被引用时,会被JVM的垃圾回收集(GC)回收。
3、作为参数传递时,二者都是传递给形参的是值的副本,但因为引用类型的值是对象的地址,所以其副本也是地址,因此在方法内部通过这个形参同样能对指向的对象的修改也能生效。但是如果在函数内部对这个形参进行重新赋值,同样不会影响到实际参数。因此,在Java中所有的参数传递其实都是值传递。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
值类型改变,原来的值不变;引用类型相反;
可以简单的理解为值类型传递的是值类型数据的副本,引用传递的是其本身;
可以简单的理解为值类型传递的是值类型数据的副本,引用传递的是其本身;
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询