Java Object类有哪些重点需要掌握?

基于gm/id方法的折叠式共源共栅放大器设计实践 本文详细介绍了基于gm/id设计方法进行折叠式共源共栅放大器设计的完整流程。该方法通过确定晶体管的跨导效率(gm/id)作为核心设计参数,将复杂的放大器设计转化为有明确路径的优化问题。文章以设计一个增益80dB、带宽1GHz的两级放大器为例,逐步拆解了从指标分解、关键晶体管工作点选取、到实战仿真与微调的全过程,特别强调了第二级设计对稳定性的影响以及相位裕度的调试技巧。 阅读详情

        Object 是Java类库中的一个特殊类,也是所有类的父类。也就是说,Java 允许把任何类型的对象赋给 Object 类型的变量。当一个类被定义后,如果没有指定继承的父类,那么默认父类就是 Object 类。因此,以下两个类表示的含义是一样的。

public class MyClass{…}

等价于

public class MyClass extends Object {…}

        由于 Java 所有的类都是 Object 类的子类,所以任何 Java 对象都可以调用 Object 类的方法。常见的方法如表 1 所示。

表 1 Object 类的常用方法
方法说明
Object clone()创建与该对象的类相同的新对象
boolean equals(Object)比较两对象是否相等
void finalize()当垃圾回收器确定不存在对该对象的更多引用时,对象垃圾回收器调用该方法
Class getClass()返回一个对象运行时的实例类
int hashCode()返回该对象的散列码值
void notify()激活等待在该对象的监视器上的一个线程
void notifyAll()激活等待在该对象的监视器上的全部线程
String toString()返回该对象的字符串表示
void wait()在其他线程调用此对象的 notify() 方法或 notifyAll() 方法前,导致当前线程等待

其中,toString()、equals() 方法和 getClass() 方法在 Java 程序中比较常用。

toString() 方法

        toString() 方法返回该对象的字符串,当程序输出一个对象或者把某个对象和字符串进行连接运算时,系统会自动调用该对象的 toString() 方法返回该对象的字符串表示。

        Object 类的 toString() 方法返回“运行时类名@十六进制哈希码”格式的字符串,但很多类都重写了 Object 类的 toString() 方法,用于返回可以表述该对象信息的字符串。

// 定义Demo类,实际上继承Object类
class Demo {

}

public class ObjectDemo01 {
    public static void main(String[] args) {
        Demo d = new Demo(); // 实例化Demo对象
        System.out.println("不加toString()输出:" + d);
        System.out.println("加上toString()输出:" + d.toString());
    }
}

输出结果为:

不加toString()输出:Demo@15db9742
加上toString()输出:Demo@15db9742

        以上的程序是随机输出了一些地址信息,从程序的运行结果可以清楚的发现,加和不加 toString() 的最终输出结果是一样的,也就是说对象输出时一定会调用 Object 类中的 toString() 方法打印内容。所以利用此特性就可以通过 toString() 取得一些对象的信息,如下面代码。

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

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

    public String toString() {
        return "姓名:" + this.name + ":年龄" + this.age;
    }

    public static void main(String[] args) {
        Person per = new Person("C语言中文网", 30);// 实例化Person对象
        System.out.println("对象信息:" + per);// 打印对象调用toString()方法
    }
}

输出结果为:

对象信息:姓名:C语言中文网:年龄30

        程序中的 Person 类中重写了 Object 类中的 toString() 方法,这样直接输出对象时调用的是被子类重写过的 toString() 方法。

equals() 方法

        在前面学习字符串比较时,曾经介绍过两种比较方法,分别是==运算符和 equals() 方法,==运算符是比较两个引用变量是否指向同一个实例,equals() 方法是比较两个对象的内容是否相等,通常字符串的比较只是关心内容是否相等。

其使用格式如下:

boolean result = obj.equals(Object o);

        其中,obj 表示要进行比较的一个对象,o 表示另一个对象。

