- 浏览: 115348 次
- 性别:
- 来自: 南京
文章分类
- 全部博客 (135)
- java (135)
- [转]c# 画圆角矩形 (1)
- 设计模式生活实例 (1)
- .nET2.0小技巧 (1)
- 从另一个角度看敏捷实践(一)--IPM:承诺的仪式 (1)
- javascript字符串转json对象 (1)
- 使用BeanUtils时,Date类型值为空的解决方法 (1)
- Lenovo V460+Ubuntu 11.10 无线网问题 (1)
- Lucene 索引和搜索过程核心类详解 (1)
- Android短信编解码方式 (1)
- 股神巴菲特十大致富秘籍 (1)
- Map遍历的三种方法 (1)
- Android中用Toast.cancel()方法优化toast内容的显示 (1)
- ViewFlipper “Receiver not registered” Error (1)
- javax.xml.transform.TransformerFactoryConfigurationError (1)
- JNI调用的注意事项 (1)
- JUnit单元测试感悟 (1)
- 用C#写定时关机的程序 (1)
- ASP.NET开发工具Web Matrix介绍 (1)
- MapXtreme2004代码 MapControl控件中显示地图文件 (1)
- 《使用 Microsoft .NET 的企业解决方案模式》读书笔记3 (1)
- 微创短信开发平台 (1)
- 谈谈Q+平台的技术实现 (1)
- 手机防盗软件实现(源码) (1)
- 虚析构函数(总结 帖子) (1)
- c语言中去除const修饰 (1)
- ORA-01012: not logged on 解决办法 (1)
- paypal提现如何省钱 (1)
- 数独suduku (1)
- MyISAM InnoDB 区别 (1)
- 随 笔 (1)
- Android上的log,日志相关 (1)
- 百度质量部实习居然通过了~ (1)
最新评论
-
野狐禅:
ext.get('imagebrowse') is null
ExtJs上传图片预览功能 -
zhuyl_wind:
不切实际,呵呵
[]5年内买车买房-理财篇 -
in南京:
关键你那两千块钱就够交一个多月的房租!换个城市你那六百也远远不 ...
[]5年内买车买房-理财篇 -
javac_xinyun:
呵呵,看完了,确实不错,貌似第一年的房租每月算进去 ,人际关系 ...
[]5年内买车买房-理财篇 -
dishikun:
貌似很不错,就是没把房租算进去!
[]5年内买车买房-理财篇
java对象的深层复制是指java对象a本身被clone成新对象b,同时a的属性也是被clone成新对象,赋值到a的各个属性上去,a与b的相同属性都引用到不同的对象;
java对象的浅层复制是指java对象a本身被clone成新对象b,但a的属性没有被clone处理,只是把a的各个属性所指的对象赋值到b对应的属性上,a与b的相同属性都引用到同一个对象。
我们一般使用到对象复制是对象浅层复制,也就是没有复制属性成新的属性。
一般有三种方法对象的浅度复制:
(1)通过调用对象set方法来实现,属性个数比较少时适用。
(2) 通过复写object.clone来实现。
(3)通过工具类,如spring的beanutils, 属性个数很多时候适用。
另外,如果java对象的属性都是只读类的话,如原始数据类型、数据封装类、string、bigdecimal、biginteger等,那么浅层复制与深层复制达到的效果是一样的。如果属性有date或其他自定的数据类,则一定的小心了,因为这时浅层复制后对象b的属性f1与原始对象a的对应属性f2,都是引用到同一个对象o,如果通过b.f1的方法改了o的值,则修改会影响到a.f1,这时也就会发生互串的情况。以下例子可以说明这个情况。
tv.t:thu jan 01 08:16:40 cst 1970
tv.t1:t1
-------------------------------
tv.t1==tv2.t1:true
tv.t==tv2.t:true
tv.t::thu jan 01 08:33:20 cst 1970
-------------------------------
tv.t1==tv3.t1:true
tv.t==tv3.t:true
tv.t:::thu jan 01 16:20:00 cst 1970
大家可以看出,(1)(2)的代码操作的是tv2、tv3,但是tv的t的值发生了改变。因为t是date类型的,而date是一个可变的类,这样浅层复制就出现属性值互串的情况。
java对象的浅层复制是指java对象a本身被clone成新对象b,但a的属性没有被clone处理,只是把a的各个属性所指的对象赋值到b对应的属性上,a与b的相同属性都引用到同一个对象。
我们一般使用到对象复制是对象浅层复制,也就是没有复制属性成新的属性。
一般有三种方法对象的浅度复制:
(1)通过调用对象set方法来实现,属性个数比较少时适用。
testvo a = new testvo(); a.setname("xiemingmei"); a.setbirthplace("hunan"); testvo b = new testvo(); b.setname(a.getname()); b.setbirthplace(a.getbirthplace());
(2) 通过复写object.clone来实现。
class testvo implements cloneable { ....... testvo clone(){ return (testvo)super.clone(); } } testvo a = new testvo(); a.setname("xiemingmei"); a.setbirthplace("hunan"); testvo b = a.clone();
(3)通过工具类,如spring的beanutils, 属性个数很多时候适用。
testvo a = new testvo(); a.setname("xiemingmei"); a.setbirthplace("hunan"); testvo b = new testvo(); beanutils.copyproperties(a, b);
另外,如果java对象的属性都是只读类的话,如原始数据类型、数据封装类、string、bigdecimal、biginteger等,那么浅层复制与深层复制达到的效果是一样的。如果属性有date或其他自定的数据类,则一定的小心了,因为这时浅层复制后对象b的属性f1与原始对象a的对应属性f2,都是引用到同一个对象o,如果通过b.f1的方法改了o的值,则修改会影响到a.f1,这时也就会发生互串的情况。以下例子可以说明这个情况。
testvo tv = new testvo();tv.sett1("t1");tv.sett(new date(1000000l));system.out.println("tv.t:" + tv.gett());system.out.println("tv.t1:" + tv.gett1());system.out.println("-------------------------------"); testvo tv2 = (testvo)tv.clone();system.out.println("tv.t1==tv2.t1:" + (tv.gett1() == tv2.gett1()));system.out.println("tv.t==tv2.t:" + (tv.gett() == tv2.gett()))(1)tv2.gett().settime(2000000l);system.out.println("tv2.t:" + tv2.gett());system.out.println("-------------------------------"); testvo tv3 = new testvo();beanutils.copyproperties(tv, tv3); system.out.println("tv.t1==tv3.t1:" + (tv.gett1() == tv2.gett1()));system.out.println("tv.t==tv3.t:" + (tv.gett() == tv2.gett())); (2)tv3.gett().settime(30000000l);system.out.println("tv3.t:" + tv3.gett());输出结果为:
tv.t:thu jan 01 08:16:40 cst 1970
tv.t1:t1
-------------------------------
tv.t1==tv2.t1:true
tv.t==tv2.t:true
tv.t::thu jan 01 08:33:20 cst 1970
-------------------------------
tv.t1==tv3.t1:true
tv.t==tv3.t:true
tv.t:::thu jan 01 16:20:00 cst 1970
大家可以看出,(1)(2)的代码操作的是tv2、tv3,但是tv的t的值发生了改变。因为t是date类型的,而date是一个可变的类,这样浅层复制就出现属性值互串的情况。
发表评论
-
百度质量部实习居然通过了~
2012-02-08 12:23 958[size=small;]? ? ?本来打算在软工所苦 ... -
Android上的log,日志相关
2012-02-07 14:18 1491摘自:http://blog.csdn.net/met ... -
随 笔
2012-02-04 13:39 568金风玉露一相逢,便胜却人间无数。英文版: chemis ... -
MyISAM InnoDB 区别
2012-02-02 16:59 702<h1 id="artibody ... -
数独suduku
2012-01-31 14:38 887sudu sudu sudu sudu sudu su ... -
paypal提现如何省钱
2011-12-28 16:58 1182据PayPal中文注册得知,如今很多收样品费的外贸商户 ... -
ORA-01012: not logged on 解决办法
2011-12-28 13:08 3432<span style="font-f ... -
c语言中去除const修饰
2011-12-21 10:54 1386[size=16px;]<span style= ... -
虚析构函数(总结 帖子)
2011-12-21 09:54 673<span style="" ... -
手机防盗软件实现(源码)
2011-12-20 12:54 916<a href="http://blo ... -
谈谈Q+平台的技术实现
2011-12-20 09:49 935这篇文章是我个人 ... -
微创短信开发平台
2011-12-19 11:39 737在网上闲逛,发现了一个站点,微创短信开发平台(http ... -
《使用 Microsoft .NET 的企业解决方案模式》读书笔记3
2011-12-19 10:24 724第3章 Web表示模式 没有一个设计策略能够适合所有情 ... -
MapXtreme2004代码 MapControl控件中显示地图文件
2011-12-15 14:29 859::<?xml:namespace prefix ... -
ASP.NET开发工具Web Matrix介绍
2011-12-15 13:39 937<p class="MsoPlain ... -
用C#写定时关机的程序
2011-12-15 11:14 676</span></font>& ... -
JUnit单元测试感悟
2011-12-14 11:29 836<p class="MsoNorma ... -
JNI调用的注意事项
2011-12-14 09:34 720JNI的简单教程网上很多,看看就能够明白,照着操作也基 ... -
javax.xml.transform.TransformerFactoryConfigurationError
2011-12-13 13:34 815<span style="" ... -
ViewFlipper “Receiver not registered” Error
2011-12-12 10:59 1098偶尔出现这个错误: <span> < ...
相关推荐
由于特征模型的局限性,我们引入卷积特征,也就是经过卷积神经网络得到的特征信息,包括浅层信息和深层信息,浅层信息指的是:前级的卷积层得到的特征图,感受野更加关注的是图像细节纹理等特征。深层信息包括:后级...
copy() 仅复制对象本身,而不对其中的子对象进行复制,如果对原子对象进行修改,那么浅层复制之后的对象也会随着修改。 deepcopy() 是真正意义上的复制,即重新开辟一片空间,经常说的复制实际上就是 deepcopy,深层...
2、深复制与浅复制 代码如下: // 浅层复制(只复制顶层的非 object 元素) var newObject = jQuery.extend({}, oldObject); // 深层复制(一层一层往下复制直到最底层) var newObject = jQuery.extend(true, {}, ...
浅层与深度强化学习“漏洞”分析报告,很好的研究方向。
作为机器学习的一种新的尝试,htm算法已经得到了广大学者的追逐与实践,这里通过java来实现htm算法,仅供学习
答案:浅层复制:只复制指向对象的指针,而不复制引用对象本身。 深层复制:复制引用对象本身。 意思就是说我有个A对象,复制一份后得到A_copy对象后,对于浅复制来说,A和A_copy指向的是同一个内存资源,复制的只...
出版效率 集成了深层架构和浅层架构的模型
通过野外工作较系统的对霍山县的浅层地热资源开发利用前景进行分析研究,重点提出对浅层地热在霍山开发的利用前景的若干建议和思考,对于浅层地热资源的开发利用提供了参考和借鉴。
结果表明,浅层最低地温与前一日的平均气温、最低气温、0-20 cm各层平均地温和最低地温成显著正相关,与前一日日照时数成显著负相关。 然后,本文使用MATLAB软件构建了基于BP神经网络的浅层最低地温预报模型,并...
从浅层到深层:基于深度学习的初中数学课堂优化路径.pdf
文本分类是自然语言处理中最基本、最基本的任务。过去十年,由于深度学习取得了前所未有的成功,这一领域的研究激增。大量的方法、数据集和评价指标已经在文献中提出,提高了全面和更新综述的需要。
【深度学习】吴恩达课程笔记(二)——浅层神经网络、深层神经网络笔记
淮南煤田由于采矿活动引起的地面大范围沉陷,导致积水区范围内水质、水量与其他水体之间在横向和垂向上...以淮南煤田潘谢矿区为研究对象,研究地表水与浅层地下水水量转化关系,为沉陷区水资源保护与利用提供科学依据。
主要是Java后端的,16K左右的,涉及SE、WEB、三大框架SSM、springboot、MQ、数据库、springcloud、JVM、Redis、多线程、hashmap的底层、面试技巧等 SSM涉及浅层的底层,如IOC、AOP,专为没看过源码的人应付面试准备...
地震勘探技术在石油、煤田和工程地质中得到了广泛应用,复杂地区浅层地震勘探,地震勘探精度除受常规因素影响外,还受地形地貌、浅层地表层特殊性质影响。复杂地区浅层地震勘探,通过选择适当的设备、恰当的性能指标,...
java线程池源码解读Java 新手到精通(行业兼容)课程大纲 标题 分解 时间 1 介绍 为什么选择 Java Java 设计目标和历史 Java ...Java语言的特点 ...克隆对象/浅层和深层克隆 5 异常处理 异常背后的想法
浅层地热能勘查评价规范.pdf 正式版 DZ/T 0225-2009
浅层和深层卷积网络用于显着性预测 该论文在 (*) (*) (*)平等贡献 之间的联合合作: 抽象的 传统上,基于神经科学原理通过手工制作的功能解决了图像显着区域的预测问题。 但是,本文通过训练卷积神经网络...
浅拷贝(浅复制、浅克隆)、深拷贝(深复制、深克隆)实战工程,IDEA搭建
从浅层学习到深度学习.pdf