- 浏览: 467219 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (272)
- java基础 (59)
- struts (8)
- spring (8)
- 数据库 (8)
- java 网络编程 (29)
- hibernate (3)
- JavaScript (10)
- 日志管理 (2)
- jsp (4)
- servlet (7)
- xml (4)
- ajax (2)
- web service (4)
- 算法与数据结构 (13)
- java 反射机制 (11)
- java 泛型 (3)
- java I/O (8)
- java 线程 (12)
- JavaEE (6)
- java解惑 (33)
- 工具 (5)
- MyEclipse编程实践 (1)
- OSGI (2)
- 设计模式 (9)
- 正则表达式 (0)
- EJB (3)
- Ubuntu linux (6)
- Android (1)
- web前端 (2)
- 找工作 (1)
- SCA (1)
- maven (1)
- 缓存 (1)
- json (1)
- javamail (1)
- 工作笔记 (2)
最新评论
-
霜花似雪:
博主可以分享一下源码吗?
使用maven构建web项目实例 -
王庆波-行:
很好的demo!
memcache使用实例 -
surpassno:
大写的牛逼
java可视化显示内存使用情况 -
zhulin0504:
怎么访问NetEcho.html页面呀???
applet与servlet的网络通信 -
springdata:
java多线程实例demo源代码下载:http://www.z ...
java多线程例子
对象克隆,返回和原对象一样的对象,且两个对象是独立的,不是同一个引用
输出结果:8,
2,hashTable存的值如果是对象,则存的是对象的引用
输出结果;
get StringBufffer 1 from Hashtable: abc,def,mno,xyz.
get StringBufffer 2 from Hashtable: abc,def,mno,xyz.
get StringBufffer 3 from Hashtable: abc,def,mno,xyz.
get StringBufffer 4 from Hashtable: abc,def,mno,xyz.
java中的引用分为强引用,弱引用和软引用。见如下例子;
package copyObject; //克隆对象,能实现clone功能的CloneClass类实现了Cloneable接口 class CloneClass implements Cloneable{ public int aInt; public Object clone(){ //返回一个对象的克隆,并非引用 CloneClass o = null; try{ o = (CloneClass)super.clone(); }catch(CloneNotSupportedException e){ e.printStackTrace(); } return o; } public static void main(String[] args){ CloneClass cc = new CloneClass(); cc.aInt = 8; CloneClass cloned = (CloneClass) cc.clone(); System.out.println(cloned.aInt); } }
输出结果:8,
2,hashTable存的值如果是对象,则存的是对象的引用
package copyObject; import java.util.*; public class HashtableAdd{ public static void main(String[] args){ Hashtable ht = new Hashtable(); StringBuffer sb = new StringBuffer(); sb.append("abc,"); ht.put("1",sb); //向Hashtable传递StringBuffer对象也是只传递了这个StringBuffer对象的引用 sb.append("def,"); ht.put("2",sb); sb.append("mno,"); ht.put("3",sb); sb.append("xyz."); ht.put("4",sb); int numObj=0; Enumeration it = ht.elements(); while(it.hasMoreElements()){ System.out.print("get StringBufffer "+(++numObj)+" from Hashtable: "); System.out.println(it.nextElement()); } } }
输出结果;
get StringBufffer 1 from Hashtable: abc,def,mno,xyz.
get StringBufffer 2 from Hashtable: abc,def,mno,xyz.
get StringBufffer 3 from Hashtable: abc,def,mno,xyz.
get StringBufffer 4 from Hashtable: abc,def,mno,xyz.
java中的引用分为强引用,弱引用和软引用。见如下例子;
package ch11exception; import java.lang.ref.SoftReference; import java.lang.ref.WeakReference; public class TestStackOverFlow { public static void main(String[] args) { Object referent = new Object(); Object strongReference = referent; referent = null; System.gc(); System.out.println(strongReference); //强引用,GC后不一定销毁 String str = "test"; SoftReference<String> softreference = new SoftReference<String>(str); str=null; System.gc(); System.out.println(softreference.get()); //弱引用,适合缓存,只有当内存空间不足时,垃圾回收后才会销毁 WeakReference<String> weakReference = new WeakReference<String>(str); str=null; System.gc(); System.out.println(weakReference.get()); //弱引用,促使对象更快的被GC回收,因此GC后,该对象为null } // 执行结果: // java.lang.Object@1fb8ee3 // test // null }
发表评论
-
java Romdom例子
2011-06-16 16:41 1886random.netInt()如果括号里 ... -
java 内部类详解(转)
2011-06-01 15:47 4964Java 内部类 分四种:成员内部类、局部内部类、静态内部类和 ... -
Fibonacci数列计算+找出出现次数最多字符+不同数字的排列组合
2011-05-26 15:40 20971,斐波拉契数列的计算 package chapter9; ... -
java中的System类中的方法
2011-05-24 11:00 994public final class System exten ... -
java可视化显示内存使用情况
2011-05-20 16:03 2588package memoryManage; /* * ... -
java 界面swing之表格
2011-05-20 13:39 6528package othertest; import ja ... -
java的队列和栈的一些api
2011-05-16 11:31 1693类 Stack<E> java.lang.Obje ... -
JAVA 中一些api(字符字符串缓冲,URL类,Math类方法,正则表达式)
2011-05-12 10:36 1736CharBuffer字符缓冲区, StringBuffer字符 ... -
java applet 一个简单的例子(applet+html)
2011-05-09 16:49 4156java applet是一个类,其层次结构如下图: 类 JAp ... -
java 核心技术(数组(杨辉三角),散列码,对象拷贝,枚举类型,定时器)
2011-05-04 10:43 1560数组java中无多维数组,都是一维数组,多维数组可以看做是数组 ... -
设计模式总结
2011-04-26 16:50 869对于GoF总结的经典的23中设计模式,分为3类: (1)创建型 ... -
猜数字游戏
2011-04-12 17:27 1177package guessNumber; import ... -
Comparator实现排序
2011-04-01 14:13 8649在java.util包中有一个Collections类,里面实 ... -
21天学会java(含电子书下载)
2011-03-15 16:12 253221天学通java 比较基础 第一天 创建简单applicat ... -
理解浮点数存储
2011-03-15 09:44 987整体呈现 二进制浮 ... -
java.lang.UnsatisfiedLinkError解决办法
2011-03-10 16:59 1174实质上就是Eclipse下配置jdk,jre环境的问题 win ... -
java string,stringbuffer区别例子
2011-01-11 14:44 1361public class test_3 { public ... -
java定时器的使用
2011-01-11 09:20 1448有时需要在一定时间段后,执行某一个操作 java中现有的Ti ... -
java applet例子---图片像素处理
2010-12-07 17:01 1919package applet; import java. ... -
java applet例子---跟踪图片对象的加载
2010-12-07 16:56 1495用java.awt包中的MediaTracker跟踪一个Ima ...
相关推荐
这意味着如果一个对象中包含了其他对象的引用,深度克隆会创建这些引用对象的独立副本,而不是简单地复制引用。因此,即使原始对象被修改,深克隆后的副本也不会受到影响,从而提供了数据安全性。 在Java中,实现...
总结来说,对象克隆是Java中用于复制对象的一种机制,分为浅克隆和深克隆,分别对应于是否深度复制对象内部的引用。实现克隆的关键是实现`Cloneable`接口并重写`clone()`方法。理解这两种克隆方式的区别和应用场景,...
本文实例讲述了PHP面向对象程序设计之对象克隆clone和魔术方法__clone()用法。分享给大家供大家参考,具体如下: 1.对象克隆 clone PHP4面向对象功能一个很大的缺点,是将对象视为另一种数据类型,这使得很多常见的...
但是,需要注意的是,`clone()`方法返回的是一个浅拷贝,即如果对象的属性包含其他对象引用,那么这两个对象引用指向的是同一块内存空间,而不是完全独立的副本。 在`nervouse78`的这个示例中,作者"初生不惑"可能...
在上述的`Employee`例子中,如果没有特别处理,`hireDay`日期对象就是一个共享对象,克隆后的`Employee`和原始`Employee`都将引用同一份日期数据。 2. **深克隆(Deep Clone)** 当对象的字段包含非基本类型的引用...
浅复制是 Clone 方法的默认实现,它只是复制对象的引用,而不复制对象的值。例如,下面的代码: ```csharp public class A : ICloneable { public int i; public string str; public object Clone() { return ...
Java中的对象克隆可以通过实现`Cloneable`接口并覆盖`clone()`方法来完成。对象的克隆分为浅拷贝和深拷贝两种形式。 **1. 浅拷贝** 浅拷贝是指创建一个新的对象,然后将原对象的所有非引用类型的成员变量复制到新...
在PHP中,对象的克隆可以通过使用`clone`关键字实现,而PHP的对象克隆分为浅克隆和深克隆两种。 浅克隆只是复制对象中的非对象和非资源类型的数据,如果对象中包含其他对象类型的属性,则复制的是这些属性的引用。...
此外,如果对象包含不可克隆的引用(如 `final` 字段引用的不可变对象),或者对象的属性是复杂的嵌套结构,需要在自定义的 `clone()` 方法中进行额外的处理,以确保深拷贝的正确性。 总之,Java中的对象复制与克隆...
浅克隆适用于只需要简单复制对象自身属性,不关心引用对象的情况,因为它效率较高。然而,对于具有复杂嵌套结构的对象,或者需要保护引用对象不被修改的情况,深克隆是必要的,尽管它可能带来更高的内存开销和性能...
在Java中,对象克隆可以通过实现`Cloneable`接口并覆盖`Object`类中的`clone()`方法来完成。`Cloneable`接口本身不包含任何方法,只是一个标记接口,表明该类的对象可以被克隆。`Object`类的`clone()`方法会创建一个...
这意味着,浅克隆后的对象和原对象在内存中的引用结构是相同的,改变其中一个对象的引用属性会影响到另一个。为了实现浅克隆,你需要确保你的类实现了`Cloneable`接口,并重写了`clone()`方法。 2. 深克隆(Deep ...
Java 中的对象克隆可以分为两种类型:浅克隆(Shallow Cloning)和深克隆(Deep Cloning)。 浅克隆是指创建一个新的对象,并将原始对象的引用类型成员变量复制到新的对象中。在浅克隆中,新的对象和原始对象共享...
在Java编程中,对象复制和克隆是两个重要的概念,特别是在处理复杂数据结构时。对象复制通常分为浅拷贝和深拷贝。标题中的“java对象复制克隆”主要涉及的是深拷贝,这是一种创建一个新对象的方式,新对象不仅复制...
克隆后的对象`clone`不仅仅是一个复制,它有自己的生命周期和独立的状态,可以进行不同的操作,例如改变速度: ```csharp clone.velocity = new Vector3(0, 5, 10); ``` 这段代码设置了克隆子弹在XYZ轴上的速度,...
当一个对象被浅克隆时,新创建的对象会拥有原始对象的所有字段的副本,但是这些字段如果是引用类型(比如对象),则新旧对象共享同一引用。这意味着对原始对象的引用类型字段进行修改会影响到克隆后的对象。 例如:...
在上述示例中,如果`CloneClass`包含其他对象的引用,那么在`clone`方法中需要处理这些引用,以实现深克隆。 例如,如果`CloneClass`有一个`UnCloneA`类型的成员变量,为了实现深克隆,我们需要在`clone`方法中对`...
总结,Java中的对象克隆是一项重要的功能,用于复制和独立化对象。通过实现`Cloneable`接口和覆盖`clone()`方法,我们可以创建浅克隆对象。对于更复杂的场景,可以自定义克隆逻辑或利用序列化来实现深克隆。理解并...
Java中的克隆(Clone)机制是一种创建对象副本的方法,它允许程序员复制一个对象的状态,而不会影响原始对象。克隆在编程中常用于创建对象的独立副本,使得新副本与原对象之间相互独立,对其中一个对象的修改不会...
深度克隆对象,支持循环引用和属性描述符 var clone = require ( '@dmail/object-clone' ) ; var a = { name : 'a' } ; var b = clone ( a ) ; b . name ; // 'a' // of course b != a 它克隆得很深 var a = { ...