例 1

        编写一个 Java 程序,实现用户登录的验证功能。要求用户从键盘输入登录用户名和密码,当用户输入的用户名等于 admin 并且密码也等于 admin 时,则表示该用户为合法用户,提示登录成功,否则提示用户名或者密码错误信息。

        在这里使用 equals() 方法将用户输入的字符串与保存 admin 的字符串对象进行比较,具体的代码如下:

import java.util.Scanner;

public class Test01 {
    // 验证用户名和密码
    public static boolean validateLogin(String uname, String upwd) {
        boolean con = false;
        if (uname.equals("admin") && upwd.equals("admin")) { // 比较两个 String 对象
            con = true;
        } else {
            con = false;
        }
        return con;
    }

    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.println("------欢迎使用大数据管理平台------");
        System.out.println("用户名:");
        String username = input.next(); // 获取用户输入的用户名
        System.out.println("密码:");
        String pwd = input.next(); // 获取用户输入的密码
        boolean con = validateLogin(username, pwd);
        if (con) {
            System.out.println("登录成功!");
        } else {
            System.out.println("用户名或密码有误!");
        }
    }
}

当用户输入的用户名和密码都为 admin 时,表示该用户为合法用户,提示登录成功信息,否则提示用户名或密码有误的错误信息。

该程序的运行结果下所示:

------欢迎使用大数据管理平台------
用户名:
adinm
密码:
admin
用户名或密码有误!
------欢迎使用大数据管理平台------
用户名:
admin
密码:
admin
登录成功!

getClass() 方法

        getClass() 方法返回对象所属的类,是一个 Class 对象。通过 Class 对象可以获取该类的各种信息,包括类名、父类以及它所实现接口的名字等。

例 2

        编写一个实例,演示如何对 String 类型调用 getClass() 方法,然后输出其父类及实现的接口信息。具体实现代码如下:

public class Test02 {
    public static void printClassInfo(Object obj) {
        // 获取类名
        System.out.println("类名:" + obj.getClass().getName());

        // 获取父类名
        System.out.println("父类:" + obj.getClass().getSuperclass().getName());
        System.out.println("实现的接口有:");

        // 获取实现的接口并输出
        for (int i = 0; i < obj.getClass().getInterfaces().length; i++) {
            System.out.println(obj.getClass().getInterfaces()[i]);
        }
    }

    public static void main(String[] args) {
        String strObj = new String();
        printClassInfo(strObj);
    }
}

该程序的运行结果如下:

类名:java.lang.String
父类:java.lang.Object
实现的接口有:
interface java.io.Serializable
interface java.lang.Comparable
interface java.lang.CharSequence

接收任意引用类型的对象

        既然 Object 类是所有对象的父类,则所有的对象都可以向 Object 进行转换,在这其中也包含了数组和接口类型,即一切的引用数据类型都可以使用 Object 进行接收。

interface A {
    public String getInfo();
}

class B implements A {
    public String getInfo() {
        return "Hello World!!!";
    }
}

public class ObjectDemo04 {
    public static void main(String[] args) {
        // 为接口实例化
        A a = new B();
        // 对象向上转型
        Object obj = a;
        // 对象向下转型
        A x = (A) obj;
        System.out.println(x.getInfo());

    }
}

输出结果为:

Hello World!!!

通过以上代码可以发现,虽然接口不能继承一个类,但是依然是 Object 类的子类,因为接口本身是引用数据类型,所以可以进行向上转型操作。

同理,也可以使用 Object 接收一个数组,因为数组本身也是引用数据类型。

public class ObjectDemo05 {
    public static void main(String[] args) {
        int temp[] = { 1, 3, 5, 7, 9 };
        // 使用object接收数组
        Object obj = temp;
        // 传递数组引用
        print(obj);
    }

    public static void print(Object o) {
        // 判断对象的类型
        if (o instanceof int[]) {
            // 向下转型
            int x[] = (int[]) o;
            // 循环输出
            for (int i = 0; i < x.length; i++) {
                System.out.print(x[i] + "\t");
            }
        }
    }
}

输出结果为:

