[1]一般来说,当我们需要调用System.out.print()方法时,系统就会自动地调用object类的public String toString()方法来返回要打印的内容的描述,一般傻瓜式的如果想打印出来一个对象的内容(如成员变量),我们习惯性的给System.out.print()传递一个对象参数,这是肯定不会让我们如愿以偿,这就需要你的精心策划了,我们可以在我们的类中重写这个
toString 方法(重写后仍然不需要我们手动地调用)如下所示:
来设计一个学生的类,声明了学生的姓名和年龄两个成员变量。为了能在main()方法中这样的调用:
System.out.println(student1);
来在屏幕上打印出学生的年龄和姓名我们在Student类中重写了toString()方法 :
[2]我们通常给函数传递参数的时候,一般情况如果传递的是基本类型参数,那么传递的只是变量的一个拷贝,函数内部改变了这个拷贝的值,但并不影响它在函数外面的值,但当我们传递数组或者对象的时候,我们默认传递的是对象的引用(即:传递的是对象的地址,C++的隐含说法),改变对象的引用的值就改变了对象的值。有时候我们希望象基本数据类型的那样只改变对象的拷贝,那么我们就得手动的来在这个类中重写Object对象给我们提供的一个方法即: public Object clone()方法,如下所示,super.clone()语句是继承了Object类的clone()方法,此对象返回的是一个Object对象,此方法的作用是识别当前对象,并完成对对象的复制,并且为我们复制的对象分配内存。
我们还得为这个类实现一个为Cloneable的接口,这个接口是一个空实现的接口,什么方法都没有,只是起了个命令的作用,可以把它比喻成一个啥事都不做的领导,但我们还得有它的一句话才能干事情,
class Student implements Cloneable
{
String name;
int age;
Student(String name,int age)
{
this.name=name;
this.age=age;
}
public Object clone()
{
Object o=null;
try
{
o=super.clone();
}
catch(CloneNotSupportedException e)
{
System.out.println(e.toString());
}
return o;
}
public String toString() //重写的toString方法
{
return name+","+age;
}
public static void main(String args[])
{
Student student1=new student("zhangsan",20);
System.out.println(student1);
Student student2=(Student)student1.clone();
student2.age=80;
student2.name="oldMan";
System.out.println(student1);//(结果是zhangsan,20非oldMan,80)
//但是我们如果把Student student2=(Student)student1.clone();换成
//student2=student1;则结果就成oldMan,80了;
}
}
基本数据类型与科隆技术—java

心情分类
推荐日记
分享排行