Java基础——jar包、API和一些类型

Jar包

jar包的制作以及使用
  1. 什么是Jar包:
    (1)用来存放编译好的字节码文件的压缩包
    (2)是Java语言专用的压缩包
  2. 为什么定义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
    当工程中,出现一个对应名称的奶油瓶,表示加载成功
  3. 类库:
    类库就是存放jar包的文件夹
    (1)如何导入类库:
    选中工程->build path->configure build path ->libraries->add libraries->选择需要导入的类库-> apply
    (2)删除类库:
    选中工程->build path->configure build path ->libraries->选择需要移除的类库->remove-> apply

API

API的概述
  1. API: Application Programming Interface 应用程序编程接口
  2. 接口:用来定义方法规则就是接口
  3. 应用程序编程接口:Java官方定义了很多编译好的类型,要想使用这些类型,就需要借助帮助文档来学习类型的描述,所以说这个帮助文档就可以理解为是一个规范一个规则。
工具类
  1. 概述:在一个类中,没有任何数据的维护,没有定义任何成员变量,类中定义的全都是一些静态方法。
  2. 作用:可以快速、方便的的对数据做一些处理和操作,方便程序的调用和执行。
  3. 创建工具类:
    (1)指定工具类的名称:ArrayTool
    (2)功能:
    数组的遍历
    获取数组的最大值
    获取数组的最小值
    数组元素的交换
    数组元素反转
  4. 工具类优化:
    (1)方法都是静态的,不需要创建对象;
    (2)创建对象会浪费系统资源,控制外界不能随意的创建对象。
    方式:使用构造方法私有化
API的制作
  1. 制作API原因:
    工具类准备好之后,后续只需要使用编译好.class的字节码文件即可,但是编译好的字节码文件开发者并不能看懂,所以需要进行对应帮助文档的制作。
  2. 文档注释:用于给代码生成帮助文档的注释
    格式:
    /**
    文档注释
    */
    特点:
    不能嵌套
  3. 帮助文档注解:将来可以被文档生成工具解析出来的格式,可以解析出来其中的数据
    作者:@author 名称
    当前版本:@version v1.0
    上一个版本:@since
    参数:@param
    返回值:@return
  4. 生成帮助文档:
    使用jdk中的bin目录中的javadoc这个工具,就可以生成帮助文档
    Javadoc -d ArrayToolDoc -author -version 源代码文件

一些类型

Arrays工具类
  1. 概述:操作数据中数据的工具类
  2. 特点:
    (1)提供了操作数组的各种静态方法,直接通过类名调用。
    (2)工具类不能通过构造创建对象,因为构造方法私有化
    (3)当前工具类在 java.util,使用时需要导包
  3. 方法介绍:
    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类型
  1. 概念:Object是类层次结构的根类.每个类都使用Object作为超类.所有对象(包括数组)都实现 这个类的方法.随意定义一个类型,不手动显式定义其父类,那么这个类的父类就是Object 类。
  2. 特点:这个类型在java.lang包中定义的
  3. 构造方法作用:
    (1)本类可以创建对象
    (2)需要让子类访问父类的构造
  4. 格式:
    Object()
toString方法
  1. 方法概述:
    (1) 返回当前对象的字符串表示,返回的当前对象的地址。
    (2)默认Object类的toString方法,由getClass().getName()+@Integer.toHexString(hashCode()) 这几部分组成
    1) getClass().getName() 表示类的完全限定名.
    2) hashCode() 表示根据内存地址通过哈希算法生成的哈希码值.
    3) Integer.toHexString() 表示无符号十六进制的字符串表示形式.
  2. 对象返回这样一个地址值的字符串,没有什么意义,因此对于子类而言,需要重写父类的 这个方法.
  3. 重写的原则:返回该对象中的所有成员变量的值(对象的属性)
  4. 快捷键生成:alt + shift + s s->或者 点击 toString方法
  5. 如果需要使用该方法,只需要使用该对象名称即可,因为默认调用
equals方法
  1. 概述:public boolean equals(Object obj) 指示其他某个对象是否与此对象"相等".
  2. 对于任何非空引用值x和y,当且仅当x和y引用同一个对象时,此方法才返回true(x == y 具有值true).也就是在Object类型中,比较的是两个引用是否指向了同一个对象.如果 是,才返回true.相当于是在比较两个对象的地址值是否相同.
  3. 实际生活中,比较两个对象的内存地址,没有什么意义.因此在自定义的子类中,都要重写这个方法.
    4、重写原则:一般比较两个对象中的所有属性,是否全部相同.
    5.快捷键生成:alt +shift + s h 或者 点 击 equals() and hashCode()方法.
Scanner类型
  1. 概述:一个简单的文本扫描器,可以使用正则表达式解析原始类型和字符串。
  2. 构造方法:
    Scanner(File f):扫描指定文件
    Scanner(String path):扫描指定的路径
    Scanner(InputStream is):扫描指定的输入流
  3. Scanner类型常用的功能
    (1)录入基本数据类型:
    nextByte():获取一个byte数据
    nextShort():获取一个short数据
    nextInt()
    nextLong()
    nextFloat()
    nextDouble()
    nextBoolean()
    注意事项:以上方法,既可以以换行当做结束的标志,也可以以空格当做一次结束的标记
    (2)录入字符串类型:
    next():可以录入下一个完整的标记,返回一个字符串。通过空格来分隔各个标记。
    nextLine():可以录入下一个完整的标记,返回一个字符串。通过换行符来分隔各个标记。
    注意事项:
    使用以空格作为结束的方法之后,不能继续使用以换行作为结束的方法
    否则以换行结束的方法,会被默认跳过
    解决方案:
    (1)可以多书写一个nextLine
    (2)新建一个Scanner对象,来使用nextLine

