从屌丝到架构师的飞越(API篇)-API

一.介绍

API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。

Java API指的就是JDK中提供的各种功能的Java类。

Java API-Java API就是sun公司提供给我们使用的类,这些类将底层的实现封装了起来,我们不需要关心这些类是如何实现的,只需要学习这些类如何使用。

源代码-在JDK中有src.zip文件,这个文件夹是所有Java类的源文件。可以在其中查看相对应的类的源码。

我们可以通过查帮助文档来了解Java提供的API如何使用

从屌丝到架构师的飞越(API篇)-API_第1张图片

二.知识点介绍

1、概述

2、Object类

三.上课视频对应文档说明

1、API概述

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

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

1.1、使用步骤

(1)打开帮助文档

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

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

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

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

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;

}

// @Override

// public int hashCode() {

// 

//  return 0x35d;

// }

// Person类重写了Object类的toString方法 不打印地址值 打印对象属性内容

@Override

public String toString() {

String info = "name:"+name+"  age:"+age;

return info;

}

}

2.1、toString()方法

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

但是Object类的toString方法返回的为对象地址值,即对象的类型+@+哈希值(地址值)。所以我们需要重写User类的该方法,让该方法返回的是一个User 对象的具体信息,而不是其地址值。

代码示例:

import java.util.Scanner;

/*

* Object类  是所有类的根类

*

* 前提是在Object类中:

* public String toString() 对象的类型+@+哈希值(地址值)

*

* 调用toString方法打印的是地址值,但是通常我们不希望打印地址值,我们希望能够看到对象的属性值

*

*

*

*/

public class Demo01_Object {

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);

// 

//  Scanner sc = new Scanner(System.in);

//  System.out.println(sc);

}

}

从屌丝到架构师的飞越(API篇)-API_第2张图片

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 Demo02_Object {

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));

}

}

2.3、其他方法

(1)public final Class getClass()  //返回对象数据类型

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

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

代码示例:

/*

* Object类的其他方法

*

* public final Class getClass()  //返回对象数据类型

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

*/

public class Demo03_Object {

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篇)-API)