第六章:认识Java的API-使用Java函数库

该系列文章系个人读书笔记及总结性内容,任何组织和个人不得转载进行商业活动!

第六章:认识Java的API-使用Java函数库


Java内置有数百个类

    如果你知道如何从统称Java API的Java的函数库中查找所需功能,那就不用再造轮子了;
    核心Java函数库是由一堆等着被你当做组件使用的类集合而成的;
    你可以大量运用这些预设的组件来写程序;

数组无法改变大小

    我们之前使用的数组,如String[] ss = new String[3];在初始化时就已经确定了数组大小;
    可以使用新的数组从原数组中copy值,变相实现;

那么有没有能增加/删除元素自动缩放的、类似数组的结构呢?

ArrayList

    他不是数组,它是Java函数库中的另一个类;
    Java SE(标准版本)带有很多创建好的类,类似我们写好的代码,只不过它们已经被编译过了;

Methods:
    add(Object elem)
    remove(int index)
    remove(Object elem)
    contains(Object elem)
    isEmpty();
    indexOf(Object elem)//没有的话会返回-1
    size()
    get(int index)

想知道API里有什么,确实需要花些时间,稍后介绍;

再看ArrayList

    我是个对象;
    数组没办法删除元素,但我可以,并且动态改变我的大小;
    但对于primitive主数据类型,不能直接保存,包装起来就好了;这个在Java5.0,包装工作会自动进行;
    使用的时候,也是在运用ArrayList类型的对象,使用“.”运算符来调用它的方法;

相比于数组,会以特殊的语法来操作,但是这样的特殊语法只能用在数组上;虽说数组也是对象,但是他有自己的规则,你无法调用它的方法,最多只能存取它的length实例变量;
(其实可以看到java中的类都是将实例变量封装的,调用的一般都是方法)

一般数组在创建时就必须确定大小;ArrayList则不需要;
一般数组使用特殊的语法,[0]这种下标的方式;ArrayList只是个普通对象;
存放对象一般数组必须指定位置,切不能越界;ArrayList可以用add(int,Object)或add(Object);


ArrayList的参数化:(parameterized)

    Java5.0:参数化类型(类似Swift的泛型,用法和OC差不多)
    ArrayList<String>
        <String>是类型参数,ArrayList<String>表示字符串的集合;否则ArrayList将是异质对象的集合;

使用ArrayList需要

    import java.util.ArrayList;
    或
    import java.util.*;
    (还记得之前用过一个import java.io.*;吗!)

这里需要熟悉几个运算符

    与 和 或 运算符(&&,||);
    不等于 和 非 运算符(!= 和 !);
    短运算符(&&,||):
        使用&&时,JVM如果发现左边为false,就不会再去判断右边;||同理;
    长运算符(&,|):
        使用在boolean表达式时会强制JVM一定计算两边的算事;
        但这两个运算符通常是用来作位运算的;

使用函数库(Java API)

    在Java的API中,类是被包装在包中的;
    要使用API中的类,必须知道他被放到哪个包中;

Java函数库中的每个类都属于某个包:
    这些包都有名字,像是javax.swing;ArrayList是放在java.util这个包中的;(java.util放了很多工具类,后续会介绍包括如何自制包)

使用来自API的类需要知名函数库类的完整名称:包的名称加上类的名称:
    像是System、String、Math都属于java.lang这个包;
    ArrayList的全名是java.util.ArrayLsit;

指定使用类的方法(两种)

1)import:
    放一个import述句在程序源文件最前边,使用的时候就可以直接使用ArrayList类型;
    import java.util.ArrayList;

2)type:
    在程序代码中打出全名,无论哪里,只要用就打出全名;(除非是来自java.lang这个包中的类)
    如用作方法返回类型声明:public java.util.ArrayList<Dog> foo(){}
    

包之所以重要的原因

1)包可以帮助组织项目或函数库,相对于一大堆零散的类,以功能来组织会更好;
2)包可以制造名称空间,以便错开相同名称的类;
3)包可以限制 同一包之间的类才能相互存取,以维护安全性(访问控制权限);

Java的命名传统能够防止发生包的名称冲突;

javax开头的包代表什么?(javas.swing)

    包含在标准函数库中的包,都放在以java开头的包中;
    后来出现了一些没有包含在标准函数库中的包,被称为扩展的类;
    扩展的类有两种类型:即官方认可的标准扩展,其余beta版就是非标准的;
    标准版的扩展都是以javax作为包名称的开头,如Swing函数库,就是以javax.swing开头的;

