day11
一、API
-
IDEA导出jar包
-
File->Project Structure 快捷键:ctrl + alt + shift + s -
选择 Artifacts -> JAR -> From modules … -
弹出如下消息框 -
点击上图ok后,回到如下图所示界面 -
点击ok后, -
点击ArrayUtils.jar下的Build -
显示下图,表示已经导出完毕. -
这种导出方法,导出的是该项目中的所有.class文件 -
如果需要导出单个.class文件作为jar包,按下图所示 -
IDEA制作API 1.常见API注解:
作者:@author lc
版本:@version v1.0
从哪个版本该是:@since
参数:@param 参数名称 参数名称的解释
返回值:@return 返回内容的解释
2、需要书写在文档注释中
点击Tools菜单,选择Generate JavaDoc… 设置扫描生成API的范围,api的存放路径,以及设置编码,如下图所示: ? 生成样式如下,index.html就是API的首页. ?
二、Object类【所有类的超类】
构造方法:
Object() :创建一个对象
成员方法:
toString():
不重写:返回该对象的全限定类名+地址。
重写:返回该对象的属性值
equals():
不重写:比较两个对象的地址值【两个引用是否指向了同一个对象】
重写:比较两个对象的属性值
== 和 equals的区别【面试题6】
1、本质不一样:
== :是一个运算符
equals:是一个方法
2、使用方式不一样
== :直接使用
equals:必须得类对象调用
3、比较方式不一样:
== :可以比较任意数据类型数据的大小的
基本数据类型数据:比较的就是数据值大小关系
引用数据类型对象:比较的对象的地址值大小关系
equals:只能比较对象数据
类重写方法:比较的就是类对象的属性值得大小是否同时相同
类没有重写方法:;比较的就是类对象的地址值是否相等
三、String类
概念:
1、String是字符串的表示形式【String是一个描述字符串事物的类】
`2、所有的字符串常量都是String的对象`
`3、所有的字符串常量不存在堆空间,存在于字符串常量池【静态区】`
特点:
1、字符串一旦创建长度和内容不可变
2、String类中的方法只要返回值为String类型,都是额外创建新的String对象
常用构造方法:
方法 | 说明 |
---|
public String() | 创建一个空字符串 | public String(String original) | 创建参数字符串的一个副本(参数字符串是在常量池中,构造方法创建的字符串是在堆内存中) | public String(byte[] arr) | 使用平台的默认字符集,将一个字节数组转成一个字符串 1) 编码:编码是信息从一种形式或格式转换为另一种形式的过程.用预先规定的方法将文字、数字或其它对象编成数码,或将信息、数据转换成规定的电脉冲信号. 2) 解码:解码是一种用特定方法,把数码还原成它所代表的内容或将电脉冲信号、光信号、无线电波等转换成它所代表的信息、数据等的过程. 3) 常用编码表:ASCII、GBK、UTF-8
| public String(byte[] arr, int offset, int length) | 使用平台的默认字符集,将字节数组的一部分转成字符串 | public String(char[] arr) | 将字符数组转成字符串 | public String(char[] arr, int offset, int length) | 将字符数组的一部分转成字符串. |
常用方法:
方法 | 说明 |
---|
判断功能 : | | public boolean equals(Object anObject) | 判断对象和参数对象描述的字符串内容是否相同 | public boolean equalsIgnoreCase(String anotherString) | 忽略大小写,判断对象和参数对象描述的字符串内容是否相同 | public boolean contains(CharSequence s) | 判断对象是否包含了 s这个子串 | public boolean startsWith(String prefix) | 判断对象是否以 prefix 开头 | public boolean endsWith(String suffix) | 判断对象是否以suffix 结尾 | public boolean isEmpty() | 判断对象是否是空串 | 获取功能: | | public int length() | 获取字符串字符的个数 | public char charAt(int index) | 返回对象字符串中索引为index的字符.index范围在[0,length()-1] | public String substring(int beginIndex) | 获取一个字符串,内容是从当前字符串的 beginIndex 索引开始 | public String substring(int beginIndex,int endIndex) | 获取一个指定索引范围的子串 注意事项: 1.包含头不包含尾,返回的结果中,不包含 endIndex 索引指向的字符. 2.所有的方法都无法修改字符串对象本身,一般都是返回一个新的字符串对象
| public int indexOf(String str) | 返回的是 str 这个字符串在对象字符串中第一次出现的索引 | public int indexOf(String str,int fromIndex) | 从 fromIndex 索引开始寻找,找到 str 字符串在当前字符串中第一次出现的索引 (注意:无论从哪个位置开始找,所有字符的索引都不会变化) | public int lastIndexOf(String str,int fromIndex) | 从 fromIndex 索引开始寻找,找到 str 字符串在当前字符串中最后一次出现的索引 (注意:无论从哪个位置开始找,所有字符的索引都不会变化) | 转换功能: | | public byte[] getBytes() | 将当前字符串转成字节数组 | public char[] toCharArray() | 将当前的字符串转成字符数组 | public String toLowerCase() | 将当前的字符串,转成全小写形式 | public String toUpperCase(Locale locale) | 将当前的字符串,转成全大写形式 | public String concat(String str) | 将当前对象和参数 str 进行拼接,返回拼接后的长字符串 | public static String valueOf(Object obj) | 返回Object参数的字符串表示形式 | 其他功能: | | public String replace(CharSequence target,CharSequence replacement) | 将对象中包含的所有target替换成replacement | public String[] split(String regex) | 使用指定的字符串规则将对象字符串切割成多个子串 | public String trim() | 去掉字符串左右两边的空格,制表符 |
字符串对象:
字符串对象的获取有两种方式:
1、直接赋值字符串常量方式:得到的字符串对象就是字符串常量【在方法区的常量池中】
== 和 equals:比较的都是内容
2、构造方法创建:得到实例化的字符串对象【在堆内存开辟空间】
==:比较地址
equals:比较属性值【`String类已经重写toString方法`】
day12
一、StringBuilder
概念:
可变字符序列【字符串缓冲区】
作用:
对字符序列进行操作,减少内存的同时完成业务需求,提升代码运行效率
特点:
1、表示的字符序列内容可以变化的
2、功能都是对自己内容的操作
3、不会额外生成字符序列对象
构造方法:
方法 | 说明 |
---|
public StringBuilder() | 创建一个生成器,初始容量为 16 个字符 | public StringBuilder(int capacity) | 创建一个生成器,初始容量为 capacity 大小 | public StringBuilder(String str) | 创建一个生成器,初始值就是 str 这些字符,初始大小是 str+16 |
常用方法:
方法 | 说明 |
---|
public StringBuilder append(Object obj) | 可以将任意数据类型,转成字符,添加到生成器中 | public StringBuilder insert(int index,Object obj) | 可以将任意数据类型,添加到指定的位置 说明: (1)index 的范围是 0~ 当前缓冲区的大小; (2)插入数据之后,数据本身的索引就是参数中指定的 index | public StringBuilder deleteCharAt(int index) | 删除指定索引的字符 | public StringBuilder delete(int start,int end) | 删除指定范围的字符,被删除的部分包含头不包含尾 | public StringBuilder replace(int start,int end,String str) | 将字符串缓冲区中的从 start 开始到 end-1 这部分内容,替换成 str | public StringBuilder reverse() | 将原有字符序列进行反转 | public String toString() | 将StringBuilder对象转换成字符串 |
StringBuilder 和 StringBuffer的区别【面试题7】
1、出现的时期 不一样
StringBuffer:在jdk1.0
StringBuilder:在jdk1.5
2、多线程使用的安全性不同:
StringBuffer:线程安全
StringBuilder:线程不安全
3、执行效率不同
StringBuffer:执行效率低
StringBuilder:执行效率是高
二、包装类
三、Math类
-
常用方法
方法名 | 说明 |
---|
public static double abs(数字类型) | 返回该参数的绝对值 | public static double cbrt(double a) | 返回 a 的开立方根 | public static double sqrt(double a) | 返回 a 的正平方根 | public static double ceil(double a) | 返回 a的向上取整 | public static double floor(double a) | 返回 a的向下取整 | public static int max(int a,int b) | 返回 a、b 的较大值 | public static int min(int a,int b) | 返回 a、b 的较小值 | public static double pow(int a,int b) | 返回 a 的 b 次幂 | public static double random() | 返回值为double的正值,[0.0,1.0) | public static long round(double a) | 返回 a四舍五入的结果【只针对小数点第一位】 |
四、System类
-
常用属性:
属性名 | 说明 |
---|
public static final InputStream in | 标准输入流,默认关联到键盘上 | public static final PrintStream out | 标准输出流,默认关联到控制台上 | public static final PrintStream err | 标准错误输出流,默认关联到控制台上,用于打印错误信息 |
-
常用方法:
方法名 | 说明 |
---|
public static void exit(int status) | 退出JVM,零表示正常终止 | public static long currentTimeMillis() | 返回当前时间的毫秒值,表示的是从 1970 年1月1日0 时0 分0 秒开始到现在经历的毫秒值 | public static void gc() | 强制垃圾回收器回收内存中的垃圾 | public static void arraycopy(Object src,int srcPos,Object dest,int destPos,int length) | 快速数组复制 五个参数分别为: 源数组, 起始索引, 目的数组, 起始索引, 拷贝元素个数 |
day13
一、大数据类型
1、BigInteger类
-
常用构造:
方法名 | 说明 |
---|
public BigInteger(String val) | 将指定字符串转换成BigInteger对象 | public BigInteger(String val,int radix) | 根据指定的radix进制,将指定字符串转换成BigInteger对象 |
-
常用方法:
方法名 | 说明 |
---|
public BigInteger abs() | 返回BigInteger对象的绝对值 | public BigInteger negate() | 取该对象的反数 | public BigInteger add(BigInteger val) | 加法 | public BigInteger subtract(BigInteger val) | 减法 | public BigInteger multiply(BigInteger val) | 乘法 | public BigInteger divide(BigInteger val) | 除法 |
2、BigDecimal类
-
常用构造:
方法名 | 说明 |
---|
public BigDecimal(double val) | 将double类型的数据转换成BigDecimal对象 | public BigDecimal(String val) | 将String类型的数据转换成BigDecimal对象 |
-
常用方法:
方法名 | 说明 |
---|
public BigDecimal(double val) | 将double类型的数据转换成BigDecimal对象 | public BigDecimal(String val) | 将String类型的数据转换成BigDecimal对象 |
二、时间类
-
Date类
-
构造方法
方法名 | 说明 |
---|
public Date() | 分配 Date 对象并初始化此对象,以表示分配它的时间(精确到毫秒) | public Date( long date) | 分配 Date 对象并初始化此对象,以表示自从标准基准时间(称为"历元(epoch)",即 1970 年 1 月 1 日 00:00:00 GMT)以来的指定毫秒数 |
-
常用方法
方法名 | 说明 |
---|
public long getTime() | 返回自1970 年1月1日 00:00:00 GMT 以来此 Date 对象表示的毫秒数 | public void setTime(long time) | 设置此Date对象,以表示 1970 年1月1日 00:00:00 GMT 以后 time 毫秒的时间点 |
-
SimpleDateFormat类
-
构造方法
方法名 | 说明 |
---|
public SimpleDateFormat() | 用默认的模式和默认语言环境的日期格式创建对象 | public SimpleDateFormat(String pattern) | 用给定的模式和默认语言环境的日期格式创建对象 |
-
常用方法
方法名 | 说明 |
---|
public final String format(Date date) | 将一个 Date 格式化为日期/时间字符串 | public Date parse(String source) throws ParseException | 从给定字符串解析文本,以生成一个日期 |
注意事项: ? 使用SimpleDateFormat进行解析的时候必须做到日期字符串的格式和SimpleDateFormat对象内部的格式一模一样。 -
Calendar类
方法名 | 说明 |
---|
public static Calendar getInstance() | 使用默认时区和语言环境获得一个Calendar类对象 | public void set(int field,int value) | 将给定的日历字段设置为给定值 | public int get(int field) | 返回给定日历字段的值 | public abstract void add(int field,int amount) | 根据日历的规则,为给定的日历字段添加或减去指定的时间量 | public final Date getTime() | 返回一个表示此 Calendar 时间值(从历元至现在的毫秒偏移量)的 Date 对象 |
三、NumberFormat类
-
常用方法
方法名 | 说明 |
---|
public static final NumberFormat getInstance() | 返回当前默认语言环境的通用数值格式 | public static final NumberFormat getCurrencyInstance() | 返回当前默认语言环境的货币格式 | public static final NumberFormat getPercentInstance() | 返回当前默认语言环境的百分比格式 | public void setMaximumFractionDigits(int newValue) | 设置数的小数部分所允许的最大位数 | public void setMaximumIntegerDigits(int newValue) | 设置数的整数部分所允许的最大位数 | public final String format(double number) | 格式化 |
四、Arrays工具类
-
常用方法
方法名 | 说明 |
---|
public static int binarySearch(Object[] a,Object key). | 使用二分搜索法来搜索指定数组,以获得指定对象 | public static void sort(Object[] a) | 根据元素的自然顺序对指定对象数组按升序进行排序 | public static String toString(Object[] a) | 返回指定数组内容的字符串表示形式 |
day14
异常体系
一、异常的概述
? 异常体系:【语法错误不是异常】
类名 | 解释 |
---|
Throwable | 可抛出的,是异常体系的顶层父类,其他的异常或者错误都是Throwable的子类类型,只有Throwable的体系类型,才可以使用异常的处理机制。 | Error | 错误,是Throwable的子类,用于描述那些无法捕获和处理的错误情况,属于非常严重的错误。如:StackOverflowError | Exception | Throwable的子类,用于描述那些可以捕获和处理的例外情况,属于不太严重的错误。 | RuntimeException及其子类 | 运行时异常 ,是Exception的特殊的子类,在编译阶段不做检查、运行阶段才能发现的一类异常。如:ArrayIndexOutOfBoundsException | 除RuntimeException之外所有的异常类 | 编译时异常 ,是Exception的子类们,在编译阶段就会检查的一类异常。比如:ParseException |
二、异常的处理方式
分类:
声明异常:把异常抛给了其他使用者【使用`throws`关键字抛出异常】
捕获异常:捕获具体的异常对象
三、throw关键字
概述:
使用在方法的方法体中,抛出一个具体的异常对象
作用:
抛出具体的异常对象:
如果是运行异常对象 可处理可不处理
如果是编译异常对象 必须处理【声明 捕获】
throw 和 throws的区别【面试题8】
1、throws:
声明位置:方法名之后
public void test1() throws NullPointerException{}
作用:通知JVM当前方法在运行时,【有可能】抛出的异常
携带数据:throws后面携带【异常类型】,一个throws后面可以携带多个异常类型
调用:当一个方法被throws修饰时,调用方法时必须考虑异常捕捉问题
2、throw:
声明位置:方法执行体
public void test1(){
throw new RuntimeException();
}
作用:throw是一个命令,执行时抛出一个指定的异常对象
携带数据:throw后面携带【异常对象】,一个throw一次只能携带一个异常对象
调用:当一个方法内部存在throw命令,在调用时可以不考虑异常捕捉问题
四、JVM默认处理异常的方式
遇到异常没有使用任何的处理方式进行处理或者处理的方式处理不了,启动jvm的 异常处理机制:
默认把当前的异常一路的下一个调用者处声明【抛出】,一直到最后一个不能声明【抛出】的 调用者处进行捕获处理【捕获处理方案默认 :e.printStackTrace();】
如果最后的调用者是jvm:
捕获处理:
1、在异常发生处直接停止程序的运行
2、同时捕获异常对象进行e.printStackTrace()执行
五、Throwable类【异常体系的超类】
六、异常的注意事项
1、运行时异常可以不处理,也可以处理【实际开发一般不处理】
2、如果父类方法没有异常抛出,子类重写父类方法时,不能抛出编译时异常。
3、如果父类方法抛出了多个编译时异常,子类覆盖父类的方法时,可以不抛出异常,或者抛出相同类型的异常,或者抛出父类异常的子类【类型小于父类异常类型】。
七、自定义异常
步骤:
1、创建一个类继承对应的父类【编译异常:Exception 运行异常:RunTimeException】
2、提供类的空参构造【调用父类的相关构造 】
day15
集合体系
一、集合概述
二、单列集合
1、Collection接口
Collection是一个接口,是一个定义了所有单列集合`共性功能`的一个接口【Collection是单列集合的顶层接口】
ArrayList是Collection的典型实现类
-
遍历方法
-
迭代器遍历 Collection遍历获取迭代器的对象:
iterator():获取迭代器对象
迭代器的功能:
hasNext():判断下一个位置是否有值 返回值为boolean类型的值
next():获取位置上的元素同时移动迭代器指针到下一个位置
步骤:
1、获取迭代器对象同时迭代器的指针存在于集合头部的外面指向下一个位置
2、循环开始遍历:
hasNext方法作为循环条件:判断指针指向的位置是否有值 返回结果
true :
调用next方法获取该位置的元素进行循环体的逻辑操作,同时把迭代器的指针移动到下一个位置
继续判断是否有值:
如果每个位置都有值重复执行next方法以及循环体达到遍历的效果
false :结束循环【遍历】
注意事项:
1、hasNext方法执行次数是集合当前长度+1次
2、next方法执行集合的长度次
-
增强for遍历 格式:
for(数据类型 对象名 :容器名称){
获取到元素要进行的逻辑操作
}
本质:
迭代器遍历
-
数组法遍历 把集合对象中的元素复制到数组中,对这个数组进行遍历 【集合变为数组后遍历】
集合变为数组:
空参:toArray():把集合变为Object数组【根据集合中数据的个数和数据类型创建对应的数组对象】
有参:toArray(Object[] arr):把集合变为Object数组
1、传入的数组的长度和集合的长度一致 系统不会额外的创建数组 直接使用
2、传入的数组的长度比集合的长度小: 系统根据集合的长度以及涉及的数据类型创建新的数组
3、传入的数组的长度比集合的长度大:系统不会额外的创建数组 多余的位置使用null填充
2、有序单列集合【List接口】
3、并发修改异常【ConcurrentModificationException】
原因:
`使用迭代器遍历的过程中使用集合对象对集合的元素进行了增或删的操作`【遍历和操作元素的对象不一致】
解决方案:
迭代器遍历:增删元素的时候使用迭代器对象【迭代器只有删除功能】
普通for遍历:遍历和增删都使用集合对象
引用大佬方案:
> 这里是引用
https://blog.csdn.net/androiddevelop/article/details/21509345
4、简单数据结构
栈:
先进后出,只有一端操作元素
队列:
先进先出,进、出各占一端
数组:
一段连续的空间:查找块,增删慢
链表:
一系列节点[node]组成:增删快,查找慢
多个节点之间,通过地址相连
5、有序单列集合实现类
-
ArrayList 概述:
底层是数组:查询快,增删慢
ArrayList是List的典型实现类,没有自己的特有功能,功能都是List接口中的功能。
特点:
1. 在创建ArrayList集合对象的时候,会维护一个长度为10的Object类型的数组.
2. 当插入数据10个长度不够,这时候以1.5倍的形式进行扩容
-
LinkedList 概述:
底层是双向链表:增删快,查询慢
LinkedList是List的另一个常用实现类集合,有自己的特有功能,主要是对集合首、尾元素的操作
特有功能:
public void addFirst(E e):将指定元素插入此列表的开头。
public void addLast(E e):将指定元素添加到此列表的结尾。
public E getFirst():返回此列表的第一个元素。
public E getLast():返回此列表的最后一个元素。
public E removeFirst():移除并返回此列表的第一个元素。
public E removeLast():移除并返回此列表的最后一个元素。
public E pop():从此列表所表示的堆栈处弹出一个元素。
public void push(E e):将元素推入此列表所表示的堆栈。
端
数组: 一段连续的空间:查找块,增删慢
链表: 一系列节点[node]组成:增删快,查找慢 多个节点之间,通过地址相连
### 5、有序单列集合实现类
- ArrayList
概述: 底层是数组:查询快,增删慢 ArrayList是List的典型实现类,没有自己的特有功能,功能都是List接口中的功能。
特点: 1. 在创建ArrayList集合对象的时候,会维护一个长度为10的Object类型的数组. 2. 当插入数据10个长度不够,这时候以1.5倍的形式进行扩容
- LinkedList
概述: 底层是双向链表:增删快,查询慢 LinkedList是List的另一个常用实现类集合,有自己的特有功能,主要是对集合首、尾元素的操作
特有功能: public void addFirst(E e):将指定元素插入此列表的开头。 public void addLast(E e):将指定元素添加到此列表的结尾。 public E getFirst():返回此列表的第一个元素。 public E getLast():返回此列表的最后一个元素。 public E removeFirst():移除并返回此列表的第一个元素。 public E removeLast():移除并返回此列表的最后一个元素。 public E pop():从此列表所表示的堆栈处弹出一个元素。 public void push(E e):将元素推入此列表所表示的堆栈。
|