Jar包
jar包的制作以及使用
- 什么是Jar包:
(1)用来存放编译好的字节码文件的压缩包
(2)是Java语言专用的压缩包 - 为什么定义Jar包:
(1)Java源代码在编译之后,会生成对应的.class文件,.class文件中包含了该类定义的各种属性和方法,所以可以脱离源代码使用
(2)脱离源代码使用需要一定条件:
需要将.Class文件打成jar包
(3)如何生成jar包:
①选中需要导出的文件,export -> java -> jar file->选择导出的位置,起一个名字即可
②生成的jar包是一个压缩包,里面就有选择导出的字节码文件
(4)如何使用jar包:
①在当前工程下,创建一个文件夹 lib
②将需要导入的jar包,直接复制到lib文件夹中
③选中导入的jar包,右键->build path->add to build path
当工程中,出现一个对应名称的奶油瓶,表示加载成功 - 类库:
类库就是存放jar包的文件夹
(1)如何导入类库:
选中工程->build path->configure build path ->libraries->add libraries->选择需要导入的类库-> apply
(2)删除类库:
选中工程->build path->configure build path ->libraries->选择需要移除的类库->remove-> apply
API
API的概述
- API: Application Programming Interface 应用程序编程接口
- 接口:用来定义方法规则就是接口
- 应用程序编程接口:Java官方定义了很多编译好的类型,要想使用这些类型,就需要借助帮助文档来学习类型的描述,所以说这个帮助文档就可以理解为是一个规范一个规则。
工具类
- 概述:在一个类中,没有任何数据的维护,没有定义任何成员变量,类中定义的全都是一些静态方法。
- 作用:可以快速、方便的的对数据做一些处理和操作,方便程序的调用和执行。
- 创建工具类:
(1)指定工具类的名称:ArrayTool
(2)功能:
数组的遍历
获取数组的最大值
获取数组的最小值
数组元素的交换
数组元素反转 - 工具类优化:
(1)方法都是静态的,不需要创建对象;
(2)创建对象会浪费系统资源,控制外界不能随意的创建对象。
方式:使用构造方法私有化
API的制作
- 制作API原因:
工具类准备好之后,后续只需要使用编译好.class的字节码文件即可,但是编译好的字节码文件开发者并不能看懂,所以需要进行对应帮助文档的制作。 - 文档注释:用于给代码生成帮助文档的注释
格式:
/**
文档注释
*/
特点:
不能嵌套 - 帮助文档注解:将来可以被文档生成工具解析出来的格式,可以解析出来其中的数据
作者:@author 名称
当前版本:@version v1.0
上一个版本:@since
参数:@param
返回值:@return - 生成帮助文档:
使用jdk中的bin目录中的javadoc这个工具,就可以生成帮助文档
Javadoc -d ArrayToolDoc -author -version 源代码文件
一些类型
Arrays工具类
- 概述:操作数据中数据的工具类
- 特点:
(1)提供了操作数组的各种静态方法,直接通过类名调用。
(2)工具类不能通过构造创建对象,因为构造方法私有化
(3)当前工具类在 java.util,使用时需要导包 - 方法介绍:
binarySearch(byte[] a, byte key)
查找某个元素在数组中的索引,按照二分查找法查找,数组需要升序排列
equals(char[] a, char[] a2)
比较两个数组是否一样(比较两个数组中的元素是否一样,顺序也需要相同)
sort(byte[] a)
将数组进行升序排列
toString(int[] a)
遍历参数数组,通过字符串方式进行遍历,返回值是一个字符串
fill(int[] a, int val)
将val参数填充到数组a中,原数组中的内容都被参数val替换
Object类型
- 概念:Object是类层次结构的根类.每个类都使用Object作为超类.所有对象(包括数组)都实现 这个类的方法.随意定义一个类型,不手动显式定义其父类,那么这个类的父类就是Object 类。
- 特点:这个类型在java.lang包中定义的
- 构造方法作用:
(1)本类可以创建对象
(2)需要让子类访问父类的构造 - 格式:
Object()
toString方法
- 方法概述:
(1) 返回当前对象的字符串表示,返回的当前对象的地址。
(2)默认Object类的toString方法,由getClass().getName()+@Integer.toHexString(hashCode()) 这几部分组成
1) getClass().getName() 表示类的完全限定名.
2) hashCode() 表示根据内存地址通过哈希算法生成的哈希码值.
3) Integer.toHexString() 表示无符号十六进制的字符串表示形式. - 对象返回这样一个地址值的字符串,没有什么意义,因此对于子类而言,需要重写父类的 这个方法.
- 重写的原则:返回该对象中的所有成员变量的值(对象的属性)
- 快捷键生成:alt + shift + s s->或者 点击 toString方法
- 如果需要使用该方法,只需要使用该对象名称即可,因为默认调用
equals方法
- 概述:public boolean equals(Object obj) 指示其他某个对象是否与此对象"相等".
- 对于任何非空引用值x和y,当且仅当x和y引用同一个对象时,此方法才返回true(x == y 具有值true).也就是在Object类型中,比较的是两个引用是否指向了同一个对象.如果 是,才返回true.相当于是在比较两个对象的地址值是否相同.
- 实际生活中,比较两个对象的内存地址,没有什么意义.因此在自定义的子类中,都要重写这个方法.
4、重写原则:一般比较两个对象中的所有属性,是否全部相同.
5.快捷键生成:alt +shift + s h 或者 点 击 equals() and hashCode()方法.
Scanner类型
- 概述:一个简单的文本扫描器,可以使用正则表达式解析原始类型和字符串。
- 构造方法:
Scanner(File f):扫描指定文件
Scanner(String path):扫描指定的路径
Scanner(InputStream is):扫描指定的输入流 - Scanner类型常用的功能
(1)录入基本数据类型:
nextByte():获取一个byte数据
nextShort():获取一个short数据
nextInt()
nextLong()
nextFloat()
nextDouble()
nextBoolean()
注意事项:以上方法,既可以以换行当做结束的标志,也可以以空格当做一次结束的标记
(2)录入字符串类型:
next():可以录入下一个完整的标记,返回一个字符串。通过空格来分隔各个标记。
nextLine():可以录入下一个完整的标记,返回一个字符串。通过换行符来分隔各个标记。
注意事项:
使用以空格作为结束的方法之后,不能继续使用以换行作为结束的方法
否则以换行结束的方法,会被默认跳过
解决方案:
(1)可以多书写一个nextLine
(2)新建一个Scanner对象,来使用nextLine
String类型
String类型
- 概述:
(1)用来描述字符串的类型。
(2)引用数据类型。
(3)在java.lang包定义不需要导包。 - 特点:
(1)String类型所表示的每个字符串都可以理解为时它的一个对象
(2)如果String类型直接接收一个字符串常量,那么这个字符串常量在常量池中定义, 引用中存储的时常量池中字符串的地址值而不是数据本身。
(3)如果String类型通过new关键字创建,那么会在堆内存中创建一个对象,当前地址指向堆内存中的对象,[对象中 会维护一个字符数组。]
(4)字符串本身并不能被修改,String类型是一个不可变的字符序列。
①如果使用=一个常量,常量本身不能被修改
②如果使用new关键字创建了一个字符串对象,当前对象中会维护一个字符数组,来存储当前字符串,这个维护的字符数组,是private修饰,没有提供公共的改值方法,所以只能赋值和访问,不能修改
(5)字符串在内存中的表示方式:
String类构造方法
- String() 空参构造
- String(byte[] bytes) :将一个字节数组转成一个字符串,解码
- String(byte[] bytes, int offset, int length) :将字节数组的一部分转成字符串
- String(char[] value) :将一个字符数组转成一个字符串
- String(char[] value, int offset, int count) :将字符数组的一部分转成字符串
- String(String original) :将字符串存储到字符数组中
String类的判断功能
- contains(CharSequence s) :判断是否包含参数
- endsWith(String suffix) :判断调用者字符串是否以参数字符串结尾
- startsWith(String prefix) :判断调用者字符串是否以参数字符串开头
- equals(Object anObject) :判断两个字符串是否一样
- equalsIgnoreCase(String anotherString) :忽略大小写判断两个字符串是否一样
- isEmpty() :判断调用者是否为空
String类的获取功能
- charAt(int index) 获取index索引对应的字符
- concat(String str) :拼接字符串
- indexOf(int ch) :获取ch字符在字符串中的索引
- indexOf(int ch, int fromIndex) :从制定位置找ch字符出现的索引
- indexOf(String str) :找str字符串在调用者中出现的索引
- indexOf(String str, int fromIndex) :从制定位置寻找str出现的索引
- lastIndexof():从后往前找制定元素出现的索引
- length() :返回字符串的长度
- substring(int beginIndex) :从参数索引开始往后截取字符串,形成一个新串
- substring(int beginIndex, int endIndex) :截取字符串一部分,形成一个新串包含头部索引,不包含尾部索引
String类的转换功能
- getBytes() :将字符串转成字节数组
- toCharArray() :将字符串转为字符数组
- toLowerCase() :将字符串转为全小写形式
- toUpperCase() :将字符串转成全大写形式
- valueOf(参数) :将基本类型数据的参数或者引用类型转为字符串类型,当前方法是一个静态方法,可以通过类名直接调用。
- trim() :去掉前后两边的空格
- replace(char oldChar, char newChar) :将old元素改为new元素