API
Java语言中,已经提供了大量的类库供程序开发者使用,这些类库是Java语言提供的、已经写好的、用来实现常见的和通用的功能的类的集合,我们称之为“应用程序接口(API-Application Program Interface)”
这些API根据实现的功能不同,划分为不同的集合,每个集合组成以个包,称为类库。
在我们下载和安装的JDK中,已经包含了这些基础的API类库。在编程时,如果要实现一些特定的功能,最好的办法是首先找一找JDK中有没有提供相应的API类。如果有,首先使用类库中的这些API类。只有JDK没有提供我们需要的API类时,才需要我们自己来编写类。因此,了解JDK所提供的API类可以帮助开发者节省大量的编程时间,而且能够使编写的程序更简单更实用。
从某些方面来说,对JDK所提供的API了解的程度,决定了开发者编程的能力。
面向对象的和核心思想:“找合适的对象,做适合的事情”。JavaSE中已经描述了很多常用的类,可以使用这些类常见对象。这些常用的类一般位于 java.lang 包下,不需要导包。
在不同场合,这个编程接口的含义不同:
1、java api是指标准类库提供的函数
2、android 开发的api是指android sdk函数库
3、网站api一般是指一个网站提供的接口,比如登陆验证、信息查询、通知、支付等
4、windows api是指windows操作系统提供的api
Object类
Object类是所有类的基类(父类/超类),因此任何类的对象都可以使用Object中提供的方法。也可以根据需要重写其中的方法。Object的构造是无参构造。
常用方法:
1、equals()方法
原型是:public boolean equals(Object obj)
这个方法用于比较两个对象是否相等,默认相当于 “ == ” 的功能。对于值类型,比较他们的值是否相等;对于引用类型,比较他们的内存地址是否相等;我们也可以在自定义中重写equals方法来比较两个对象是否相等。
public boolean equals(Object obj) {
return (this == obj);//this代表当前调用此方法对象
}
2、hashCode()方法
方法原型:public int hashCode();
作用:返回该对象的哈希码值,这个默认值是由对象的内存地址计算出来的,每次运行程序返回结果可能不一样。
提供此方法是为了提高哈希表的性能,一般是重写 equals 方法的同时重写 hashCode方法,让“相同”的对象返回相同的 hash 码,让不相同的对象尽量返回不相同的哈希码,这样有利于提高哈希表性能。
3、toString()方法
方法原型:public String toString();
作用:返回该对象的字符串表示。自定义类可重写此方法以方便利用toString()直接输出对象的一些信息。查看JDK源码,发现toString()默认返回的是:
public String toString(){
return getClass.getName() + "@" + Interger.toHexString(hashCode());
}
就是:“类名 + @ + hashCode值的十六进制形式”。
当用System.out.println(对象)输出对象时,显示的就是toString()返回的值、String类已经重写了toString()方法,所以直接输出看到的是字符串。
4、finalize()
Java允许在类中定义一个名为finalize()的方法。它的工作原理是:一旦垃圾回收器准备好释放对象占用的存储空间,将首先调用finalize()方法,并且在下一次垃圾回收动作发生时,才会真正回收对象占用的内存。
关于垃圾回收,有三点需要记住:
- 对象的 finalize 方法不一定会被调用,即使是进程退出前。
- 发生 GC 时一个对象的内存是否释放取决于是否存在该对象的引用,如果该对象包含对象成员,那对象成员也遵循本条。
- 对象里包含的对象成员按声明顺序进行释放。
注意:在实际开发中,不要去重写finalize()方法;也不要主动的去使用System.gc();
public class ObejctDemo{
public static void main(String[] args){
Student stu1 = new Student();
Student stu2 = new Student();
System.out.println(stu1 == stu2);
System.out.println(stu1.equals( stu2));
String str1 = "abc";
String str2 = "abc";
System.out.println(str1 == str2);
System.out.println(str1.equals( str2));
System.out.println("---------------------------");
System.out.println(str1.hashCode());
System.out.println(str2.hashCode());
System.out.println("---------------------------");
Integer a = 12;//int a = 12
Object obj = a.toString() + 1;
System.out.println(obj);
//stu1 = null;
System.out.println("---------------------------");
System.gc();//就是人为的调用垃圾回收器
}
}
class Student{
protected void finalize() throws Throwable{
System.out.println("被回收了....");
}
}