java面试八股文复习1

本文深入探讨Java中的对象拷贝,区分浅拷贝和深拷贝的概念及实现,强调了在多线程环境下wait、notify和notifyAll方法的作用,以及在何时何地使用这些方法的重要性,同时对比了String、StringBuffer和StringBuilder的使用场景和性能差异。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关于java的object类

  • 从getClass方法开始

    没什么花头,该方法直接获取当前运行时对象的class对象

    返回此对象的运行时类。返回的类对象是被表示的类的静态同步方法锁定的对象。

    实际的结果类型是 Class<? extends |x|>

    返回值是此对象的运行时类的类对象

  • hashcode

    返回对象的哈希码值,这个方法主要是为了支持hashmap提供哈希表

    在Java应用程序的执行过程中,每当在同一个对象上多次调用hashCode方法时,只要在对象的相等比较中使用的信息没有被修改,该方法就必须始终返回相同的整数。这个整数不需要在应用程序的一次执行和同一应用程序的另一次执行之间保持一致。 如果两个对象根据equals(Object)方法相等,那么对这两个对象调用hashCode方法必须产生相同的整数结果。
  • clone

    拷贝当前对象(创建并返回该对象的副本),继承Cloneable接口。

    拷贝需细分为浅拷贝和深拷贝

    “复制”的确切含义,取决于对象的类。一般的意图时,对于任何对象x,表达式:x.clone()!=x将为真,表达式:x.clone().getclass() == x.clone()将为真虽然通常情况下:x.clone().equal(x)将为真,但这些并不是绝对的要求。按照惯例,返回的对象应该通过super.clone()来获得。如果一个类和他的所有超类都遵守这个约定,则x.clone().getClass()==x.getClass(). 按照惯例,这个方法返回的对象应该独立于这个对象(正在被克隆)。为了实现这种独立性,在返回他之前,可能需要修改super.clone()返回的对象的一个或多个字段。通常,这意味着复制包含内部“深层结构”的任何可变对象。复制的对象,并将对这些对象的引用替换为对副本的引用。如果一个类只包含基本字段或对不可变对象的引用,那么通常super返回的对象中没有字段。

注意,所有数组都被认为是实现接口可克隆的,数组类型T[]的克隆方法的返回类型是T[],其中T是任何引用或基本类型。否则,该方法创建该对象类的新实例,并使用该对象对应字段的内容初始化其所有字段,就像通过赋值一样,字段的内容本身没有被克隆。因此,该方法执行“浅复制”。

简单来说,在浅克隆中,当对象被复制时只复制它本身和其中包含的值类型的成员变量,而引用类型的成员对象并没有复制。

public class Student implements Cloneable{
   
   
    private int id;

    public int getId() {
   
   
        return id;
    }

    public void setId(int id) {
   
   
        this.id = id;
    }

    @Override
    public Object clone(){
   
   
        Student stu = null;
        try {
   
   
            stu = (Student) super.clone();
        }catch (CloneNotSupportedException e){
   
   
            e.printStackTrace();
        }
        return stu;
    }

    public static void main(String[] args) {
   
   
        Student stu = new Student();
        stu.setId(2222);
        Student stu_c = (Student)stu.clone();

        System.out.println("stu:" + stu.getId());
        System.out.
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值