绝想首页

基本数据类型与科隆技术—java

xinxinso [深情] 2011-07-05 15:35:56 星期二 晴天 查看:29360 回复:0 发消息给作者
  [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了;
        }
}
顶一下(465 写日记 814975 2702
分享排行

 

 

留住已经逝去的峥嵘岁月 记住曾经绽现的万种风情 在记忆即将淡漠的时候 来把这些重新回味

Copyright (C) 2008-2014 www.juexiang.com, All Rights Reserved.

京ICP备2023001011号-3   京公网安备11010802011908号

客服QQ 1017160561 违法和不良信息举报电话 13148464312 邮箱 1017160561@qq.com