JAVA基础03
一、java常用API
基础API
- Object:是所有java的顶级根父类(类0bject是类层次结构的根类。每个类都使用Object作为超类。所有对象(包括数组〉都实现这个类的方法。)
- finalize()
- hashCode()
- tostring():我们可以重写该方法,以实现自定义的对象字符串输出形式
- equals():我们可以重写该方法,以实现两个对象相等判断的自定义规则
- 基本类型的包装类:Integer、Double、Character
- 基本类型是用来做数据运算的
- 包装类是在存储数据的基础上又提供了类的功能(更多的方法、Null值的处理)。
- JDK 1.5提供了基本类型和包装类型的自动转换(自动拆装箱)
Integer int1 = new Integer(i1);//装箱
int i = int1; //自动装箱
- Math:数学工具类
- 都是静态工具方法的常量(E、PI)
- Biglnteger:大整型数据类型,可以存储并操作任意长度的整数
- BigDecimal:大浮点型数据类型
- Random:随机数工具类,用于随机出一个数,常用于各种抽奖程序。
- Date:JDK 1.8之前的日期类型。用来表示一个具体的时刻。
- Canlendar:日历类型
- 提供了大量的属性用来描述日历的各个字段,并且这些属性都可以通过get、set方法操作
- getTime()方法用于将日历对象转成日期( Date)对象
- DateFormat:日期格式化类库,用于将日期对象(Date)转成本地格式(可以自定义)方便进行展示
- DateFormat本身提供的模板不易于定制,更常用的是它的子类SimpleDateFormat
- 核心功能就是日期——字符串之间的转换方法:format()【日期转字符串】、parse()【字符串转日期】
- LocalDate、LocalTime、LocalDateTime、DateTimeFormat: JDK1.8为了整合一个通用的日期时间处理规范,提供了一套新的日期时间处理类库。
- 新增的核心类库都位于java.time包及其子包下。
- String、StringBuffer. StringBuilder :处理字符串的工具类
- length(长度)、index(索引)是字符串最重要的属性。
- 常用方法:
- 构造方法:正常情况下,使用字符串"直接赋值即可,在涉及编码转换传输的时候,建议将字符串解成字节码数组进行传输,然后通过字节码和对应的编码格式重新生成字符串。解码使用解码方法getBytes(String charsetName)
- String(byte[] bytes, String charsetName)
- 判断方法: equals()、 equalslgnoreCase0、 endsWith()
- 操作方法:字符串子串替换replace()、字符串切分split()、 字符串截取substring()、字符串去前后空白trim()
- 正则表达式判断字符串是否符合规范: matchs()
- 查找方法: indexOf()【从前往后找】、lastIndexOf()【从后往前找】
- 构造方法:正常情况下,使用字符串"直接赋值即可,在涉及编码转换传输的时候,建议将字符串解成字节码数组进行传输,然后通过字节码和对应的编码格式重新生成字符串。解码使用解码方法getBytes(String charsetName)
思考:
1、== 判断在判断基本类型和引用类型数据时有什么区别?
2、什么是Java的自动拆装箱机制?
3、String、StringBuffer. StringBuilder 之间有什么区别?
二、集合容器
容器集合是java提供的一系列用于储存、操作数据的类库。集合容器提供了元素的存取、判断、查找…功能。
而且集合容器的容量是可变的,它会随着存储的元素个数变化完成自动自动扩容(缩容)。
集合容器的体系:
单列容器:容器中存储的是一个个的对象(元素)。
- Collection:所有单列容器的父接口,它定义了所有单列容器都应该具备的通用容器功能。
- List:有序序列
- ArrayList:底层是通过数组数显的,他没有实现同步,现成不安全,效率高。【构造一个初始容量为10的空列表。】因为底层是数组,它内部的元素是有索引的,可以很方便的通过索引进行查找。查询效率高。
- LinkedList:底层是通过双向列表实现的 。在操作元素增加、删除时只需要改变最多两个元素,它的增删效率高。
- Vector:底层也是通过数组实现的,他实现了线程同步,效率偏低。
- Set:无序序列
- HashSet:基于哈希表实现的一一个无序序列,它用于存储不重复的元素 ,内部可以存储null元素。线程不安全,效率高。默认初始容量16。HashSet经常用来做去除重复元素的工作。
- LinkedHashSet:
- TreeSet:基于TreeMap(红黑树)实现的一种Set集合。主要用途是对能够进行自然排序的元素进行排序去重存储。
- Quene:队列,队列遵循先进先出原则,操作队列永远从队列头到队列尾操作。
双列(key-value)容器:内部存储的是一个一个的 Entry / Node(键-值)- Map:
- HashMap:基于哈希表实现的,内部元素无序,保存的数据(key)不能重复,他是线程不同步,效率高。
- HashTable:和HashMap类似,只是他是线程安全的,且它不能存储null值。
- TreeMap:基于红黑树
- Map:
- List:有序序列
三、泛型
- 泛型是JDK1.5之后新增的一种格式约定语法。泛型的主要作业是:限定数据类型和隐式类型转换。
- JDK1.7之后加入了泛型的不长与擦除机制,我们只需要在编译类型上添加泛型即可。
- 在编写代码时,我们也可以试用一些简写字母来表示自定义泛型,自定义泛型用于表示可以由使用者传入一个具体的类型做限定。
思考:
1、常见的集合容器有哪些?
2、List的主要实现类有哪些?它们之间有什么区别?
3、什么是哈希冲突?如何解决哈希冲突?
4、什么是哈希冲突?如何解决哈希冲突?
5、集合容器的加载因子有什么作用?为什么默认加载因子是0.75?