Java部分常用类学习笔记

 常用类(String、Date)

  1. String类:代表字符串

一.是一个final类,具有不可变性。

二.具有哈希值

三.内部实现了Serialization接口,表示字符串支持序列化

       实现了Comparable接口,表示String可以比较大小

       *关于字符串不可变性的理解:字符串字面量保存在方法区常量池中,常量池不会保存相同值的字面量,如果两个String字面量相同,那么地址就是同一个;对字符串进行拼接操作时,会在常量池中重新声明一个字面量,与拼接前的字面量不同,用replace结果也相同

     *创建:可以直接赋字面量(存在方法区中),也可以new(存在堆中,堆中的value调用的是常量池中的字面量),当拼接操作中存在变量名时,它的值会在堆空间中去开辟,相当于new;调用intern方法,要求字面值在常量池中声明

     *String的类型转换:调用包装类的静态方法;调用String重载的valueOf();与byte之间的转换靠String中的getbyte方法和String本身的构造器(编码与解码,注意使用的编码集和Java默认编码集之间可能存在不同)

     *如果空String接收的参数的内容是null,数组接收后并不为空,而是产生长度为4的字符串存储“null”

2.可变的字符序列:(底层皆为char数组存储)

     一.StringBuffer:线程安全,含同步方法,效率较低

                    常见一个默认容量为16的数组,如果在一开始带上初始值,那么会创建一个初始值长度再加上16的大小的数组。在之后拼接新元素时,字符串不会再新建一个,而是直接在原字符串上加入新元素

                *返回长度时返回数组中实际字符串长度

                *数组不够用时会自动扩容,长度扩大为两倍再加二,使用时尽量避免扩容,建议在一开始就指定长度

                *StringBuffer下大部分方法的表现类似于String的+符

     二.StringBuilder:费线程安全,但效率较高

                    其主要特性基本与StringBuilder相同

    *关于三者效率之间的对比,StringBuffer效率低于StringBuilder,String的效率显著低于前两者

3.关于时间的方法:

     Java.lang.System下的currentTimeMillis用来返回毫秒数,long型变量。毫秒数可以称作时间戳

     Java.util.Data类:1)创建空参Date对象,toString():显示年、月、日、时、分、秒

                     2)创建空参Date对象,getTime():显示毫秒数

                     3)创建毫秒数对象,toString():将毫秒数转化为年月日

     Java.sql.Data类:与数据库交互时使用,创建格式:new java.sql.Date

     *如何将Date强转为java.sql.Date:使用Date下的方法getTime()先转化为毫秒数

     SimpleDateFormat的使用:对Date的格式化和解析

                           格式化:new一个Date,使用format方法转化为字符串

                           解析:SimpleDateFormat的parse方法将字符串转化为时间,对字符串格式有要求,需要与格式化显示的时间格式相同;或者不使用默认构造器,自己进行定义,但无论如何格式化与解析需要保持相同格式

    Calendar日历类的使用(抽象类,无法实例化)

            实例化:方式一:创建子类对象GregorianCalendar的对象

                    方式二:调用静态方法getInstance(),实质上任然调用了子类

            *获取月份时,一月为0,十二月为11,周日是1,周六是7。

            *Calendar的数值是可变的,可以进行计算。

            *Calendar存在偏移量,如一月用零表示等等

   LoccalDate、LocalTime、LocalDateTime:(在Java.time包中)

           LocalDate:年月日;LocalTime:时分秒毫秒;LocalDateTime:年月日时分秒毫秒。

           使用:now获取当前时间,of对时间进行预定义

           *无偏移量,且具有不可变性

  Instant瞬时类:类似于Date类。

  DateTimeFormatter:用于格式化和解析日期时间,用于取代SimpleDateFormat,支持自定义

           *解析时由于不确定Date、Time等调用的类的种类,所以以接口的方式造对象 TemporalAccessor

4.Java比较器:对对象进行大小的比较,正常情况下,对象比较只能使用==和!=,不能使用>或<号。

              Comparable接口:重写compareTo方法,this与形参对象比较,规则为this大返回正数,this小于形参对象返回负数,等于返回零;默认从小到大排(自然排序)

              Comparatar接口:Comparable接口实现的结果不适于当前方式,需要自定义一种排序方式,接口内部使用泛型实现功能(定制排序)

5.System类:存放系统级的诸多属性与控制方法,构造器类型为private,故无法创建该类的对象,无法实例化。内部所有成员变量和成员方法都是static的。

        三个属性:err、in、out,流相关的操作

        成员方法:exit(),退出,0为正常退出,非零表示不正常

                          gc()请求系统垃圾回收,具体的回收看系统的运行情况(多线程)

6.BigInteger类:Math包下,用于高精度整数计算

7.BigDecimal类:Math包下,用于高精度浮点数计算,默认三位小数,但可以自由指定小数位数。

  • 11
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值