String类型

String类型
  1. 概述:
    (1)用来描述字符串的类型。
    (2)引用数据类型。
    (3)在java.lang包定义不需要导包。
  2. 特点:
    (1)String类型所表示的每个字符串都可以理解为时它的一个对象
    (2)如果String类型直接接收一个字符串常量,那么这个字符串常量在常量池中定义, 引用中存储的时常量池中字符串的地址值而不是数据本身。
    (3)如果String类型通过new关键字创建,那么会在堆内存中创建一个对象,当前地址指向堆内存中的对象,[对象中 会维护一个字符数组。]
    (4)字符串本身并不能被修改,String类型是一个不可变的字符序列。
    ①如果使用=一个常量,常量本身不能被修改
    ②如果使用new关键字创建了一个字符串对象,当前对象中会维护一个字符数组,来存储当前字符串,这个维护的字符数组,是private修饰,没有提供公共的改值方法,所以只能赋值和访问,不能修改
    (5)字符串在内存中的表示方式:
String类构造方法
  1. String() 空参构造
  2. String(byte[] bytes) :将一个字节数组转成一个字符串,解码
  3. String(byte[] bytes, int offset, int length) :将字节数组的一部分转成字符串
  4. String(char[] value) :将一个字符数组转成一个字符串
  5. String(char[] value, int offset, int count) :将字符数组的一部分转成字符串
  6. String(String original) :将字符串存储到字符数组中
String类的判断功能
  1. contains(CharSequence s) :判断是否包含参数
  2. endsWith(String suffix) :判断调用者字符串是否以参数字符串结尾
  3. startsWith(String prefix) :判断调用者字符串是否以参数字符串开头
  4. equals(Object anObject) :判断两个字符串是否一样
  5. equalsIgnoreCase(String anotherString) :忽略大小写判断两个字符串是否一样
  6. isEmpty() :判断调用者是否为空
String类的获取功能
  1. charAt(int index) 获取index索引对应的字符
  2. concat(String str) :拼接字符串
  3. indexOf(int ch) :获取ch字符在字符串中的索引
  4. indexOf(int ch, int fromIndex) :从制定位置找ch字符出现的索引
  5. indexOf(String str) :找str字符串在调用者中出现的索引
  6. indexOf(String str, int fromIndex) :从制定位置寻找str出现的索引
  7. lastIndexof():从后往前找制定元素出现的索引
  8. length() :返回字符串的长度
  9. substring(int beginIndex) :从参数索引开始往后截取字符串,形成一个新串
  10. substring(int beginIndex, int endIndex) :截取字符串一部分,形成一个新串包含头部索引,不包含尾部索引
String类的转换功能
  1. getBytes() :将字符串转成字节数组
  2. toCharArray() :将字符串转为字符数组
  3. toLowerCase() :将字符串转为全小写形式
  4. toUpperCase() :将字符串转成全大写形式
  5. valueOf(参数) :将基本类型数据的参数或者引用类型转为字符串类型,当前方法是一个静态方法,可以通过类名直接调用。
  6. trim() :去掉前后两边的空格
  7. replace(char oldChar, char newChar) :将old元素改为new元素
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java编程可以利用`java.util.jar`下的`JarFile`和`JarEntry`类来实现jar的解和打。 1. 解jar文件: ```java import java.io.File; import java.io.FileOutputStream; import java.io.InputStream; import java.io.OutputStream; import java.util.Enumeration; import java.util.jar.JarEntry; import java.util.jar.JarFile; public class JarUnpacker { public static void unpack(String jarPath, String destPath) throws Exception { JarFile jarFile = new JarFile(jarPath); Enumeration<JarEntry> entries = jarFile.entries(); while (entries.hasMoreElements()) { JarEntry jarEntry = entries.nextElement(); String fileName = jarEntry.getName(); File destFile = new File(destPath + File.separator + fileName); if (jarEntry.isDirectory()) { destFile.mkdirs(); } else { InputStream in = jarFile.getInputStream(jarEntry); OutputStream out = new FileOutputStream(destFile); byte[] buffer = new byte[1024]; int len; while ((len = in.read(buffer)) > 0) { out.write(buffer, 0, len); } in.close(); out.close(); } } jarFile.close(); } } ``` 以上代码会将`jarPath`指定的jar文件解压到`destPath`指定的目录中。 2. 打jar文件: ```java import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.util.jar.JarEntry; import java.util.jar.JarOutputStream; public class JarPacker { public static void pack(String sourcePath, String jarPath) throws Exception { JarOutputStream jarOut = new JarOutputStream(new FileOutputStream(jarPath)); File sourceFile = new File(sourcePath); if (sourceFile.isDirectory()) { packDir(sourceFile, "", jarOut); } else { packFile(sourceFile, "", jarOut); } jarOut.close(); } private static void packDir(File dir, String parentPath, JarOutputStream jarOut) throws IOException { String dirPath = parentPath + dir.getName() + "/"; JarEntry jarEntry = new JarEntry(dirPath); jarOut.putNextEntry(jarEntry); File[] files = dir.listFiles(); if (files != null) { for (File file : files) { if (file.isDirectory()) { packDir(file, dirPath, jarOut); } else { packFile(file, dirPath, jarOut); } } } } private static void packFile(File file, String parentPath, JarOutputStream jarOut) throws IOException { JarEntry jarEntry = new JarEntry(parentPath + file.getName()); jarOut.putNextEntry(jarEntry); byte[] buffer = new byte[1024]; int len; FileInputStream in = new FileInputStream(file); while ((len = in.read(buffer)) > 0) { jarOut.write(buffer, 0, len); } in.close(); } } ``` 以上代码会将`sourcePath`指定的文件或目录打成`jarPath`指定的jar文件。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值