JAVA基础知识点

常用类
Math类:Math类是由java.lang包提供的一个用作数学相关操作的类,该类为final类,内部提供的所有方法都是static的,并且该类未对外提供公开的构造方法,因此无法在外界直接创建对象。
Random类:Random类是Java.util包中提供的一个基于伪随机流,用于生成随机数的工具类,该类中提供了一系列用于产生伪随机数据的方法,如:nextBoolean(),nextDouble(),nextInt()等.
BigDecimal:由于计算机对浮点数运算时,可能导致精度丢失问题(如double类型0.1和0.2做相加运算时,实际结果不是0.3,而是0.30000000000004),因此Java中提供了一个BigDecimal(java.math.BigDecimal)类型用于表示精确的数值,在对数值类型做运算需要保证精度的情况下,可以使用BigDecimal中提供的相关方法实现。
DecimalFormat:java.text.DecimalFormat是一个用于对数值类型数据格式化(解析字符串为数值)处理的类,该类从java.text.NumberFormat类继承,里面提供了一些用于将数值类型表示为不同格式字符串转换方法(货币,百分比,千分数等);
File类:File类是位于java.io包中,该类用于表示本机环境中个一个文件或者一个目录对象,File中提供了一些用于操作文件或者目录的方法,比如文件或目录创建,删除文件或者目录,信息显示等操作。
Date类&DateFormat:Date类位于java.util包,用于表示一个日期时间对象,Date类中提供了一些对于时间和日期操作的相关方法,不过这些方法目前都已经过时(从JDK1.1开始使用Calendar类替代这些相关方法);java中经常会涉及到对于日期的一些操作,因此使用Date类可以简单的解决,同时JDK还提供了用于对Date进行格式和解析的相关
Calendar类:Calendar类是java.util包中提供的一个抽象类,该类从JDK1.1开始出现,作为Date类的替代方案,Calendar类中包含了对不同国家地区日历的处理,Calendar类常见的子类为:java.util.GregorianCalendar;获取Calendar对象一般使用类中提供的静态方法:getInstance()
正则表达式:正则表达式是一种最早起源于Perl语言的特殊字符串技术,可以通过一些固定的模式编写一些特殊的字符串,通过对这些特殊字符串使用,可以有效的进行表单验证(手机,邮箱,网址等输入格式的检查),以及一些数据的爬取,包括字符替换等功能;因此,正则表达式是一项非常强大的表达式语言。

集合框架(Collection):
JDK1.2开始引入了集合框架的概念,以弥补java中只有数组这种容器的单一问题,这些框架多数由接口构成,另外也包含了一些对于接口实现的类,其中这些接口的最上层接口为java.util.Collection,Collection下也包含几个常见的子接口:List(列表)、Set(集合)、Queue(队列);另外还有个常见接口:Map.
List集合:List是java集合框架种最常见的一个集合接口,直接从Collection继承而来;List集合是一个有序集合(内部的元素顺序按照添加顺序存储);List接口中包含几个常用的实现类:ArrayList、LinkedList、Vector(JDK1.0)
ArrayList:Arraylist是一个基于数组的动态数组实现,内部可以存储任何的数据类型的元素,提供了一系列的API用于简单的访问列表数据
ArrayList:是基于动态数组的实现,内部的实现基于数组完成,因此在进行元素查找的时候只需要根据元素的索引即可快速找到,但是在更新时或者插入时,由于数组结构是连续的,元素一旦向中间插入,则后续的元素需要整体后移,效率低。ArrayList是线程不同步的实现,在多线程并发操作时不能保证数据的安全,但是效率高;另外ArrayList在进行容量扩充是增长原来的1.5倍(增长原来长度的一半);线程安全的ArrayList可以使用java.util.concurrent.CopyOnWriteArrayList
LinkedList:是基于双链表的实现,集合中元素的组织是通过元素的首尾指针连接,在进行数据修改时只需要改动指针的指向即可轻松实现,但是在进行查询的时候,需要从链表头依次搜索,因此修改时,效率较低.
Vector:和ArrayList一样也是基于动态数组的实现,但是Vector是老式JDK(JDK1.0)中的一个动态数组类,提供的是一些线程安全(线程同步)的集合操作,因此,在多线程并发时,对数据的安全性会有一定保障,但是带来的影响就是效率低;另外Vector当容量不足时会在原来长度的基础上增长一倍(ArrayList增长一半)
Set:Collection接口还提供了另一个子接口Set,Set是一个无序集合,元素的存储顺序不是按照添加顺序存储(具体存储顺序跟使用的实现类有关);因为元素的存储是无序的,因此无法像List一样通过索引获取元素,所以对于Set集合中元素的获取只能通过迭代器进行迭代;另外Set集合中不允许出现重复的元素(不允许存在e1.equals(e2)),实际上是后出现的元素会覆盖原来存在的。
Set集合有两个常见的实现:

  1. HashSet:基于散列算法(Hashtable)实现的元素存储顺序
  2. TreeSet:基于二叉树中红黑树的实现,元素的排序方式需要通过实现Comparable或者Comparator接口完成
    Map:Map接口是JDK1.2新增集合框架中的一种容器,Map集合内部的元素存储采用键值对(Key-Value)结构,key不允许重复,另外每一个key都会对应一个value对象;
    Collections类:Collections类是是一个用于对集合进行一些常规操作的工具类(排序,查找,反转等),内部包含的都是静态方法.
    泛型:泛型(Generic),是JDK1.5之后新增java语法糖(糖衣语法:对程序本身没有任何影响,但是为开发者提供了更加便利的操作),泛型表示为参数化类型,即将一个数据类型作为参数传递到类,接口,方法中,将原本在运行期间才能出现的问题,提前到编译期间,从而优化代码的可能性(最大限度的避免一些运行时异常的出现);java中的泛型分为三种泛型表示:
  3. 泛型类
  4. 泛型接口
  5. 泛型方法
    JDK8流式(Stream)API处理集合:流式API是JDK8中新增的一项函数式编程技术,可以通过API中提供的相关接口,方法轻松简洁的实现对于集合元素的过滤,搜索,排序,收集等操作。流式API处理接口分为以下几个步骤:
  6. 获取Stream对象
  7. 过滤,映射
  8. 遍历,排序,统计,收集等操作
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值