1 3 5 7 9

        以上程序使用 Object 接收一个整型数组,因为数组本身属于引用数据类型,所以可以使用 Object 接收数组内容,在输出时通过 instanceof 判断类型是否是一个整型数组,然后进行输出操作。

        提示:因为 Object 类可以接收任意的引用数据类型,所以在很多的类库设计上都采用 Object 作为方法的参数,这样操作起来会比较方便。

Java学习视频

Java基础:

Java300集,Java必备优质视频_手把手图解学习Java,让学习成为一种享受

Java项目:

【Java游戏项目】1小时教你用Java语言做经典扫雷游戏_手把手教你开发游戏

【Java毕业设计】OA办公系统项目实战_OA员工管理系统项目_java开发

图神经网络实战(2)——图论基础 图论 (Graph theory) 是数学的一个基本分支,涉及对图研究。图是复杂数据结构的可视化表示,有助于理解不同实体之间的关系。图论提供了大量建模和分析现实问题的工具,如交通系统、社交网络和互联网等。在本节中,将介绍图论的基本原理,主要涉及三个方面:图属性、图概念和图算法。 阅读详情

相关推荐

STM32CubeIDE入坑指南

一 前言 在科技日新月异的今天,作为从事效率为先的苦逼 IT 行业,秉承着我不入地狱谁入地狱的伟大革命精神,我决定再一次做第一个吃螃蟹的人,通过自身的入坑过程,为大家测试STM32CubeIDE这款新式工具。(其实是为了我能省点时间,快点做完项目,多挣点钱买几瓶肾气丸) 二 看一看别人是如何入坑的 二 手把手带你入坑 三 相关资料 ...

CH的博客 1万+

