Java clone机制
1、 Java对象赋值
Java代码
Employee e1=
new
Employee(
"李"
);
//Employee是一个自定义类
Employee e2=e1; //赋值对象
e2.setName("王"
);
//改变对象e2的名字
System.out.println(e1.getName()); //打印e1的结果: 王
Employee e1=new Employee("李"); //Employee是一个自定义类
Employee e2=e1; //赋值对象
e2.setName("王");//改变对象e2的名字
System.out.println(e1.getName()); //打印e1的结果: 王
这就是Java的对象赋值,改变e2的内容竟然会影响e1的内容。原因很简单,就是e1和e2这两个对象引用都指向了堆中同一个Employee类对象的
内容。也就是说:
Java的对象赋值的是引用(相当于C的指针)。如何让e1,e2成为内容相同的两个完全不同的对象呢,这就需要用到Java的对象克隆机制(将e2复制
成e1的一个独立副本)。
2、 Java对clone的支持
(1) 继承Object的clone方法的疑问?
有一点我们很清楚,Java的万类之祖Object中有一个clone()方法:
protected
native Object clone() throws CloneNotSupportedException
既然这个方法是protected的,显然是为了让子类能够使用。看看下面的代码:
Java代码
//Employee类中没有clone方法,也没有实现Cloneable接口
Employee original=new
Employee(
"John Public"
);
Employee copy=original.clone(); //wrong
//Employee类中没有clone方法,也没有实现Cloneable接口
Employee original=new Employee("John Public");
Employee copy=original.clone(); //wrong
有人会提出这样的疑问:不是所有的类都是Object的子类吗?不是所有的子类都可以访问受保护的方法吗
?
毫无疑问,这两句提问没有任何错误。但是有一点必须搞清楚:你是否
相关文档:
1. 因子
上次介绍了《JAVA实现AES加密》,中间提到近些年DES使用越来越少,原因就在于其使用56位密钥,比较容易被破解,近些年来逐渐被AES替代,AES已经变成目前对称加密中最流行算法之一;AES可以使用128、192、和256位密钥,并且用128位分组加密和解密数据。本文就简单介绍如 ......
1.AJAX基础知识_选择题
1. Ajax有四种技术组成:DOM,CSS,JavaScript,XmlHttpRequest中控制文档结构的是:( )
A DOM
B CSS
C javascript
D XMLHttpRequest
参考答案:A
2. 在Ajax的四种技术中,控制通信的是哪一个?( )
A DOM
B CSS
C javasc ......
http://www.ajaxlines.com/ajax/stuff/article/using_google_is_ajax_search_api_with_java.php
I was rather depressed over a year ago when Google deprecated their SOAP Search API with their AJAX Search API. Essentially Google was saying that they didn want anyone programmatically accessing Google search ......
在文件里增加一行的唯一方法就是读取原始文件,然后写入到一个临时文件,同时写入要插入的数据。然后删除原始文件,再把临时文件改名为原始文件名。
package net.java2000.io;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import jav ......
1、页面编码与后台类编码不一致。
2、后台类与数据库交互保持数据时产生乱码。解决方法:可以在驱动的url参数中指定。
3、读文件/流时产生乱码。解决方法:建议使用FileReader和FileWriter的父类:InputStreamReader/OutputStreamWriter,它们在构造函数中可以指定编码类型:InputStreamReader(InputStream in, Charset c ......