java之API精选
Posted 磊哥的Java历险记
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java之API精选相关的知识,希望对你有一定的参考价值。
前言:
脚下的路,没人替你决定方向,心中的梦,没人替你去完成,风吹雨打知生活,苦尽甘来懂人生!
人生就是一种感受,一种历练,一次懂得!告诉自己,人一定要靠自己,没有等来的辉煌,只有拼来的精彩!
我们上一篇聊到了包类库,这一片我们聊一下API的概念和用法,针对于以下的概念,都会有实体例子配合着,给大家演示,希望给大家带来一些帮助!
一.介绍
API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。
Java API指的就是JDK中提供的各种功能的Java类。
Java API-JavaAPI就是sun公司提供给我们使用的类,这些类将底层的实现封装了起来,我们不需要关心这些类是如何实现的,只需要学习这些类如何使用。
源代码-在JDK中有src.zip文件,这个文件夹是所有Java类的源文件。可以在其中查看相对应的类的源码。
我们可以通过查帮助文档来了解Java提供的API如何使用。
二.知识点介绍
1、概述
2、Object类
三.知识点详解
举例:
String
Scanner
Random
java.lang.Object //不需要引入,根类
toString 显示字符串
equals 比较对象
==在引用数据类型时,比较的是地址。
equals比较的是对象里面的值
getClass 返回对象数据类型
hashCode 返回对象哈希值(地址值)
finalize GC,手动清除资源
wait(),notify(),notifyAll()
1、API概述
API(ApplicationProgramming Interface):应用程序编程接口
编写一个机器人程序去控制机器人踢足球,程序就需要向机器人发出向前跑、向后跑、射门、抢球等各种命令,没有编过程序的人很难想象这样的程序如何编写。但是对于有经验的开发人员来说,知道机器人厂商一定会提供一些用于控制机器人的Java类,这些类中定义好了操作机器人各种动作的方法。其实,这些Java类就是机器人厂商提供给应用程序编程的接口,大家把这些类称为API。
1.1、使用步骤
API文档在网上有很多,大家根据自己的实际需求选择下载,且实际的操作也是大同小异,界面也会有些不同,但是操作逻辑都是差不多的,里面详细介绍了java一些类库的介绍,用法,含义,多维度的分析,建议初学者的兄弟们花些时间,研究一下,对自己的理解会很有帮助的。
(1)打开帮助文档,左边是目录,右边是解释:
(2)点击显示,找到索引,看到输入框
(3)输入要搜索的API内容,在输入框里输入,然后回车
(4)看包:java.lang下的类不需要导包,其他需要
(5)看类的解释和说明,学习构造方法,使用成员方法
2、Object类
Object类是Java语言中的根类,即所有类的父类。其所有方法子类都可以使用。其中的toString、equals是非常常用的方法。
代码演示:
package Test2;
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
// publicint hashCode()
//
// return0x35d;
//
// Person类重写了Object类的toString方法 不打印地址值 打印对象属性内容
@Override
public String toString()
String info = "name:"+name+" age:"+age;
return info;
主方法调用:
package Test2;
import com.Test.person;
public class Tested
private final static String name = "磊哥的java历险记-@51博客";
public static void main(String[] args)
person p = new person();
p.toString();
System.out.println(p.toString());
System.out.println("============="+name+"=============");
2.1、toString()方法
当调用System.out.println()方法时,实际上是调用被打印者的toString方法,返回字符串,再将字符串打印的过程。
但是Object类的toString方法返回的为对象地址值,即对象的类型+@+哈希值(地址值)。所以我们需要重写User类的该方法,让该方法返回的是一个User 对象的具体信息,而不是其地址值。
代码演示:
package Test2;
import com.Test.person;
public class Tested
private final static String name = "磊哥的java历险记-@51博客";
public static void main(String[] args)
/*
*Object类 是所有类的根类
*
* 前提是在Object类中:
*public String toString() 对象的类型+@+哈希值(地址值)
*
* 调用toString方法打印的是地址值,但是通常我们不希望打印地址值,我们希望能够看到对象的属性值
*
*
*
*/
Object obj = new Object();
System.out.println(obj.toString());
System.out.println(obj);
Person p = new Person("磊哥的java历险记",4);
System.out.println(p.toString());
System.out.println(p);
System.out.println("============="+name+"=============");
//
// Scannersc = new Scanner(System.in);
// System.out.println(sc);
2.2、equals()方法
由于引用类型不能像基本类型一样使用==运算符来进行运算判断,所以判断两个对象是否”相同”使用的是equals方法。
Object类的equals方法比较的为对象地址值,所以我们需要重新定义两个对象的比较规则,比如字符串就是重写了equals方法才比较的为内容,否则比较的也为地址值。再比如本例中,我们可以将姓名相同的User判断为相同的User。这时根据规则重写equals方法即可。(如果有别的需求则按照别的需求来重写equals方法!)
注意:在复写Object中的equals方法时,一定要注意public boolean equals(Object obj)的参数是Object类型,在调用对象特有数据时,一定要进行类型转换,在转换之前必须进行类型判断。
代码示例:
package Test2;
import com.Test.person;
public class Tested
private final static String name = "磊哥的java历险记-@51博客";
/*
* 类似*号这种运算符是不能操作引用数据类型的
*
* ==比较的是对象的地址值
* 前提:Object的equals方法
* public boolean equals(Object obj) 和==一样都是比较两个引用数据类型的地址值,
* 只有两个对象的引用是同一个时返回true
* 调用equals方法比较的是地址值,但是通常我们不希望比较地址值,我们希望能够比较对象的属性值
*
*/
public static void main(String[] args)
Person p = new Person("磊哥",25); //0x1111
Person p2 = new Person("java",31); //0x2222
Person p3 = new Person("历险记",4);//0x3333
//使用==比较引用数据类型 ,比较的是对象的地址值
System.out.println(p==p2);//false
System.out.println(p2==p3);//false
System.out.println("============="+name+"=============");
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 //垃圾回收器调用,执行清除资源
代码演示:
package Test2;
import com.Test.person;
public class Tested
private final static String name = "磊哥的java历险记-@51博客";
/*
* Object类的其他方法
*
* public final ClassgetClass() //返回对象数据类型
* public int hashCode() //返回对象哈希值(地址值)(常作为识别不同对象的依据)
*/
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());
System.out.println("============="+name+"=============");
结语:
我从不知道顺其自然有多自然,但我知道现实有多现实。
我从未感受过雪中送炭,只见过锦上添花~
学习可能不会让你变得有钱,但是会明确你的道路!!!
感谢兄弟们的持续关注!
以上是关于java之API精选的主要内容,如果未能解决你的问题,请参考以下文章