Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Java中常用的API(一)——Object

Java中常用的API(一)——Object

作者头像
roobtyan
发布于 2019-02-21 07:51:11
发布于 2019-02-21 07:51:11
50500
代码可运行
举报
运行总次数:0
代码可运行

概述

如果要问Java为什么是用起来非常舒服的语言,那很大一部分的功劳就是JavaAPI的。API定义了许多封装好的类和方法供我们使用,来处理特定的问题,所以学习常用的API是非常重要的。 同时,面向对象的核心思想就是用合适的对象去做合适的事情。什么是合适的对象呢?一种是自己根据需要创建的类而生成的对象,另一种是sun官方描述的好多常用的类,我们使用这些类创建的对象,这也就是API的概念。 sun定义的那么多类的终极父类是Objec类。Object描述的是所有类的通用属性与方法。 所以,API的介绍就是从Object类开始的。

Object对象

1. toString方法:返回的是对象的描述信息 当我们直接输出一个对象的时候,这时候就会调用被输出对象的toString方法。代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class Person{
    public String name;
    public String sex;
    public int age;

    public Person(String name,String sex,int age){
        this.age = age;
        this.name = name;
        this.sex = sex;
    }
}
public class Demo1 {
    public static void main(String[] args){
        System.out.println(p);
    }
}

代码执行后输出的结果是:java.lang.Object@de6ced 可以看出,直接调用toString方法输出的是:类名@哈希码值的十六进制形式。 对于上述代码,如果给出的需求是这样的:调用输出方法的时候,输出这个对象(Person)姓名、年龄、性别。这个时候又应该如何实现呢? 根据我们之前学的继承,假如父类的指定的功能不能满足要求,那么子类可以复写父类的功能函数。那么该对象再调用toString()方法时,则会调用子类复写的toString方法。 所以为了达到这个目的,需要对Person类的toString方法重写。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//重写toString方法
public String toString(){
    return "姓名:" + name + " 性别:" + sex + " 年龄" + age;
}

这个时候,输出的内容就满足我们的需求了。 这里一个重要的编程习惯就是:我们在进行开发时,要对自定义的类重写toString方法,对对象进行详细的描述说明。

2. equals方法:返回的是比较的结果 利用equals方法来比较两个对象,如果相等返回true,否则false,比较的是对象的内存地址值。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class Demo1 {
    public static void main(String[] args){
        Person p = new Person("王浩","男",33);
        Person p1 = new Person("王浩","男",33);
        System.out.println(p.equals(p1));
    }
}

还是使用Person这个类,创建的两个对象。根据我们前面学习的知识,比较之后输出的结果肯定是false。因为创建的这两个对象的内存地址不同,所以会产生这样的输出结果。 如果我们将代码这样改写:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class Demo1 {
    public static void main(String[] args){
        Person p = new Person("王浩","男",33);
        Person p1 = p;
        System.out.println(p.equals(p1));
    }
}

这时候,输出的结果就是true了。因为此时p和p1指向的是同一块内存地址。 那么,接下来我们有一个需求:将equals比较的条件换成姓名、性别、年龄,如果以上三项相同,则表示相同。根据toString方法的启示,这里当然也要对equals方法进行重写。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class Person{
    public String name;
    public String sex;
    public int age;

    public Person(String name,String sex,int age){
        this.age = age;
        this.name = name;
        this.sex = sex;
    }
    public boolean equals(Object obj){
        Person p = null;
        //判断obj对象是否属于Person类
        if(obj instanceof Person){
            //obj对象如果是Person的类,则对obj进行类型转换
            p = (Person)obj;
        }
        if(this.name.equals(p.name)&&this.sex.equals(p.sex)&&this.age==p.age){
            return true;
        }
        return false;
    }
}
public class Demo1 {
    public static void main(String[] args){
        Person p = new Person("王浩","男",33);
        Person p1 = new Person("王浩","男",33);
        System.out.println(p.equals(p1));
    }
}

此时输出的结果就是true了。 注意:代码中的instanceof的作用是判断某个对象是否属于某个类,这个关键字的应用还是相当广范的。 最后,我们要对自定义的类重写equals(),使得比较两个对象的时候比较对象的属性是否相等,而不是内存地址

