Java学习笔记------常用API(二)

Object

无有参构造

public Object()     空参构造

成员方法:

public String toString()       返回对象的字符串表示

public boolean  equals(object obj)    比较两个对象是否相等

Object默认用==号比较地址值,需要重写才能比较属性值

protected Object clone(int a)       对象克隆

对象克隆

把a对象的属性值完全拷贝给b对象,也叫对象拷贝,对象复制

深克隆:基本数据类型拷贝过来,字符串复用,引用数据类型会重新创建新的

浅克隆:不管对象内部的属性是基本数据类型还是引用数据类型,都完全拷贝下来

object中的是浅克隆

深克隆需要重写

浅克隆

import java.util.Arrays;

public class student implements Cloneable{
    private int age;
    private String name;
    private int[] date;

    public student() {
    }

    public student(int age, String name, int[] date) {
        this.age = age;
        this.name = name;
        this.date = date;
    }

    /**
     * 获取
     * @return age
     */
    public int getAge() {
        return age;
    }

    /**
     * 设置
     * @param age
     */
    public void setAge(int age) {
        this.age = age;
    }

    /**
     * 获取
     * @return name
     */
    public String getName() {
        return name;
    }

    /**
     * 设置
     * @param name
     */
    public void setName(String name) {
        this.name = name;
    }

    /**
     * 获取
     * @return date
     */
    public int[] getDate() {
        return date;
    }

    /**
     * 设置
     * @param date
     */
    public void setDate(int[] date) {
        this.date = date;
    }

    public String toString() {
        return "student{age = " + age + ", name = " + name + ", date = " + Arrays.toString(date) + "}";
    }

    //调用父类的clone,相当于Java帮我们克隆
    @Override
    protected Object clone() throws CloneNotSupportedException {
        return super.clone();
    }
}
public class Main {
    public static void main(String[] args) throws CloneNotSupportedException{
        int[]date={1,2,3,4,5,6,7};
        student a=new student(15,"hangman",date);
        //浅克隆
        student b=(student)a.clone();
        System.out.println(a);
        System.out.println(b);

    }
}

 

深克隆 

 

import java.util.Arrays;

public class student implements Cloneable{
    private int age;
    private String name;
    private int[] date;

    public student() {
    }

    public student(int age, String name, int[] date) {
        this.age = age;
        this.name = name;
        this.date = date;
    }

    /**
     * 获取
     * @return age
     */
    public int getAge() {
        return age;
    }

    /**
     * 设置
     * @param age
     */
    public void setAge(int age) {
        this.age = age;
    }

    /**
     * 获取
     * @return name
     */
    public String getName() {
        return name;
    }

    /**
     * 设置
     * @param name
     */
    public void setName(String name) {
        this.name = name;
    }

    /**
     * 获取
     * @return date
     */
    public int[] getDate() {
        return date;
    }

    /**
     * 设置
     * @param date
     */
    public void setDate(int[] date) {
        this.date = date;
    }

    public String toString() {
        return "student{age = " + age + ", name = " + name + ", date = " + Arrays.toString(date) + "}";
    }

    //调用父类的clone,相当于Java帮我们克隆
    @Override
    protected Object clone() throws CloneNotSupportedException {
        int[]date=this.date;
        int[]newdate=new int[date.length];
        for (int i = 0; i < date.length ; i++) {
            newdate[i]=date[i];
        }
        //调用父类克隆方法
        student a=(student)super.clone();
        a.date=newdate;
        return a;
    }
}
public class Main {
    public static void main(String[] args) throws CloneNotSupportedException{
        int[]date={1,2,3,4,5,6,7};
        student a=new student(15,"hangman",date);
        //深克隆
        student b=(student)a.clone();
        int[]arr= a.getDate();
        arr[0]=100;
        System.out.println(a);
        System.out.println(b);

    }
}

 

  • 12
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值