第03章Java核心类库之常用类

本文详细介绍了Java中的Object类,包括toString、equals和hashCode方法。同时讲解了Objects类的实用静态方法,如比较和空值检查。Math类提供了数学运算,如随机数生成和四舍五入。Arrays类包含数组操作,如排序和比较。深入讨论了BigDecimal类的高精度运算,Date类的时间处理,以及DateFormat和SimpleDateFormat类的日期格式化。Calendar类用于日期和时间的精细管理,包括时区和日期字段的操作。此外,还探讨了System类的系统级功能,如标准输入输出流和时间戳获取。String类的重点在于其不可变性和常用方法,如字符串拼接和比较。

Object类

  toString方法默认返回:类名+@+16进制哈希值。
  equals方法默认比较对象引用
  hashcode方法调用的是原生函数实现

Objects类

  提供检查数组越界、比较对象是否相等、判断对象是否为空,hash等静态方法。

Math类

  提供自然对数和圆周率,提供取绝对值、取对数、指数、平方根、计算三角函数和反三角函数、取[0,1)区间内的随机数、四舍五入(先加0.5,再向下取整,所以可以看做是向0取整)、向上取整和向下取整

Arrays类

  所有方法都是静态的,提供二分查找、比较两个数组、复制数组、填充数组(数组初始化)、计算数组哈希值、找出两个数组指定范围内第一个不匹配的元素的索引、排序数组等方法。

BigDecimal类

  更高精度,提供加减乘除等方法,常用构造方法:1.BigDecimal BigDecimal(double d);2.BigDecimal BigDecimal(String s); 3.static BigDecimal valueOf(double d)。

Date类

  构造函数。现在只使用Date()和Date(long date)两个构造函数,分别是使用当前时间创建日期对象和使用自1970年1月1日00:00:00 GMT以来的毫秒数创建日期对象。创建某个日期的日期对象已经被Calendar.set(year + 1900, month, date)或GregorianCalendar(year + 1900, month, date)取代。使用字符串来创建日期对象已经由DateFormat.parse(String s)取代。
  提供判断是否在某个日期之前、之后,直接和另一个日期比较、是否和另一个日期相等。可以看出,Date类的基本作用:1.获取当前日期。2.格式化地输出日期。由于SimpleDateFormat或System.out.printf()等格式化输出日期的方式只支持Date,不支持Calendar,可以借助Date格式化输出Calendar。

DateFormat类

  DateFormat类是一个抽象类。构造方法都是静态方法。构造方法:创建默认格式的对象、给定样式、给定语言环境的对象。
  提供以默认方式解析字符串为日期,以默认方式格式化日期的方法。

SimpleDateFormat类

  是DateFormat类的子类。构造方法:1.SimpleDateFormat();2.SimpleDateFormat​(String pattern);3.SimpleDateFormat​(String pattern, Locale locale)
  提供设置模式字符串、格式化日期为字符串、解析日期字符串为日期等方法。

Calendar类

  Calender类在java.util包下,是一个抽象类。
  创建对象的方法都是静态的。可使用默认的、指定的区域Locale指定的时区TimeZone创建对象。Calendar设置好日期之后,时间戳就固定下来了,通过直接设置变换时区TimeZone不会导致时间戳自动变换,但如果变换时区之后再设置相同日期,时间戳会变化。从中可以看出,Calendar默认使用本地时区,它维护的是时间戳,修改时区只是修改了一个字段,只有再修改日期才会导致时间戳变化。看了源码确实如此,Calendar.setTimeZone仅仅修改了一个字段,此外什么都没做。
  1.设置日期(set​(int year, int month, int date, int hourOfDay, int minute, int second)和set​(int field, int value)等)。
  2.获取日期的某一字段get​(int field)。

字段含义
YEAR真实年份
MONTH0表示1月
WEEK_OF_YEAR一年的周数,和第一周怎么算有关
WEEK_OF_MONTH当前月的第几周,本月第一天所在的周是第一周,12个月的WEEK_OF_MONTH加起来应该是大于WEEK_OF_YEAR的
DAY_OF_YEAR本年的第几天,1月1日是第一天
DAY_OF_MONTH本月的第几天,1日是第一天
DAY_OF_WEEK指星期几,1表示星期天,2表示星期一,这和一周的第一天是哪一天无关
DAY_OF_WEEK_IN_MONTHDAY_OF_MONTH的1至7始终对应DAY_OF_WEEK_IN_MONTH中的1,8到14对应于DAY_OF_WEEK_IN_MONTH的2,即按7天为一个周期,获取位于一个周期的第几天
HOUR小时,范围0~11
HOUR_OF_DAY小时,范围0~23
MINUTE分钟,范围0~59
SECOND秒,范围0~59
MILLISECOND秒,范围0~999

  3.获取一周的第一天(getFirstDayOfWeek​(),只和地区有关,返回值1表示星期天,2表示星期一)。
  4.获取第一周的最小天数。getMinimalDaysInFirstWeek(),返回值只有1和7.若第一年允许跨年,显然最小天数为1(一周最后一天是一年的第一天),否则为7.
  5.获取年份getWeekYear()。get(Calendar.Year)指当前年份,而getWeekYear()指所在的周是在哪一年。例:若2021年1月1日所在周属于2020年,则返回值为2020,若2020年12月31日所在周属于2021年,则返回值为2021。跨年的周属于哪一年和FirstDayOfWeek、MinimalDaysInFirstWeek有关。
  6.获取这一年的周数getWeeksInWeekYear(),同样的,和第一周怎么算有关。
  7.①getMaximum(int Field)、②getActualMaximum(int Field)和③getLeastMaximum(int Field)。③<=①<=②。①表示当前实例该字段的可能的最大值;②表示该字段任何可能的最大值;③表示该字段在各个实例的最大值中最小的。最小值同理。
  8.获取Date对象getTime(),获取距离Epoch的毫秒数getTimeInMillis(),由Date对象创建Calender实例setTime()。

System类

  提供err标准错误输出流、in标准输入流、out标准输出流。
  提供arraycopy​复制数组、currentTimeMillis获取当前时间戳(从1970.01.01至今的毫秒数)、gc()运行垃圾回收器、exit(int status)终止虚拟机(会结束当前程序)等方法。

String类(重点)

  所有字符串都是String类的实例。字符串是不变的,它们的值在创建后无法更改。
  所有创建的字符串常量都会保存到字符串常量池(永久代,现在永久代已经被元空间代替)中,永远不会被垃圾回收。String s1=“123”;String s2=“123”;String s3=new String(“123”);则s1==s2为true,而s1==s3为false。
  字符串常用方法:indexOf():返回指定字符的索引。charAt():返回指定索引处的字符。replace():字符串替换。trim():去除字符串两端空白。split():分割字符串,返回一个分割后的字符串数组。getBytes():返回字符串的 byte 类型数组。length():返回字符串长度。toLowerCase():将字符串转成小写字母。toUpperCase():将字符串转成大写字符。substring():截取字符串。equals():字符串比较。
  字符串拼接常用StringBuilder和StringBuffer,区别是StringBuffer是线程安全的,效率低一点。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值