阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

应用程序编程接口-API

109次阅读
没有评论

共计 3216 个字符,预计需要花费 9 分钟才能阅读完成。

1、API 概述

1.1、什么是 API

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

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

1.2、JDK 帮助文档使用

打开帮助文档

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

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

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

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

2、Object 类

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

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 对象的具体信息,而不是其地址值。

/*  * 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); } }

运行结果:

应用程序编程接口 -API

2.2、equals()

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

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

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

/*  *  类似 * 号这种运算符是不能操作引用数据类型的  *    *  == 比较的是对象的地址值  *  前提: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)); } }

运行结果:

应用程序编程接口 -API

2.3、其他方法

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

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

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

/* * 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()); } }

运行结果:
应用程序编程接口 -API

正文完
星哥说事-微信公众号
post-qrcode
 
星锅
版权声明:本站原创文章,由 星锅 2022-06-06发表,共计3216字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中