初级Java开发工程师面试必备项之Java常用类:Object类

Java初级工程师常见面试题 整理一下自己所经历的高频面试题目。对于一个初级java开发人员的面试,面试时间一般为30~40分钟,有短点的,先写一张笔试卷子,然后面试20分钟,也有长一些的,我最长的一次面试将近2个小时,最后一轮纯技术面,看见面试官在一张纸上记上一个个知识点,问的很细。也有的公司会机试,但很少。像这样很仔细的面试官,会提前在纸上写上各个知识点,挨个问,然后根据你的情况在后面打勾或叉(这一般是稍大一点的公司,一个... 阅读详情

初级Java开发工程师面试必备项之Java常用类:Object类

概述

  • 它为超类、基类,位于继承数的最顶层,是所有类的直接或间接父类
  • 任何类只要没有声明 extends 显示继承某个类,那么都会默认继承 Object 类,否则间接继承 Object 类
  • Object 类中所定义的方法,是所有对象都具备的方法,所以子类可以使用 Object 的所有方法

所有方法:

修饰符和类型方法及描述
protected Objectclone() 创建并返回此对象的副本。
booleanequals(Object obj) 指示一些其他对象是否等于此。
protected voidfinalize() 当垃圾收集确定不再有对该对象的引用时,垃圾收集器在对象上调用该对象。
Class<?>getClass() 返回此 Object 的运行时类。
inthashCode() 返回对象的哈希码值。
voidnotify() 唤醒正在等待对象监视器的单个线程。
voidnotifyAll() 唤醒正在等待对象监视器的所有线程。
StringtoString() 返回对象的字符串表示形式。
voidwait() 导致当前线程等待,直到另一个线程调用该对象的 notify() 方法或 notifyAll() 方法。
voidwait(long timeout) 导致当前线程等待,直到另一个线程调用 notify() 方法或该对象的 notifyAll() 方法,或者指定的时间已过。
voidwait(long timeout, int nanos) 导致当前线程等待,直到另一个线程调用该对象的 notify() 方法或 notifyAll() 方法,或者某些其他线程中断当前线程,或一定量的实时时间。

示范类:

public class Student {
    private String name;
    private int age;

    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}


getClass()方法

  • 类型:Class<?>

  • 返回引用中储存的实际对象类型

  • 作用:通常用于判断两个引用中实际存储对象类型是否一致

  • 示例:

   public class TestStudent {
       public static void main(String[] args) {

           Student s1 = new Student("lisa",20);
           Student s2 = new Student("kirot", 21);

           //判断s1和s2是不是同个类型:getClass();
           Class class1 = s1.getClass();
           Class class2 = s2.getClass();

           System.out.println(class1 == class2 ? "s1和s2属于同个类型" : "s1和s2不属于同个类型");

       }
   }

输出
   s1和s2属于同个类型


hashCode()方法

  • 类型:int

  • 返回该对象的哈希码值

  • 哈希值根据 对象的地址 或 字符串 或 数字 使用 hash 算法计算出来的 int 类型的数值

  • 一般情况下相同的对象返回相同的哈希码值

  • 示例:

   public class TestStudent {
       public static void main(String[] args) {

           Student s1 = new Student("lisa",20);
           Student s2 = new Student("kirot", 21);

           //返回s1和s2的哈希码值,不同对象返回的哈希码不一样
           System.out.println(s1.hashCode());
           System.out.println(s2.hashCode());

           Student s3 = s1;
           //s1地址赋给了s3,所以它们的哈希码值是一样的
           System.out.println(s3.hashCode());

       }
   }

输出
    2129789493
    668386784
    2129789493


toString()方法

  • 类型:String

  • 返回该对象的字符串表示形式

  • 示例:

    public class TestStudent {
        public static void main(String[] args) {

            Student s1 = new Student("lisa",20);
            Student s2 = new Student("kirot", 21);

            //返回对象字符串表示形式:类的名字 + @ + 十六进制的哈希码值
            System.out.println(s1.toString());
            System.out.println(s2.toString());

        }
    }

输出
   Student@7ef20235
   Student@27d6c5e0

  • 拓展:还可以通过在类中重写 toString() 方法,返回自己自定义的字符串

  • 示例:

    重写 Student 类

    public class Student {
        private String name;
        private int age;

        public Student(String name, int age) {
            this.name = name;
            this.age = age;
        }

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

        public int getAge() {
            return age;
        }

        public void setAge(int age) {
            this.age = age;
        }

        @Override
        public String toString() {
            return "Student{" +
                    "name='" + name + '\'' +
                    ", age=" + age +
                    '}';
        }
    }

    public class TestStudent {
        public static void main(String[] args) {

            Student s1 = new Student("lisa",20);
            Student s2 = new Student("kirot", 21);

            //返回对象字符串表示形式
            System.out.println(s1.toString());
            System.out.println(s2.toString());

        }
    }
输出
   Student{name='lisa', age=20}
   Student{name='kirot', age=21}

equals()方法

  • 类型:boolean

  • 默认实现为(this == obj),比较两个对象地址是否相同

  • 可进行覆盖,比较两个对象的内容是否相同

  • 示例:

    public class TestStudent {
        public static void main(String[] args) {

            Student s1 = new Student("lisa",20);
            Student s2 = new Student("kirot", 21);

            //equals();判断两个对象是否相等
            System.out.println(s1.equals(s2));

            Student s3 = s1;    //s1地址赋给s3
            System.out.println(s1.equals(s3));

            Student s4 = new Student("w",18);
            Student s5 = new Student("w",18);
            System.out.println(s4.equals(s5)); //s4和s5地址不一样

        }
    }

输出
    false
    true
    false

equals()方法的覆盖步骤

  • 比较两个引用是否指向同一个对象

  • 判断 obj 是否为 null

  • 判断两个引用指向的实际对象类型是否一致

  • 强制类型转换

  • 依次比较各个属性值是否相同

  • 示例

    重写 equals() 方法

    public class Student {
        private String name;
        private int age;

        public Student(String name, int age) {
            this.name = name;
            this.age = age;
        }

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

        public int getAge() {
            return age;
        }

        public void setAge(int age) {
            this.age = age;
        }

        @Override
        public boolean equals(Object obj) {
            //1.判断两个对象是否是同一个引用
            if (this == obj) {
                return true;
            }
            //2.判断obj是否为null
            if (obj == null) {
                return false;
            }
            //3.判断是否是同个类型
            if (obj instanceof Student) {   //instanceof判断对象是否是某种类型
                //4.强制类型转换
                Student s = (Student) obj;
                //5.比较属性
                if (this.name.equals(s.getName()) && this.age == s.getAge()) {
                    return true;
                }
            }
            return false;
        }
    }

    ```

 ```c
    public static void main(String[] args) {

            Student s1 = new Student("lisa",20);
            Student s2 = new Student("kirot", 21);

            //equals();判断两个对象是否相等
            System.out.println(s1.equals(s2));

            Student s3 = s1;    //s1地址赋给s3
            System.out.println(s1.equals(s3));

            Student s4 = new Student("w",18);
            Student s5 = new Student("w",18);
            System.out.println(s4.equals(s5));

        }

输出
   false
   true
   true


finalize()方法(已弃用)

  • 当对象被判定为垃圾对象时,由 JVM 自动调用此方法,用以标记垃圾对象,进入回收队列
  • 垃圾对象:没有有效引用指向此对象时,为垃圾对象
  • 垃圾回收:由 GC 销毁垃圾对象,释放数据存储空间
  • 自动回收机制:JVM 的内存耗尽,一次性回收所有垃圾对象
  • 手动回收机制:使用System.gc();通知 JVM 执行垃圾回收

clone()方法

  • 创建并返回此对象的拷贝

  • clone()是浅拷贝,对象内属性引用的对象只会拷贝引用地址,而不会将引用的对象重新分配内存,相对应的深拷贝则会连引用的对象也重新创建

  • 由于 Object 本身没有实现 Cloneable 接口,所以不重写 clone 方法并且进行调用的话会发生 CloneNotSupportedException 异常

  • 示例:

   public class Student implements Cloneable{
       private String name;
       private int age;

       public Student(String name, int age) {
           this.name = name;
           this.age = age;
       }

       public String getName() {
           return name;
       }

       public void setName(String name) {
           this.name = name;
       }

       public int getAge() {
           return age;
       }

       public void setAge(int age) {
           this.age = age;
       }

       public static void main(String[] args) {

           Student s1 = new Student("dt", 20);
           System.out.println(s1.getName()+"\t"+s1.getAge());

           try {
               //创建s1的拷贝
               Student s2 = (Student) s1.clone();
               System.out.println(s2.getName()+"\t"+s2.getAge());
           } catch (CloneNotSupportedException e) {
               e.printStackTrace();
           }
//加入Java开发交流君样:593142328一起吹水聊天
       }

   }

输出
    dt	20
    dt	20
java初级工程师面试题一 今天去面试了,做了份笔试题,很基础,由于没有关注基础最后还是挂了。在这里对今天的面试做一个总结以防止下一次再犯同样的错误。1.写出jsp的四个作用域     解:application,session,request,pageContext2.描述servlet的生命周期?    解:首先调用init()方法初始化,然后调用service()方法处理请求,最后调用destroy()销毁。由jvm进... 阅读详情

相关推荐

Android开发7年,分享下初级 中级 高级工程师 划分标准

这是一线互联网公司Android岗位薪资职位图谱。为了方便大家成才,我把初级、中级、高级和资深四个常见的岗位需要掌握的一些知识进行如下整理。初级初级研发工程师的定义是掌握基础的Android知识,能够独立完成一个功能,工作年限大概在1-2年,这个层级大部分人通过看一些资料书籍再经过项目练习很快可以达到。这个级别的人往往需要掌握如下一些技能:掌握Android 四大组件知识,深入了解相关生命周期,对于Application、Fragment、Intent常见的开发知识也必须掌握。

m0_67392182的博客 1450

Java基础面试题——Object篇

本文总结了Java中Object类的关键方法及其应用场景。Object类作为所有Java类的父类,提供了toString()、equals()、hashCode()等核心方法。其中,==运算符比较内存地址,而equals()默认行为与==相同,但可重写为内容比较。hashCode()方法为哈希集合提供快速定位能力,能显著提升查找效率。文章特别强调,重写equals()时必须同时重写hashCode(),否则会导致哈希集合逻辑错误,如"存了查不到"等问题。这一原则保证了对象在哈希集合中的正

2401_87848227的博客 637

Java面试:应聘Java开发工程师的基本要求是什么?

掌握EJB、servlet、JSP等技术,掌握Spring MVC、dubbo、Spring boot、spring cloud、hibernate、MyBatis等开源框架;Java新技术层出不穷,各企业的有不同的侧重点,根据企业用人的需求,**只有具备坚实的Java基础功底的程序员才能快速掌握新的技术。**需要在核心算法、面向对象应用、数据结合及集合框架、反射、输入输出、多线程、异常处理等方面进行深入学习。按照功能组件的详细设计;Java是组件和框架的世界,所有的Java程序员都应当了解Java框架。

web15085096641的博客 821

Java常用类:Object类

Java常用类:Object类 文章目录Java常用类:Object类概述getClass()方法hashCode()方法toString()方法equals()方法equals()方法的覆盖步骤~~finalize()方法~~ (已弃用)clone()方法 概述 它为超类、基类,位于继承数的最顶层,是所有类的直接或间接父类 任何类只要没有声明 extends 显示继承某个类,那么都会默认继承 Object 类,否则间接继承 Object 类 Object 类中所定义的方法,是所有对象都具备的方法,

qq_46541289的博客 483

别再乱选保护板了!手把手教你用ABLIC S-8254A为3/4串锂电池组DIY安全保护电路

本文详细介绍了如何使用ABLIC S-8254A保护集成电路为3/4串锂电池组DIY安全保护电路。从选型策略、电路搭建到功能验证,手把手教你实现可靠的充放电保护系统,适用于无人机、电动工具等场景,确保锂电池组的安全使用。

weixin_42525264的博客 189

从零开始使用matlab实现EKF-SLAM算法(含完整代码)

扩展卡尔曼滤波器同步定位与建图 (EKF-SLAM) 算法建立在 EKF 的基础上,集成了 EKF 的功能,可解决机器人技术中最具挑战性的问题之一:同时定位与建图 (SLAM)。 EKF-SLAM采用EKF方法来同时估计机器人的状态和周围环境的布局,而无需事先了解位置。 这种双重功能对于在未知环境中运行的自主系统至关重要,使它们能够在绘制区域地图时有效导航。 EKF-SLAM 算法一直是自动驾驶车辆和机器人系统开发的基石,为处理现实世界环境中固有的不确定性提供了一个强大的框架。

mjmmm的博客 6635

覆盖equals方法——Object类——Java

Object:所有类的超类 尽管ObjectObjectObject类是一个具体类,但设计它的主要目的是为了拓展。 它的所有非finalfinalfinal方法(equals、hashCode、toString、clone、finalize)都有明确的通用约定。 任何一个类,它在覆盖这些方法的时候,都有责任遵循这些通用约定,如果不能做到这一点,其他依赖于这些约定的类就无法结合该类一起正常工作。 ...

weixin_43840032的博客 767

【七】Hadoop3.3.4基于ubuntu24的分布式集群安装

本次安装实验基于苹果m2芯片的mac系统,使用vmware fusion搭建三台ubuntu24分布式虚拟机,确保在三台机器上安装了Java jdk8,并配置了免密码登录,网络互通,防火墙关闭,授时服务器已经同步。访问apche官网源,下载3.3.4版本,我们用二进制通用版即可,因为hadoop运行在java环境,跨平台性使得无需编译arm架构版本。至此,Hadoop的安装完成,包括hdfs文件存储系统,mapreduce计算框架,yarn资源管理系统均能正常、稳定使用。

qq_31412425的博客 2161

Java面试高频题目--Object的常用方法

Object常用方法 Java面试经常会出现的一道题目,Object的常用方法。下面给大家整理一下。 object常用方法有:toString()、equals()、hashCode()、clone()等。 toString 默认输出对象地址。 public class Person { private int age; private String name; public Person(int age, String name) { this.age = age

Tyson0314的博客 414

【强化学习】11 —— Double DQN算法与Dueling DQN算法

可以看到由于数据点的分布,使得拟合出的价值函数无法与真实的价值函数吻合,甚至在部分区域产生了明显的偏差。Dueling DQN 是 DQN 另一种的改进算法,它在传统 DQN 的基础上只进行了微小的改动,但却能大幅提升 DQN 的表现。这样,即使其中一套神经网络的某个动作存在比较严重的过高估计问题,由于另一套神经网络的存在,这个动作最终使用的值不会存在很大的过高估计问题。.在同一个状态下,所有动作的优势值之和为 0,因为所有动作的动作价值的期望就是这个状态的状态价值。环境的状态包括倒立摆角度的正弦值。

sinat_52032317的博客 1万+

CAN总线数据采集与分析

在CAN总线数据采集中,数据采集是指从CAN网络中获取数据,并将其存储在本地或远程数据库中。数据源:明确数据源,如CAN总线、CANoe/CANalyzer工具等。数据格式:确定数据格式,如CAN消息、信号值、环境变量等。数据存储:选择数据存储方式,如本地文件、数据库、云存储等。在CAN总线数据分析中,数据分析是指对采集到的数据进行处理和分析,以提取有用的信息。数据处理:对采集到的数据进行处理,如滤波、去噪、归一化等。数据分析:对处理后的数据进行分析,如统计分析、趋势分析、故障诊断等。数据可视化。

闲人编程的博客 4044

初级Java开发工程师应当掌握哪些知识点(Java开发面试经验)

初级Java工程师面试准备 1、适合人群:应届计算机毕业生和Java初学者 2、知识储备,掌握以下知识或相关知识即可面试这一岗位 ·Java基本语法知识 ·Java面向对象知识 ·JSP与基本前端知识 ·数据库(Oracle,MySql)一种或多种基础知识 ·Servlet知识 3、面试经验: ·完整的展示自己所学的全部知识 ·证明自己潜力 ·证明自己与众不同 ·不要自卑和

江哥 2万+

实验7:机器学习油田产量预测-代码数据-完整代码数据可直接运行-计算机毕设

实验7:机器学习油田产量预测-代码数据-完整代码数据可直接运行-计算机毕设

机器学习深度学习业余选手 479

JAVA初级工程师面试36问(一)

前几天,一个老家的弟弟正在找java初级开发工程师的岗位,问我一般会问什么问题? 第一时间听到这个,我在想:what? 除了刚开始找工作的第一年面试几家公司问了一些基础项东西,后面两家公司基本都是内推进去的,问的问题也是偏项目,偏实际,理论大概也没有问什么,当然,作为一个爱回答问题的我,是肯定要给他指明方向的,于是 ,我便综合各方面给他说了一些东西,同时记录下来,万变不离其宗.基础知识是学习一个新东西和升华一个东西必不可少的条件. 第一问: 请说一下String和StringB...

FindHuni的博客 1307

62. 如何通过增强(Enhancement) 的方式给 SAP ABAP 标准程序增添新功能

本文通过一个实际的例子,介绍了如何不通过修改 SAP 标准 ABAP 程序源代码的方式,对其的功能进行增强,即采取 ABAP 增强开发的方式进行二次开发,这是一种在实际 SAP 项目实施过程中使用非常广泛的技术。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 3309

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Java面试汇总>>>初级工程师—面试1000题

面试汇总>>>Java后端开发1000题001:重载和重写有什么区别?阐述二者是什么?002:什么是线程池?线程池有什么优点?003:线程有几种状态,他们是怎么切换的呢?004:比较一下String与StringBuilder的区别?007:常量池是什么?以及作用008:什么是面向对象?阐述你对面向对象的理解009.JDK、JRE以及JVM是什么?各自区分是?010.Mybatis接口开发的好处有哪些 001:重载和重写有什么区别?阐述二者是什么? 重载: 意义:重载就是为了方便外界对方法进行调用,什么样的

m0_61402516的博客 3605

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

初级Java开发工程师!绝密文档,面试手册全面突击!!!秋招已经到来

这里我要明说一下,不是Java初级和学习Java的千万不要乱看,否则~~~~ 你会怀疑人生,因为会浪费你时间啊!!! 本次考点是Java初级开发工程师面试必备的一些东西!!! 1、数据类型 基本类型 byte/8、short/16、int/32、long/64、boolean/ 、char/16、float/32、double/64 boolean只有两个值,true、false,可以使用1bit来存储,但是具体大小没有明确规定,JVM会在编译时期将boolean类型转为int,使用1来表示true..

wj1314250的博客 1393

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Java面试-初级、中级、高级 Java 工程师的能力模型对比

本文从初级、中级、高级三个层次对比了Java工程师的能力模型差异。初级工程师关注功能实现,中级开始优化性能和可维护性,高级则侧重系统架构和全局设计。文章通过典型代码示例、技术栈对比和面试题分析,直观展示了不同级别工程师的技术深度、项目经验和软技能要求,为开发者提供了清晰的成长路径图。

千淘万漉虽辛苦,吹尽狂沙始到金 2万+

java初级工程师面试需要什么_初级Java工程师面试指导

一、概要初级JavaWeb工程师的面试准备Java基础知识面试指导Java面向对象面试指导JSP面试指导MySQL数据库基础面试指导Servlet面试指导二、初级JavaWeb工程师的面试准备初级JavaWeb工程师是职业发展的第一步组成人群:应届计算机专业毕业生和初学者工作内容:能够独立完成指定的模块开发面试形式:笔试和问答要求:熟知所涉及的知识点,具有独立编码能力主要知识点:Java基本语法知...

weixin_42514750的博客 904

2020(初级Java开发工程师)面试必备(第一部分)

因内容较多我会分几部分分开发! 第一部分:JAVA 基础部分 1、面向对象的特征有哪些方面? 答:面向对象的特征主要有以下几个方面: 抽象:抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象两 方面。抽象只关注对象有哪些属性和行为,并不关注这些行为的细节是什么。 继承:继承是从已有类得到继承信息创建新类的过程。提供继承信息的类被称为父类(超 类、基类);得到继承信息的类被称为...

qq_43433238的博客 912

初级java开发常见的面试题,java开发工程师面试题

我还通过一些渠道整理了一些大厂真实面试主要有:蚂蚁金服、拼多多、阿里云、百度、唯品会、携程、丰巢科技、乐信、软通动力、OPPO、银盛支付、中国平安等初,中级,高级Java面试题集合,附带超详细答案,希望能帮助到大家。还有专门针对JVM、SPringBoot、SpringCloud、数据库、Linux、缓存、消息中间件、源码等相关面试题。初,中级,高级Java面试题集合,附带超详细答案,希望能帮助到大家。**[外链图片转存中…(img-66fJRHR2-1709802400699)]

m0_60575487的博客 810

目前关于初级java开发工程师的未来发展

项目内容发展前景Java 仍是企业级开发主力,微服务、大数据、云原生等方向需求广泛竞争压力初级岗位竞争大,中高级紧缺,重实践、重项目经验成长建议学技术 + 做项目 + 写总结,形成自己的技术闭环目标明确明确是走技术、全栈、还是管理路线,提早规划。

中段丸家 1337

2020Java高级开发工程师面试题汇总

2020面试总结 工作三年多,面试目标为高级开发工程师 前言 9.5–11.13,经过了长达70天的面试,终于有了结果。期间崩溃过无数次,很多次面试都被虐到怀疑人生,也有三面被刷掉无奈,一次次整装重新出发,一次次从头再来。今天有时间整理最近面试过程中涉及到的问题和经验,希望可以帮助到正在面试中或即将面试的同行们。 一、面试过的公司 阿里巴巴 京东 美团 百度 度小满金融 爱奇艺 当当网 58同城 贝壳找房 快手 小米 滴滴 微博 陌陌 中信银行 尚德机构 轻松筹 货拉拉 一起教育 易车 好未来 二、面

斌的博客 1万+
上一篇: Java面试题总结论IOC、AOP、Spring、注解
下一篇: 为啥面试Java初级开发工程师会问数组ArrayList??????
Java大鲨鱼
博客等级 码龄5年 2211粉丝 18原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值