第六章:认识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文档

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

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 使用iText打印PDF文件可以通过以下步骤实现: 1. 导入iText 首先,需要将iText添加到Java项目中。可以在Maven中添加以下依赖项: ``` <dependency> <groupId>com.itextpdf</groupId> <artifactId>itextpdf</artifactId> <version>5.5.13</version> </dependency> ``` 或者可以从iText的官方网站下载并手动添加到项目中。 2. 创建PDF文档 使用iText创建PDF文档。这可以通过以下代码实现: ``` Document document = new Document(); PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream("sample.pdf")); document.open(); document.add(new Paragraph("Hello World!")); document.close(); writer.close(); ``` 这段代码创建一个包含“Hello World!”文本的PDF文档。 3. 打印PDF文件 使用Java的PrintService类来获取系统中的打印机,并使用PdfReader类读取创建的PDF文档。以下代码演示了如何实现: ``` PrintService[] printers = PrintServiceLookup.lookupPrintServices(null, null); PdfReader reader = new PdfReader("sample.pdf"); PrintService printer = printers[0]; // 选择系统中的第一个打印机 DocPrintJob job = printer.createPrintJob(); PdfPrint pdfPrint = new PdfPrint(reader, job); pdfPrint.print(); ``` 这段代码选择系统中的第一个打印机,并使用PdfPrint类来打印PDF文档。注意,在运行此代码之前,确保有打印机可用。 以上是使用iText在Java中调用打印机打印PDF文件的基本步骤。您可以根据自己的需求对其进行修改和调整。 ### 回答2: 使用iText调用打印机打印PDF,可以通过以下步骤实现: 1. 首先,确保已经正确安装和配置了iText,并将其添加到Java项目中的类路径中。 2. 创建一个空白的PDF文档对象,可以使用`PdfWriter`类来实现,通过指定输出流将其与文件关联起来。 3. 使用iText的API来添加文本、图片、表格等内容到PDF文档中。这些内容可以使用`com.itextpdf.text`包中的相应类来创建和设置。 4. 在将PDF文档打印之前,需要首先将其导出为临时文件。可以使用`java.io.File`类来生成一个带有唯一名称的临时文件,并将PDF内容写入该文件。 5. 调用系统的打印机服务,使用Java的`java.awt.Desktop.print(File file)`方法,将PDF文件发送给打印机进行打印。 下面是一个示例代码,演示了如何使用iText将PDF文档打印到打印机: ```java import com.itextpdf.text.Document; import com.itextpdf.text.Paragraph; import com.itextpdf.text.pdf.PdfWriter; import java.awt.*; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; public class PrintPdfWithIText { public static void main(String[] args) { // 创建PDF文档 Document document = new Document(); try { // 绑定到一个临时PDF文件 File outputFile = File.createTempFile("temp", ".pdf"); PdfWriter.getInstance(document, new FileOutputStream(outputFile)); // 打开文档 document.open(); // 添加内容 document.add(new Paragraph("Hello, World!")); // 关闭文档 document.close(); // 打印PDF文件 if (Desktop.isDesktopSupported()) { Desktop.getDesktop().print(outputFile); } } catch (IOException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } } } ``` 这是一个简单的示例代码,演示了使用iText创建一个包含"Hello, World!"文本的PDF文档,并将其打印到默认打印机。可以根据具体需求修改和扩展代码。 ### 回答3: Java可以使用iText来调用打印机打印PDF文件。iText是一个功能强大的Java,可以用于创建、操纵和处理PDF文档。 使用iText调用打印机打印PDF文件的步骤如下: 1. 首先,需要通过下载iText的jar文件并将其导入到Java项目中。 2. 创建一个打印任务,并指定要打印的PDF文件的路径。可以使用FileInputStream类来读取PDF文件。 3. 创建一个打印机的选择对话框,以显示可用的打印机列表供用户选择。可以使用javax.print包中的类来实现该功能。 4. 获取用户选择的打印机,并将其作为参数传递给PrintServiceLookup类的lookupDefaultPrintService方法。 5. 创建一个DocFlavor对象,指定打印的文档类型为PDF。可以使用javax.print包中的DocFlavor类来实现。 6. 创建一个Doc对象,将读取的PDF文件和DocFlavor对象作为参数传递给Doc类的构造函数。 7. 创建一个PrintJob对象,并将打印机和Doc对象作为参数传递给PrintService类的createPrintJob方法。 8. 调用PrintJob对象的print方法,开始进行打印操作。 9. 最后,关闭文件输入流和打印作业。 使用iText调用打印机打印PDF文件可以实现灵活的打印功能,可以选择不同的打印机和页面设置,同时也能够处理PDF文档的内容和样式。通过iText,Java可以轻松地实现PDF文件的打印操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值