java笔记(4)

目录

31、Runtime类(单例设计):

32、System类:

33、Cleaner:

34、Cloneable接口(JDK1.0):

35、Math类:

36、Date类:

37、Calendar抽象类:

38、SimpleDateFormat类:

39、数据类型转换:

40、LocalDate(重要!!!)、LocalTime、LocalDateTime类(JDK1.8):

41、 正则表达式:

42、String类对正则的支持(JDK1.4)

43、java.util.Regex正则包:

44、格式化:

45、UUID:

46、Optional类(JDK1.8)

47、ThreadLocal类:

48、定时调度(TimerTask、Timer)java.util包:

49、Comparable接口:

Comparator接口:


31、Runtime类(单例设计):

Runtime描述的是一种运行时,在Java程序执行过程中,所有的java程序都一定要运行在JVM的进程之中,有了这个JVM进程,那么就需要有一个类可以描述当前进程的相关环境以及与之相关的处理操作,这样在Java设计的时候就设计了一个Runtime类,每一个JVM的进程之中都会自动包含有一个Runtime类的实例化对象

 

32、System类:

 

33、Cleaner:

Cleaner是java中的虚引用,在使用nio技术分配直接内存的时候有被使用

34、Cloneable接口(JDK1.0):

  • 实现Cloneable接口并重写Object类中的clone()方法

  • 实现Serializable接口,通过对象的序列化和反序列化实现克隆,可以实现真正的深度克隆

  • 通过org.apache.commons中的工具类BeanUtils和PropertyUtils进行对象复制

对象克隆有深克隆也有浅克隆,java中实现的克隆为浅克隆(如果对象中存在引用数据类型,那么复制后的对象中的引用数据还是指向之前的地址,并不会重新开辟新的堆内存地址)

在Object类中提供有clone () 方法,此方法由JVM底层实现

 

35、Math类:

注意:Math类中round四舍五入处理过程中,如果要操作的数值为负数,并且这个时候小数点内容超过了0.5,则会自动进行进位处理。并且这个方法会将全部的小数位进行整体的进位处理。

 

36、Date类:

Data类中的无参构造会自动调用单参构造,传递的参数是System.currentTimeMillis(),当前的时间戳

 

37、Calendar抽象类:

注意:这个类的主要功能是用来进行日期时间的计算,如果不使用这个类,而使用long毫秒进行计算,会出现不准确的情况

Calendar类中提供有获取实例化对象的方法,这个方法内部会自动根据所在地区的信息返回不同的实例化子类

Calendar类中提供有很多static属性,可以方便的获取年月(内部的月是从0开始计算)日,一年中第几天,所在月第几天等信息

 

38、SimpleDateFormat类:

 

39、数据类型转换:

 

40、LocalDate(重要!!!)、LocalTime、LocalDateTime类(JDK1.8):

 

 

注意:在多线程下使用SimpleDateFormat实现字符串转日期(日期转字符串不会出错),如果所有线程共用一个SimpleDateFormat实例,则会出现错误。

而使用LocalDate、LocalTime、LocalDateTime则不会出现错误

 

 

41、 正则表达式:

注意:在JDK1.3及以前,如果项目中想要引入正则表达式,需要采用Apache所提供的第三方组件包来完成

从JDK1.4开始,正则表达式加入到Java的原生支持中,并且JDK1.4里面修改了String类的定义(可以通过字符串类直接进行正则的处理)

 

 

 

 

 

42、String类对正则的支持(JDK1.4)

 

43、java.util.Regex正则包:

(1)Pattern类:

Pattern类主要功能是进行正则表达式的编译处理,所以如果要获得本类的实例化对象一般都使用其内部提供的compile()方法,这个方法需要传入一个正则表达式

(2)Matcher类:

如果想要获取Matcher类的对象实例必须依靠Pattern类

Pattern类提供有一个获取Matcher类实例化对象的方法:public Matcher matcher(CharSequence input)

获得了Matcher对象之后就可以直接实现匹配以及替换等功能

字符串对正则的支持底层都是封装了这两个类。简单的正则匹配用String,复杂的正则匹配还是需要使用原生的正则包:例如:

 

44、格式化:

 

45、UUID:

利用时间戳与其他信息结合生成的序列

最常用的方法是 UUID.randomUUID()

46、Optional类(JDK1.8)

此方法的意义在于,例如:如果一个主类调用一个方法,此方法返回的是一个对象,那么为了防止主类处(调用处)抛空指向异常,因此会先接收方法返回的对象,然后对其进行是否为空的判断,如果其不为空再对其进行操作。而如果在调用的方法中使用了Optional类,那么只有当返回的对象不为空的时候才会返回数据,否则将直接抛异常。(此异常属于本方法中的异常,不属于主类抛出的异常)。因此此类可以保证返回的数据不为空,主类不再需要对数据进行判空处理

 

47、ThreadLocal类:

这个类好比一个储物柜,每个顾客就相当于一个线程,每个线程只能存属于他自己的一个数据,各线程之间修改互不干扰

 

 

 

48、定时调度(TimerTask、Timer)java.util包:

Timer类:实现线程任务调度

 

TimerTask接口:实现定时处理任务的接口定义

 

49、Comparable接口:

在Array类中的sort()方法是可以实现对象数组的排序的,但是如果想要自己定义的类使用此方法排序,则必须继承Comparable接口实现排序规则的定义,否则会报ClassCastException异常

注意:接口上加泛型是为了统一比较的类型

 

Comparator接口:

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值