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

2023-10-27

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

第六章:认识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文档
如下图:
    左上是包;
    左下是包中的类;
    右侧是类的详情;

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

  • 如何在测试套件中定义 JUnit 方法规则?

    我有一个类 它是 JUnit 测试类的 JUnit 套件 我想定义一个规则on the suite 这是可以做到的 但需要做一些工作 您还需要定义自己的 Suite 运行程序和测试运行程序 然后在测试运行程序中重写 runChild 使用以
  • 如何查看Pocketsphinx词典中是否存在该单词?

    我只是想看看字典文件中是否存在字符串 字典文件位于问题底部 我想检查语音识别器是否可以识别单词 例如 识别器将无法识别字符串ahdfojakdlfafiop 因为字典中没有定义 所以 我可以检查某个单词是否在 pocktsphinx 词典中
  • Java 创建浮雕(红/蓝图像)

    我正在编写一个 Java 游戏引擎 http victoryengine org http victoryengine org 并且我一直在尝试生成具有深度的 3D 图像 您可以使用那些红色 蓝色眼镜看到 我正在使用 Java2D 进行图形
  • 使用 Checkstyle Plugin 时从插件调用代码时出现问题:“org.eclipse.jface”

    我正在尝试在 Rational Software Architect 7 0 0 4 上使用 eclipse cs 插件 我最近卸载了旧的 beta2 版本并安装了 beta3 插件本身按照之前的配置工作 但是每当我尝试通过 Windows
  • Google Inbox 类似 RecyclerView 项目打开动画

    目前 我正在尝试实现 Google Inbox 例如RecyclerView行为 我对电子邮件打开动画很好奇 我的问题是 该怎么做 我的意思是 他们使用了哪种方法 他们用过吗ItemAnimator dispatchChangeStarti
  • 如何将 Spotlight for Help 插入本地化的 macOS 应用程序?

    我正在 macOS 上使用 Swing GUI 框架实现 Java 应用程序 当使用system外观和感觉以及screen菜单栏 Swing 自动插入一个搜索栏 called 聚光灯寻求帮助 https developer apple co
  • Java 变量的作用域

    我不明白为什么这段代码的输出是10 package uno public class A int x 10 A int x 12 new B public static void main String args int x 11 new
  • 使用 Java 在浏览器中下载 CSV 文件

    我正在尝试在 Web 应用程序上添加一个按钮 单击该按钮会下载一个 CSV 文件 该文件很小 大小仅约 4KB 我已经制作了按钮并附加了一个侦听器 文件也准备好了 我现在唯一需要做的就是创建单击按钮时下载 csv 文件的实际事件 假设 fi
  • 所有junit测试后的清理

    在我的项目中 我必须在所有测试之前进行一些存储库设置 这是使用一些棘手的静态规则来完成的 然而 在所有测试之后我不知道如何进行清理 我不想保留一些神奇的静态数字来引用所有测试方法的数量 我应该一直维护它 最受赞赏的方法是添加一些侦听器 该侦
  • 为什么我在 Mac 上看到“java.lang.reflect.InaccessibleObjectException: Unable to make private java.nio.DirectByteBuffer(long,int)accessibl

    我已经在工作中愉快地构建代码好几天了 但突然我的一个项目 不是全部 失败并出现此错误消息 看看下面的答案吧 我是如何修复它的 起初我用谷歌搜索 看到很多有这个问题的人正在使用 Java 16 但我认为 错误 我正在使用 Java 11 因为
  • 尝试在没有 GatewayIntent 的情况下访问消息内容

    我希望每当我写一条打招呼的消息时 机器人都会在控制台中响应一条消息 但它只是给我一个错误 JDA MainWS ReadThread WARN JDA Attempting to access message content without
  • 参数动态时如何构建 JPQL 查询?

    我想知道是否有一个好的解决方案来构建基于过滤器的 JPQL 查询 我的查询太 富有表现力 我无法使用 Criteria 就像是 query Select from Ent if parameter null query WHERE fiel
  • 覆盖 MATLAB 默认静态 javaclasspath 的最佳方法

    MATLAB 配置为在搜索用户可修改的动态路径之前搜索其静态 java 类路径 不幸的是 静态路径包含相当多非常旧的公共库 因此如果您尝试使用新版本 您可能最终会加载错误的实现并出现错误 例如 静态路径包含 google collectio
  • tomcat 过滤所有 web 应用程序

    问题 我想对所有网络应用程序进行过滤 我创建了一个过滤器来监视对 apache tomcat 服务器的请求 举例来说 它称为 MyFilter 我在 netbeans 中创建了它 它创建了 2 个独立的目录 webpages contain
  • 从 Java 日历迁移到 Joda 日期时间

    以前 当我第一次设计股票应用相关软件时 我决定使用java util Date表示股票的日期 时间信息 后来我体会到了大部分方法java util Date已弃用 因此 很快 我重构了所有代码以利用java util Calendar 然而
  • 让JScrollPane控制多个组件

    对于我的应用程序 我正在设计一个脚本编辑器 目前我有一个JPanel其中包含另一个JPanel保存行号 位于左侧 以及JTextArea用于允许用户输入代码 位于右侧 目前 我已经实施了JScrollPane on the JTextAre
  • OpenJDK 版本控制

    上下文 我想确保我们系统上安装的 Java 不受 CVE 2022 21449 的影响 java version 给出 openjdk version 11 0 7 2020 04 14 LTS OpenJDK Runtime Enviro
  • 从java中的字符串数组中删除空值

    java中如何从字符串数组中删除空值 String firstArray test1 test2 test4 我需要像这样没有 null 空 值的 firstArray String firstArray test1 test2 test4
  • Spock模拟inputStream导致无限循环

    我有一个代码 gridFSFile inputStream bytes 当我尝试这样测试时 given def inputStream Mock InputStream def gridFSDBFile Mock GridFSDBFile
  • 从一个文本文件中获取数据并将其移动到新的文本文件

    我有一个文件 里面有数据 在我的主要方法中 我读入文件并关闭文件 我调用另一种方法 在原始文件的同一文件夹内创建一个新文件 所以现在我有两个文件 原始文件和通过我调用的方法生成的文件 我需要另一种方法 从原始文件中获取数据并将其写入创建的新