3. hashCode方法:返回该对象的哈希码值 这个方法采用系统底层的哈希算法实现,同一个对象的呷西码是唯一的,同时,java规定如果两个对象equals返回true,那么这两个对象的hashCode码必须一致。 所以,一旦对equals方法重写,那么一般来讲也要对hashCode方法重写。对于hashCode方法不做过多赘述。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018年02月07日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
shell脚本实现微信告警——WGCLOUD
本文是在linux系统用shell方式实现WGCLOUD微信告警,windows系统实现微信告警点击此处
那年十八
2021/11/14
1.2K0
shell脚本实现微信告警——WGCLOUD
SSH安全告警企业微信消息提醒
SSH安全告警微信消息提醒 1.1SSH安全告警微信消息提醒 1.1.1前言 由于公司网络服务器资源限制,无法使用监控及堡垒机(防止被攻击所有编写此文章) 1.1.2服务器环境及配置说明 名称 性能 说明 服务器 腾讯云 扩展性强 内存 4G 前期不需要太大,所以定4G 硬盘 固态 100G 提高了硬盘的读写性能 CPU 2 核 4G 2 核 4G ssh_huanji.sh 配置环境的脚本 weixin.sh 微信接口脚本 Login92fuge.sh 配置登录主脚本 ip-where.sh
富哥运维
2022/04/02
6650
SSH安全告警企业微信消息提醒
分布式监控系统Zabbix-3.0.3-完整安装记录(6)-微信报警部署
Zabbix可以通过多种方式把告警信息发送到指定人,常用的有邮件,短信报警方式。 现在由于微信使用的广泛度,越来越多的企业开始使用zabbix结合微信作为主要的告警方式,这样可以及时有效的把告警信息推送到接收人,方便告警的及时处理。 前面介绍了zabbix的邮件报警的部署过程,这里继续说下zabbix的微信报警环境的部署。 废话不多说了,下面记录了微信报警的操作过程: 接下来详细记录如下: 1)微信企业号的申请过程 2)微信企业号登陆后的相关设置 3)zabbix结合微信报警脚本设置 -----------
洗尽了浮华
2018/01/22
1.1K0
分布式监控系统Zabbix-3.0.3-完整安装记录(6)-微信报警部署
zabbix告警系统--文末彩蛋
zabbix安装和配置非常简单,学习成本低,但是zabbix告警却是很烦人的,而且关于告警的中文翻译资料非常少.
互联网老辛
2018/10/18
1.8K0
zabbix微信报警设置
这里要先点通讯录创建一个部门,然后再点应用小程序创建应用,填写logo、名称、和选择部门就可以了
Cyylog
2020/08/19
2K0
系统监控及钉钉机器人告警脚本
一、背景 当前不同的公司服务器较多,在项目开发、部署和演示过程多次遇到服务器无故宕机的情况,另外各服务器上部署的中间件也存在无故下线的情况,如果出现以上情况就特别棘手,而技术人员无法第一时间感知。
IT运维技术圈
2022/10/24
6290
服务器资源监控脚本(钉钉告警——CPU、内存、磁盘等)
#!/bin/bash ############################################## #Author: bboy枫亭 #Last modified: 2021-08-06 ############################################## #获取cpu使用率 cpuUsage=`top | head -5 | awk -F '[, ]+' 'NR==3 {print $11}'` #获取磁盘使用率 data_name="/" diskU
bboy枫亭
2021/12/07
7.4K1
OpenWRT简易版serverchan脚本推送至企业微信
By HKL, on Monday 2021-05-31 15:20, tagged: 🏷️Linux 🏷️Operating 🏷️Networking
hiplon
2023/10/18
5140
发送钉钉消息 Shell 脚本
由于跑批任务大概在凌晨 2:15 分左右完成,故设置 2:20 开始检测,每 30 分钟(可调整)钉钉告警一次未获取到,之后一直检测,直到检测到文件生成。
叨叨软件测试
2020/06/16
1.9K0
【shell脚本】Graylog服务状态异常监测与告警
之前有写过类似脚本 【优化篇】使用Keepalived实现简单的GrayLog高可用
yuanfan2012
2023/09/06
6750
【shell脚本】Graylog服务状态异常监测与告警
Linux Shell常用脚本整理
一些常用的Shell脚本笔记,这是当年在兄弟连学习Linux运维是写过的一些案例,后期在工作中也遇到了一些问题需要使用shell来解决的,这里总结起来方便以后可以直接复用。
王 瑞
2022/12/28
1K0
我是怎样用Shell脚本完成钉钉机器人消息推送的
我喜欢shell,是因为在Linux环境下,几乎可以完成所有的事儿,而且依赖问题几乎可以忽略不计(一些特殊环境除外)。 所从这个角度出发,我大部分的代码都会优选Shell,当shell无法完成时我才会借助第三方语言来辅助,比如:PHP、Python等
爱技术的小黄鸭
2023/06/15
1.9K2
我是怎样用Shell脚本完成钉钉机器人消息推送的
JVM内存监控shell脚本
该shell脚本主要用于监控: 1.各个进程的jvm内存使用情况; 2.端口监控; 3.访问的页面是否正常。 脚本名称:jvm-monitor.sh,具体脚本如下: ---- [root@loong /]#more jvm-monitor.sh #!/bin/bash export JAVA_PATH=/callcent/jdk1.6.0_25 export PATH=$PATH:$JAVA_PATH/bin:/sbin:/usr/sbin:/usr/local/sbin:/root/bin:/usr/lo
loong576
2019/09/10
1.9K0
JVM内存监控shell脚本
Linux Shell脚本案例
1.Dos攻击防范(自动屏蔽攻击IP) #!/bin/bash DATE=$(date +%d/%b/%Y:%H:%M) LOG_FILE=/usr/local/nginx/logs/demo2.access.log ABNORMAL_IP=$(tail -n5000 $LOG_FILE |grep $DATE |awk '{a[$1]++}END{for(i in a)if(a[i]>10)print i}') for IP in $ABNORMAL_IP; do if [ $(iptabl
用户7741497
2022/03/01
1.4K0
服务器监控告警配置(钉钉)
服务监控告警——钉钉群机器人 1、新建钉钉群机器人 2、编写 Shell 脚本 3、定时任务 4、部分效果截图 本文演示一个利用钉钉群监控、告警服务器运行服务所处的状态。 1、新建钉钉群机器人 2、编写 Shell 脚本 #!/bin/bash #端口 Port_Nginx="80" Port_MySQL="3306" #...此处省略多个端口,按照自己需求配置即可 Port_flink="xxx" #网卡配置(可选) # ifconfig="eth0" #@管理员手机号 us
bboy枫亭
2021/12/07
1.5K0
服务器监控告警配置(钉钉)
常用的shell脚本
天天浏览博客的好处就是可以学习新知识,且可以温习旧知识。 以下内容摘自公众号----一口Linux,在此记录一下。
cultureSun
2023/05/18
4960
[891]利用企业微信实现监控通知
未验证主体信息的账号只能有200个成员,发送次数的限制为:帐号上限数*30人次/天
周小董
2022/04/13
6930
[891]利用企业微信实现监控通知
简单shell脚本,实现多台liunx服务器自动巡检,避免每天重复的劳动工作!
运维服务一个项目二十多台(或者多台)服务器,每天要做服务器的性能巡检工作是查看服务器的CPU、内存、磁盘空间是否在正常值范围内。像这样每天或者每个固定时间段都做相同的重复工作,为了简化重复的工作,我写了基于liunx服务器的自动巡检脚本,在crontab中设定一个固定时间进行自动执行即可,以减少人工重复劳动的工作。
程序猿的栖息地
2022/04/29
1.1K0
【优化篇】telegraf+shell脚本实现秒级的服务状态异常监测与告警
在《【shell脚本】Graylog服务状态异常监测与告警》 文章脚本的基础上,修改成一个检测GrayLog5.1版本opensearch状态的脚本
yuanfan2012
2023/09/06
7720
【优化篇】telegraf+shell脚本实现秒级的服务状态异常监测与告警
Linux 【Shell脚本经典案例】
===============Talk is cheap, show me the code,bye-bye================
IT茂茂
2020/09/17
3.4K0
Linux 【Shell脚本经典案例】
推荐阅读
相关推荐
shell脚本实现微信告警——WGCLOUD
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验