要点

    ArrayList是个Java API的类;
    使用add()来新增ArrayList的元素;
    使用remove()来删除ArrayList中的元素;
    要寻找某项元素的位置,使用indexOf();
    使用isEmpty()来判别ArrayList是否为空;
    获取ArrayList大小,使用size()方法;
    传统数组可以用length这个变量获取大小;
    ArrayList会自动地调整大小;
    可以使用参数类型来声明数组内容的类型;ArrayList<Button>;
    ArrayList只能携带对象而非primitive主数据类型,但编译器能够自动把primitive主数据类型包装成Object;
    类会用包来组织;
    类有完整的名:包名+类名;
    除java.lang之外,其他包的类都需要指定全名;也可以在源文件最开始import指令来说明所使用的包;

知识小问答
使用import会把程序变大吗?编译过程会把包或类包进去吗?
    这是C的思路,运用import知识帮助省下每个类前的包名称而已;程序不会因为用了import而变大或变慢;

为何不必import java.lang?
    java.lang是个预先被引用的包;因为它是经常用的基础包;
    java.lang.String和java.lang.System是独一无二的class,Java会知道要去哪里找;

如何查询API

    我们需要知道库中有哪些类,找到类之后,还需要知道他在做什么?
方式1:查阅参考书;
方式2:查阅HTML API文档

如下图:
    左上是包;
    左下是包中的类;
    右侧是类的详情;

API(应用程序编程接口)文档包含对应于导航栏中的项目的页面,如下所述。 概述 概述 页面是此 API 文档的首页,提供了所有软件包的列表及其摘要。此页面也可能包含这些软件包的总体描述。 软件包 每个软件包都有一个页面,其中包含它的类和接口的列表及其摘要。此页面可以包含四个类别: •接口(斜体) •类 •枚举 •异常 •错误 •注释类型 类/接口 每个类、接口、嵌套类和嵌套接口都有各自的页面。其中每个页面都由三部分(类/接口描述、摘要表,以及详细的成员描述)组成: •类继承图 •直接子类 •所有已知子接口 •所有已知实现类 •类/接口声明 •类/接口描述 •嵌套类摘要 •字段摘要 •构造方法摘要 •方法摘要 •字段详细信息 •构造方法详细信息 •方法详细信息 每个摘要条目都包含该项目的详细描述的第一句。摘要条目按字母顺序排列,而详细描述则按其在源代码中出现的顺序排列。这样保持了程序员所建立的逻辑分组。 注释类型 每个注释类型都有各自的页面,其中包含以下部分: •注释类型声明 •注释类型描述 •必需元素摘要 •可选元素摘要 •元素详细信息 枚举 每个枚举都有各自的页面,其中包含以下部分: •枚举声明 •枚举描述 •枚举常量摘要 •枚举常量详细信息 使用 每个已文档化的软件包、类和接口都有各自的“使用”页面。此页面介绍了使用给定类或软件包的任何部分的软件包、类、方法、构造方法和字段。对于给定的类或接口 A,其“使用”页面包含 A 的子类、声明为 A 的字段、返回 A 的方法,以及带有类型为 A 的参数的方法和构造方法。访问此页面的方法是:首先转至软件包、类或接口,然后单击导航栏中的“使用”链接。 树(类分层结构) 对于所有软件包,有一个 类分层结构 页面,以及每个软件包的分层结构。每个分层结构页面都包含类的列表和接口的列表。从 java.lang.Object 开始,按继承结构对类进行排列。接口不从 java.lang.Object 继承。•查看“概述”页面时,单击“树”将显示所有软件包的分层结构。 •查看特定软件包、类或接口页面时,单击“树”将仅显示该软件包的分层结构。 已过时的 API 已过时的 API 页面列出了所有已过时的 API。一般由于进行了改进并且通常提供了替代的 API,所以建议不要使用已过时的 API。在将来的实施过程中,可能会删除已过时的 API。 索引 索引 包含按字母顺序排列的所有类、接口、构造方法、方法和字段的列表。 上一个/下一个 这些链接使您可以转至下一个或上一个类、接口、软件包或相关页面。 框架/无框架 这些链接用于显示和隐藏 HTML 框架。所有页面均具有有框架和无框架两种显示方式。 序列化表格 每个可序列化或可外部化的类都有其序列化字段和方法的描述。此信息对重新实现者有用,而对使用 API 的开发者则没有什么用处。尽管导航栏中没有链接,但您可以通过下列方式获取此信息:转至任何序列化类,然后单击类描述的“另请参见”部分中的“序列化表格”。 常量字段值 常量字段值页面列出了静态最终字段及其值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值