随机推荐

  • 【数据库课程设计】企业库存管理系统

    作者 何翔 学院 计算机学院 学号 04191315 班级 软件1903 完整资料 https download csdn net download HXBest 72361220
  • 开发板连续显示图片

    本文分享自中移OneOS微信公众号 万耦中的二次元世界 作者 小M哥 BAD APPLE原本是东方游戏里的一首歌曲 后来被加了一个MAD 由于MAD非常惊艳华丽 使得BAD APPLE被大家喜爱 在程序员圈子里 有一个传言 有屏幕的地方 就
  • 性能测试怎么做?性能测试重点和各项性能测试流程(超级详细)

    前言 性能测试基础 1 性能测试一般分为 负载测试 压力测试 基准测试 稳定性测试 扩展性测试 2 常见的性能测试指标 响应时间 TPS QPS 并发用户 PV UV 点击率 吞吐量 资源开销 3 性能测试的场景 业务场景 系统的业务处理流
  • windows添加开机启动项

    我们时常会需要开机就启动一些软件 例如飞鸽 微信等等 windows添加开机启动项有很多种 例如 添加到 启动 文件夹 添加到注册表 使用任务计划程序 以下只列举第一种 添加到启动文件夹 测试环境为Win 10 解决方案 1 按下 Win
  • python中判断类型函数isinstance()

    函数isinstance 可以判断一个变量的类型 既可以用在Python内置的数据类型如str list dict 也可以用在我们自定义的类 它们本质上都是数据类型 假设有如下的 Person Man和 Woman的定义及继承关系如下 cl
  • gradle 任务依赖实现复制任务。

    近期遇到一个需求 由于很少研究gradle相关 所以在实现上卡了一阵子 现已基本实现需求 回过头来记录一下 需求 项目中接入腾讯bugly 使用其热更新功能 由于热更新目前不支持自定义补丁包的生成路径 因此会产生一个问题就是 补丁包生成后位
  • HarmonyOS开发:走进静态共享包的依赖与使用

    前言 在上一篇 我们进行了动态共享包的开发和使用 由于动态共享包有一定的局限性 比如 调用共享包资源还得要通过工具类进行调用 再比如仅用于应用内部代码 资源的共享 如果我想要开源 以远程依赖的方式给任何一个想要用的人进行使用 动态共享包就无
  • 阿里开源的缓存框架JetCache

    之前一直在用Spring Cache进行接口数据的缓存 主要是Spring Cache在对具体key缓存失效时间的设置不是很方法 还要自己去扩展 无意中发现了阿里的JetCache 大部分的需求都能满足 并且有一些很实用的功能 今天给大家介
  • activate : 无法将“activate”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次。 所在位置 行:1 字符: 1

    在pycharm里面错误展示 无法激活虚拟环境 解决方法 以管理员身份运行 PowerShell 并输入 set executionpolicy remotesigned 再输入 y 如图 输入完后重新打开pycharm 再次输入 acti
  • SpringBoot项目整合Mybatis时Mapper.xml文件的存放位置

    目录 方式一 放在与Mapper接口同级目录 方式二 在resources创建Mapper接口同名文件夹用来存放Mapper xml文件 方式三 在resources目录下创建mapper文件夹存放mapper xml 推荐 方式一 放在与
  • git 签出(恢复)指定文件

    在项目开发中 偶尔会因为误删文件或其他原因需要从git仓库中恢复某些文件 此篇文章将介绍如何通过git从历史提交记录 分支记录恢复指定文件 1 git checkout 说明 使用git checkout除了可以切换分支外 还可以签出指定文
  • Elasticsearch Java High Level REST Client(Exists API)

    Exists API 如果文档存在 则existsAPI返回true 否则返回false Exists请求 它就像Get API一样使用GetRequest 支持所有可选参数 由于exists 只返回true或false 我们建议关闭获取
  • 目标检测之Yolov3与Anchor-Free

    原文 目标检测之RCNN Yolo SSD RetinaNet与Anchor Free dagongji10的博客 CSDN博客 2 2 Yolo v3 2018 Yolo v3 论文比 Yolo v2 还要随意 具体优化内容主要有 bbo
  • 用python绘制曼彻斯特编码等八种常见数据编码方式的波形图

    用python绘制八种数据编码方式的波形图 2020春季北京航空航天大学计算机学院物联网引论课程作业 介绍八种常见数据编码方式并实践画出波形图 本文使用了python中的二维图像模块matplotlib 博主在信号与通信原理方面功底不深 如
  • deepin的踩坑问题与解决方案,以及使用分享(持续更新)

    笔者目前的电脑环境是Redmibook 14 AMD的锐龙版 R5 3700U 只有集成显卡 不同换环境下问题原因不一定相同 如驱动等兼容性问题 可以借鉴解决思路 但更多问题还是具有共性 Q1 u盘安装的时候 卡在蓝色背景图 无安装程序启动
  • e3 服务器虚拟机,e3 虚拟机

    e3 虚拟机 内容精选 换一换 Hypervisor能实现同一物理机上不同虚拟机之间的资源隔离 避免虚拟机之间的数据窃取或恶意攻击 保证虚拟机的资源使用不受周边虚拟机的影响 用户使用虚拟机时 仅能访问属于自己的虚拟机的资源 如硬件 软件和数
  • 【Ethernet】以太网卡LAN8720A分析和使用

    文章目录 1 LAN8720A简介 2 PHYAD 0 PHY地址配置 3 MODE 2 0 Mode配置 4 nINTSEL nINT REFCLKO配置 5 REGOFF 配置内部 1 2V电压源 6 SMI MDC MDIO 总线接口
  • android studio jdk se 8,java - Is JDK 1.8 fully supported by Android Studio? - Stack Overflow

    Actually you get all sorts of crazy Gradle errors when trying to build Android Studio projects with Java 8 like 2016 04
  • C++避坑——most vexing parse问题

    1 坑 的问题是什么 先看一段代码 class Functor public void operator std cout lt lt 我是线程的初始函数 lt lt std endl int main std thread t Funct
  • 第六章:认识Java的API-使用Java函数库

    该系列文章系个人读书笔记及总结性内容 任何组织和个人不得转载进行商业活动 第六章 认识Java的API 使用Java函数库 Java内置有数百个类 如果你知道如何从统称Java API的Java的函数库中查找所需功能 那就不用再造轮子了 核