QT添加QObject类(想使用信号和槽)遇到的问题汇总,亲测解决有效error: undefined reference to `vtable for xxxxxx(你的类名)‘

帮助小伙伴们解决问题

lj19990824的博客 2777

5分钟搞定!用ZLMediaKit+GB28181搭建低成本外网视频监控(含避坑指南)

本文详细介绍了如何利用开源ZLMediaKit流媒体服务器与国标GB28181协议,快速搭建低成本、可外网访问的企业级视频监控系统。文章提供了从服务端部署、设备配置到外网访问优化的完整实战指南,并重点分享了网络配置、性能调优及常见问题的避坑方案,帮助用户实现高清视频流的稳定推送与多格式播放。

bush的博客 334

注解与反射

注解 @Override 表示方法的重写 @Deprecated 表示此方法已废弃、暂时可用,但以后此类或方法都不会再更新、后期可能会删除,建议后来人不要调用此方法。 @SuppressWarnings 用来抑制编译时的警告信息,通常需要添加一个参数才能使用 例如:@SuppressWarnings("all") @SuppressWarnings("uncheck") @SuppressWarnings("value = {"uncheck","d...

Melekh_的博客 192

告别谷歌翻译失效!手把手教你用Immersive Translate插件实现双语网页阅读(附Chrome/Edge/Firefox保姆级配置)

本文详细介绍了如何使用Immersive Translate插件实现双语网页阅读,解决谷歌翻译失效的问题。通过Chrome、Edge和Firefox的保姆级配置指南,帮助用户轻松安装和使用这款支持双语对照、智能识别网页内容的翻译插件,提升外文资料阅读效率。

weixin_28683689的博客 487

Yocto开发讲解系列 - 总目录

Yocto开发讲解系列总纲Yocto开发专栏前言

fulinux的博客 3万+

1.2 Object类详解

Object类概述 Object类是所有Java类的根父类 如果在类的声明中未使用extends关键字指明其父类,则默认父类为java.lang.Object类 Object类中的功能(属性、方法)就具有通用性。 属性:无 方法:equals() / toString() / getClass() /hashCode() / clone() / finalize() wait() 、 notify()、notifyAll() Object类只声明了一个空参的构造器 Object 是 Java 类库中的一

you can you up up up的博客 399

【AI智能体】Dify 基于知识库搭建智能客服问答应用详解

Dify 基于知识库搭建智能客服问答应用详解

congge 6929

Java中的Object类

Object类是Java java.lang包下的核心类,Object类是所有类的父类,何一个类时候如果没有明确的继承一个父类的话,那么它就是Object的子类;以下两种类的定义的最终效果是完全相同的: 使用Object类型接收所有类的对象Object 类的结构图(Object提供了11 个方法) 下面我们一个个方法进行分析,看这些方法到底有什么作用:1. clone()保护方法,实现对象的浅复制,只有实现了Cloneable接口才可以调用该方法,否则抛出CloneNotSupportedExcepti

SakuraMG的博客 1794

nvidia系列教程-AGX-Orin usb3.0接口调试

NVIDIA Jetson AGX Orin 是一款高性能的嵌入式计算平台,适用于 AI 推理、机器人、自动驾驶等应用场景。本文将介绍如何对 AGX Orin 平台上的 USB 3.0 接口进行调试,包括硬件检查、软件配置以及常见问题的排查。本文主要介绍在AGX-Orin平台开启两个usb3.0口的方法。通过以上步骤,您可以有效地调试和优化 NVIDIA Jetson AGX Orin 上的 USB 3.0 接口。

flypig has a dream! 1504

基于YOLOv8的包装商品智能检测系统完整指南—含论文、代码

《基于YOLOv8的包装商品智能检测系统》摘要: 本文提出了一套完整的零售商品自动检测解决方案,利用YOLOv8深度学习框架实现高精度、高效率的商品识别。系统针对SKU110K大规模商品数据集(含11,762张高密度货架图像)进行优化,包含数据预处理、模型训练、推理检测和可视化界面全流程。详细介绍了从CSV标注到YOLO格式的转换方法、环境配置指南及技术架构设计。该系统可应用于智能零售、物流仓储等多个场景,有效解决人工盘点效率低、误差大的痛点。实验表明,该系统具备毫秒级检测速度和批量处理能力,为商业数字化转

FJN110的博客 209

JAVA 重点类 Object类

一、Object类概述 Object类是所有Java类的根父类。如果在类的声明中未使用extends关键字指明其父类,则默认父类为java.lang.Object 二、Object类的属性和方法 作为所有类的祖先,自然Object类里面的方法自然有很多通用性。所以需要单独讲一下。 2.1构造器 Object类只有一个空参构造器。 2.2常用方法 查字典https://docs.oracle.com/en/java/javase/15/docs/api/java.base/java/lang...

chengqingshihuishui的博客 161

多模态脑区细分图谱 HCP-MMP v1.0, Glasser et al. 2016 皮层和皮下区域,简写和全称对应关系

人类连接组计划多模态脑区细分图谱(HCP-MMP)提供了对人类大脑皮层区域的非常有用的细分(Glasser et al. 2016a, b)。图谱是多模态的,因为每个区域都是根据四个标准的组合定义的,包括结构(T1加权/T2加权髓鞘含量和皮层厚度图)、静息态功能连接、基于任务的激活和拓扑地形组织。HCP-MMP v1.0图谱包含每个半球180个皮层区域,基于210名参与者的分析。

从事脑科学核磁共振方法学研究,在Nature communications等权威期刊发表研究论文,熟练掌握磁共振处理方法和统计学方法,欢迎大家和我交流。 2626

Java高级重点知识点-10-Object类

本文主要是对java中所有类的父类Object进行介绍,其中主要是争对toString()方法,以及equals方法进行了介绍。

m0_72926194的博客 829

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Java重点!Object类

有很多类系统自带已经重写了toString方法,判断是否重写是打印这个类的对象看是否是地址值,若是那么没有重写,例如ArrayList方法,它就重写了,若要重写,直接alt+enter组合按键点击toString(),就会自动创建,按自己要求更改 equal默认比较的是地址值 它只能比较地址值是否相同,无意义,那么要对它进行重写来比较两个对象的属性是否相同 主方法类如下 重写equal方法 obj居然还可以与this’比较,牛逼,不郭this就是本身的以上意思,的确可以,引用无值时默认null。这里增加一.

Gfeiyv的博客 212

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Java重点!object类重写toString,equals方法

对象就是一个地址值,接着右边传过来的对象,String s=p.toString(),把p.字符串输出赋值给s,若打印s的值会包括类所在路径加上十六位地址值,也就是说,和直接输出p的值没区别,打印对象名,就是调用p,toString()方法,可是打印地址值没有作用,所以要对它进行重写,来打印p的变量值 名字alt+insert加入tostring即可 以后不仅要加set,get,构造函数,还要加上tostring方法(重写后的),(默认打印地址,若不是地址值,俺么这个类的所在对象tostring重写了)来

Gfeiyv的博客 358

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

11.2 Object类的概述(重点) | 拉勾Java就业急训营

11.2 Object类的概述(重点)

m0_72168881的博客 149

JAVA笔记2第一章

这种获取字符串的方式,先在堆空间中创建一个字符串对象,再查看字符串串池中是否存在该对象,存在-字符串:由一个或是多个字符组成,用双引号引起来,底层为 字符数组进行存储。自动装箱和自动拆箱:基本数据类型和包装类型之间可以直接相互转换的。这种获取字符串的方式,在串池中完成字符串对象的创建,有。类型的引用可以 存储任意类型的对象,体现多态的应用。获取字符在当前字符串出现的第一个字符下标,统计以上字符串中大写字母的个数,并打印输出。包装类:基本数据类型对应的类成为包装类。:判断两个对象的内容是否相等,相等。

2302_82082990的博客 616

【Java】Object类简单解析

Object类是Java中一个非常重要的类,它为所有的Java对象提供了一些通用的方法。通过重写Object类中的方法,我们可以定制化对象的行为,使得它们更符合我们的需求。因此,在编写Java代码时,我们应该充分了解Object类,并善于使用其中的方法,以便更好地实现我们的业务逻辑。Object类定义了一些通用方法,包括toString()、equals()、hashCode()、getClass()等。因此,Object类提供了一个共同的基础,使得所有的Java对象都能够使用Object类中定义的方法。

double222222的博客 1096

雪里温柔,水边明秀,不及Java 抽象类 和 Object类

1. 抽象类 2. Object类

mgzdwm的博客 1169

Java 21中的Object类:深入解析与历史演进

本文详细介绍Java 21中的Object类及其历史演进,并结合图表进行说明。(文末有礼物)

一起探索IT的世界 1016

Object:所有类的超类

Object:所有类的超(父)类,equals()方法和hashCode()方法

qq_73993301的博客 427

Java——Object类详解

我们学习的所有类、我们以后定义的所有类,都是Object类的子类,也都具备Object类的所有特性。因此,我们非常有必要掌握Object类的用法。

m0_74764044的博客 633

Java - Object类

1. 意义 为什么今天我想说这个类呢,因为作为the root of class hierarchy,我发现我竟没有认认真真好好理解它的内容以及所有方法的意义。这似乎是不应该的。。。。so,补课,重新学习它 定义: Object对象是Java类层次结构的根类,所有类的超类 所有的对象(包括数组)都实现这个类的方法 2. 方法 JavaSE7API中的Outline

「有且仅有」 1324

简单介绍Java Object类及常用方法

Object类概述 1.Object类是Java语言中类层次结构的根类,所有对象(包括数组)都实现了这个类的方法。2. Object类常用方法 2.2方法--boolean equals(Object obj)2.3方法--int hashCode()2.4方法--Class getClass()3. 注意事项3.1 equals协议3.2hashCode协议 ......

qq_52972504的博客 1191

Java万物之父Object

目录 Object的toString方法 Object的equlas方法 简介 Object是Java的万物之母,全名称java.lang.Object(包名.类名),它是所有类的默认父类,无需使用extends来定义,只要是class声明的类都是Object的子类 为什么引入Object类 因为它是所有的类的父类,所以可以使用Object引用来接收所有的类的对象,能实现参数的最高统一化 Object子类的扩展 JDK对Object进行了扩展,Object类可以接收...

一名在校大三学习JAVA 1175
上一篇: Java包装类、装箱和拆箱需要掌握哪些?
下一篇: Java Integer类有哪些重点需要掌握?
程序媛_小白
博客等级 码龄5年 322粉丝 163原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值