前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >应用程序编程接口-API

应用程序编程接口-API

作者头像
星哥玩云
发布2022-09-14 20:02:39
4060
发布2022-09-14 20:02:39
举报
文章被收录于专栏:开源部署开源部署

1、API概述

1.1、什么是API

API(Application Programming Interface):应用程序编程接口

编写一个机器人程序去控制机器人踢足球,程序就需要向机器人发出向前跑、向后跑、射门、抢球等各种命令,没有编过程序的人很难想象这样的程序如何编写。但是对于有经验的开发人员来说,知道机器人厂商一定会提供一些用于控制机器人的Java类,这些类中定义好了操作机器人各种动作的方法。其实,这些Java类就是机器人厂商提供给应用程序编程的接口,大家把这些类称为API。

1.2、JDK帮助文档使用

打开帮助文档

点击显示,找到索引,看到输入框

输入要搜索的API内容,在输入框里输入,然后回车

看包:java.lang下的类不需要导包,其他需要

看类的解释和说明,学习构造方法,使用成员方法

2、Object类

Object类是Java语言中的根类,即所有类的父类。其所有方法子类都可以使用。其中的toString、equals是非常常用的方法。

代码语言:javascript
复制
public class Person extends Object{
    private String name;
    private int age;

    public Person() {
        super();
        // TODO Auto-generated constructor stub
    }
    public Person(String name, int age) {
        super();
        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;
    }
    //Person类重写了Object类的equals方法 不比较地址值 比较对象属性内容
    @Override
    public boolean equals(Object obj) {
        //向下转型  将obj转换为Person类型
        Person other = (Person)obj;
        //this与other的比较 属性的比较

        //如果this和other的年龄不相等  直接返回false
        if(this.age !=other.age){
            return false;
        }

        //如果继续往下走代表年龄相等 那么比较姓名
        //因为String类重写了equals 比较的不是地址值比较的是两个字符串的内容是否相等
        //索引调用equals比较两个对象的姓名
        if(!this.name.equals(other.name)){
            return false;
        }
        return true;
    }

    // Person类重写了Object类的toString方法 不打印地址值 打印对象属性内容
    @Override
    public String toString() {
        String info = "name:"+name+"   age:"+age;
        return info;
    }
}

2.1、toString()

当调用System.out.println()方法时,实际上是调用被打印者的toString方法,返回字符串,再将字符串打印的过程。

但是Object类的toString方法返回的为对象地址值,即对象的类型+@+哈希值(地址值)。

所以我们需要重写Object类的该方法,让该方法返回的是一个Object对象的具体信息,而不是其地址值。

代码语言:javascript
复制
/*
 * Object类  是所有类的根类
 *
 * 前提是在Object类中:
 * public String toString() 对象的类型+@+哈希值(地址值)
 *
 * 调用toString方法打印的是地址值,但是通常我们不希望打印地址值,我们希望能够看到对象的属性值
 *
 *
 *
 */
public class ObjectDemo01 {
    public static void main(String[] args) {
        Object obj = new Object();
        System.out.println(obj.toString());
        System.out.println(obj);
        Person p = new Person("柳岩",18);
        System.out.println(p.toString());
        System.out.println(p);
    }
}

运行结果:

image20200113201536474.png
image20200113201536474.png

2.2、equals()

由于引用类型不能像基本类型一样使用==运算符来进行运算判断,所以判断两个对象是否”相同”使用的是equals方法。

Object类的equals方法比较的为对象地址值,所以我们需要重新定义两个对象的比较规则,比如字符串就是重写了equals方法才比较的为内容,否则比较的也为地址值。再比如本例中,我们可以将姓名相同的User判断为相同的User。这时根据规则重写equals方法即可。(如果有别的需求则按照别的需求来重写equals方法!)

注意:在复写Object中的equals方法时,一定要注意public boolean equals(Object obj)的参数是Object类型,在调用对象特有数据时,一定要进行类型转换,在转换之前必须进行类型判断。

代码语言:javascript
复制
/*
 *  类似*号这种运算符是不能操作引用数据类型的
 *  
 *  ==比较的是对象的地址值
 *  前提:Object的equals方法
 *  public boolean equals(Object obj)  和==一样都是比较两个引用数据类型的地址值,
 *          只有两个对象的引用是同一个时返回true
 *  调用equals方法比较的是地址值,但是通常我们不希望比较地址值,我们希望能够比较对象的属性值
 *  
 */
public class ObjectDemo02 {
    public static void main(String[] args) {
        Person p = new Person("班长",18); //0x1111
        Person p2 = new Person("柳岩",20); //0x2222
        Person p3 = new Person("柳岩",20);//0x3333
        //使用==比较引用数据类型 ,比较的是对象的地址值
        System.out.println(p==p2);//false
        System.out.println(p2==p3);//false
        System.out.println("--------------------------");
        System.out.println(p.equals(p2));
        System.out.println(p2.equals(p3));
        System.out.println(p.equals(p));
    }
}

运行结果:

image20200113201832598.png
image20200113201832598.png

2.3、其他方法

public final Class<?> getClass() //返回对象数据类型

public int hashCode() //返回对象哈希值(地址值)(常作为识别不同对象的依据)

protected void finalize() throws Throwable //垃圾回收器调用,执行清除资源

代码语言:javascript
复制
/*
 * Object类的其他方法
 *
 * public final Class<?> getClass()  //返回对象数据类型
 * public int hashCode()    //返回对象哈希值(地址值)(常作为识别不同对象的依据)
 */
public class ObjectDemo03 {
    public static void main(String[] args) {
        Person p = new Person();
        //返回对象数据类型
        Class x = p.getClass();
        System.out.println(x);
        System.out.println(p.toString());
        System.out.println(p.hashCode());
    }
}

运行结果:

image20200113202018639.png
image20200113202018639.png
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、API概述
    • 1.1、什么是API
      • 1.2、JDK帮助文档使用
      • 2、Object类
        • 2.1、toString()
          • 2.2、equals()
            • 2.3、其他方法
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档