易截截图软件、单文件、免安装、纯绿色、仅160KB

java拷贝对象

这是我个人的理解,加上以前看的一些帖子,有不对的地方,请高人指点。
1.作为java参数传递给一个函数的对象,除了很简单的如int或者boolean等简单的以外,传递的都是这个对象的引用。
当在接收函数中改变这个对象的时候,原来的对象即被改变。
2.在初始化一个对象的时候,有时候我们希望用一个已经存在的对象来给另外一个对象赋值,但是直接用“=”给另外一个
对象赋值的话,是错误的,这样会使两个不同的对象名字指向同一个对象。改变其中任何一个都会引起该对象的改变。
下面我们实验一下用一个对象给另外一个对象赋值:public class Student {
private int age;
private String name;
public Student(int age, String name) {
this.age = age;
this.name = name;
}
public void show() {
System.out.println(this.age + "" + this.name);
}

public void setAge()
{
this.age = 10;
}
}
public class test {
public static void main(String as[]) {
Student s = new Student(1, "name");
Student temp = s;
temp.setAge();
temp.show();
s.show();
}
}

上述代码运行结果如下:
10name
10name
结果表明,虽然是用student的对象s给temp赋值,但是temp和s是指向同一个对象的,temp指向的对象改变age的时候,s指向的对象的age也改变了。不是我们希望得到的。
在C++中,有深拷贝和浅拷贝两个概念,java中,我们用Cloneable接口来完全复制一个对象。
参考下面的代码:
public class BankAccount implements Cloneable {
private double balance;
public BankAccount(double ini) {
this.balance = ini;
}
protected Object clone() {
BankAccount bankAccount = null;
try {
bankAccount = (BankAccount) super.clone();
} catch (CloneNotSupportedException e) {
e.printStackTrace();
}
return bankAccount;
}
public void add(double give) {
this.balance += give;
}
public void redu(double give) {
this.balance -= give;
}
public double getBalance() {
return balance;
}
public void setBalance(double balance) {
this.balance = balance;
}
}

我们令BankAccount实现Cloneable接口,实现其父类(就是Object类)的clone函数。
看一下clone函数的doc:
Cr


相关文档:

Java Web 第四天 使用Servlet处理请求

一、
GET

POST
的区别
1.GET
提交的是文本内容,规定其数据长度不超过
255
个字符。在
GET
方式提交的
URL
中会显示出提交的查询数据而却提交数据的缓存会在浏览器的
URL
历史状态中,这样我们往往在浏览网页的时候点击后退键不需要重新发送请求。
2.POST
提交的可以使文本内容,也可以使二进制内容,所 ......

Java Web 第六天 作用域及监听器

一、
web
的三种作用域
ServletContext(
上下文
)
:整个
web
应用程序,线程不安全
HttpSession(
会话
)
:一个会话交互过程
ServletRequest(
请求
)
:一次请求过程
属性操作方法:
      

void setAttribute(String,Object)
       ......

Java 希尔排序(缩小增量排序)

      希尔排序算法能够成立的基础是数组也接近有序直接插入排序算法的时间效率越高。希尔排序算法是在不减少数组元素的个数情况下将数组分组,从而将排序好的数插入到新数组中去。关键在于其思想。
算法实现如下:
/**
* 希尔排序又称为缩小增量排序
* @param a 用于排序的数组
* @pa ......

几个重要的JAVA命令详解(转载)


javac
 
用法:javac <选项> <源文件>
其中,可能的选项包括:
  -g                                    ......

假期没事,写了个90行的俄罗斯方块,Java实现

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Terris extends JFrame implements Runnable, KeyListener {
private short isPlaying=0,xOffSet = 2, yOffSet = 0, blockType = (short) Math.round(Math.random() * 6), blockRotation = 0, blockColor = (short) Math.round(Math. ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号