day13 可变字符串 Math API 日期API

可变字符串
StringBuilder

介绍:对象创建后可以通过调用方法改变其封装的字符序列,java的字符串连接的过程是利用StringBuilder实现的(通过append()实现,StringBuilder.toString()可以转化为字符串)

构造方法: public StringBuilder()

public StringBuilder(String str)

常用方法:

注意:方法返回的是StringBuilder对象,可以连续.append

StringBuffer

介绍:和StringBuilder同一个父类,字符串内容计算采用StringBuilder性能更好

对比:StringBuffer是线程安全的,同步处理的,性能稍慢

StringBuilder是非线程安全的,并发处理的,性能稍快

StringJoiner

介绍:JDK1.8+中引入,字符串拼接对象

方法说明
StringJoiner("")构造方法,以某个符合分割
add("")添加字符串
length()获取字符串长度(包括分割符)
merge(StringJoiner(""))拼接另一个StringJoiner内容
API Math

属于lang包下的一个工具类,使用时无需导包,该类中的方法为静态方法,通过Math.方法名()调用

常量说明
static final double E自然底数E
static final double PI圆周率π
方法说明
static double random()生成[0.0,1.0)区间的小数,不包括1.0
static int abs(int a)获取一个数的绝对值
static int max(int a, int b)返回参数值最大的数
static int min(int a, int b)返回参数值最小的数
static double pow(double a, double b)获取a^b
static double sin(double a)返回一个数的正弦值
static double cos(double a)返回一个数的余弦值
static double tan(double a)返回一个数的正切值
static double asin(double a)反三角函数,返回一个数的反正切值
double toRadians(double angdeg)获取弧度
static double sqrt(double a)获取一个数的平方根
static double cbrt(double a)获取一个数的立方根
static double ceil(double a)向上取整
static double floor(double a)向下取整
static long round(double a)四舍五入

生成随机数可以扩大倍数后强转成整数(可以取整),再进行加减限定范围

BigDecimal

介绍:用来对超过16位有效位的数进行精确的运算,解决基本浮点型的精度丢失问题

格式:BigDecimal bigDecimal=new BigDecimal(String val);//可以直接转String

方法说明
BigDecimal add(BigDecimal augend)计算数的和 +
BigDecimal subtract(BigDecimal subtrahend)计算数的差 -
BigDecimal multiply(BigDecimal multiplicand)计算数的积 *
BigDecimal divide(BigDecimal divisor)计算数的商 /
    //除法:当不能除尽时,需要指定保留小数的位数,否则报错
    //通过scale保留多少位 RoundingMode指定保留规则
    System.out.println(bigDecimal.divide(bigDecimal2,3,RoundingMode.UP));//3.14*1.2
时间日期
System类

介绍:System类提供的public static long currentTimeMillis()用来返回当前时间与1970年1月1日0时0分0秒之间以毫秒为单位的时间差。(System.currentTimeMillis())

特点:该方法不能精确表示时间,只能用于表示当前时刻距离时间纪元的毫秒差

Data类

介绍:java.util.Date 类封装了日期及时间信息。

Date类的API不易于国际化,大部分被废弃了,后面使用Calendar表示具体日期

构造方法说明
public Date()创建表示当前时间的Date对象
public Date(long date)创建指定毫秒数的Date对象
日期匹配字符

SimpleDateFormat

介绍:一个以与语言环境有关的方式来格式化和解析日期的具体类,它允许进行格式化(日期->文本)、解析(文本->日期)和规范化

构造方法:SimpleDateFormat();

SimpleDateFormat(String pattern)用给定的模式和默认语言环境日期格式符号构造

("yyyy-MM-dd HH:mm:ss")

方法:final String format(Date date) Date->String

Date parse(String source)throws ParseException String->Date

Calendar

介绍:用于封装日历信息,可以对时间分量进行运算,是抽象类,具体子类针对不同国家的日历系统,其中应用对广泛的是格里高里历(通用的阳历),对应世界上绝大多数国家/地区的标准日历系统

getInstance方法(用来获取一个通用对象)

Calendar calendar=Calendar.getInstance();//创建Calendar对象

常量说明
static int YEAR获取当前日期的年份,默认值为1
static int MONTH获取当前日期的月份,默认值为2 月份从0-11,使用时要注意+1
static int DATE获取当前日期的天数,默认值为5
static int DAY_OF_MONTH获取当前日期在当前月的第多少天,默认值为5 此常量和DATE含义一致
static int DAY_OF_WEEK获取当前日期是本周的第几天,默认值为7, 星期日为1 星期一为2...星期六为7
static int DAY_OF_YEAR获取当前日期是一年中的第几天,默认值为6
static int DAY_OF_WEEK_IN_MONTH获取当前日期是当前月的第几周,默认值为8
static int WEEK_OF_YEAR获取当前日期是一年中的第几周,默认值为3
static int HOUR获取当前时间是一天中的第几小时 默认值为10, 0-11,12点用0表示
static int HOUR_OF_DAY获取当前时间是一天中的第几小时 默认值为11, 24小时制
static int MINUTE获取当前时间是第几分钟 默认值为12
static int SECOND获取当前时间是第几秒 默认值为13

常量一般配合get方法来获取指定日期的时间分量

方法名说明
public int get(int field)获取指定时间分量的值
Set方法名说明
void set(int field, int value)指定日期分量和分量的值
void set(int year, int month, int date)设置指定日期,参数为年月日
add方法名说明
void add(int field, int amount)给指定时间分量(YEAR,MONTH,DATE)增加值,整数为增加,负数为减少
java.time

介绍:JDK1.8之后全新的日期时间定义方法

分类:LocalDate代表IOS格式(yyyy-MM-dd)的日期,可以存储 生日、纪念日等日期。

LocalTime表示一个时间,而不是日期。

LocalDateTime是用来表示日期和时间的,这是一个最常用的类之一。

其他:ZoneId 获取各个时区 我国时区 Etc/GMT-8

DateTimeFormatter 格式化日期

方法名说明
now() / now(ZoneId zone)静态方法,根据当前时间创建对象/指定时区的对象
of()静态方法,根据指定日期/时间创建对象
getDayOfMonth()/getDayOfYear()获得月份天数(1-31) /获得年份天数(1-366)
getMonthValue() / getYear()获得月份(1-12) /获得年份
getHour()/getMinute()/getSecond()获得当前对象对应的小时、分钟、秒
withYear()将年份修改为指定的值并返回新的对象
withMonth()将月份修改为指定的值并返回新的对象
withDayOfMonth( )将月份天数修改为指定的值并返回新的对象
withDayOfYear()将年份天数修改为指定的值并返回新的对象
format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))将对象格式化成指定形式的日期

日期比较:

方法名说明
public boolean isBefore(ChronoLocalDate other)判断日期是否在另一个日期之前
public boolean isAfter(ChronoLocalDate other)判断日期是否在另一个日期之后
public boolean isEqual(ChronoLocalDate other)判断两个日期是否相同
数组排序
Arrays类

介绍:Arrays继承了Object类,位于java.util包下,使用前需先import导包。包含了用来操作数组的各种方法,比如排序和搜索。

方法名说明
copyOf(T[] original, int newLength)复制一个数组
void sort(int[] a)对数组进行排序,从小到大
List<T> asList(T... a)把数组转集合
对象数组排序

当数组是一个实体类对象时,不能直接使用Arrays.sort()对数组排序,需要自定义排序规则

实现:Comparable接口(实体类需要实现该接口,并重写compareTo方法)

compareTo重写规则:

  • 选取实体类中某些字段值或长度作为比较规则

  • 当方法返回小于0的数时,表示按照该规则从小到大排序

  • 当方法返回大于0的数时,表示按照该规则从大到小排序

实体类可以不实现Comparable接口,使用匿名内部类形式创建Comparator对象,进行排序

Cat[] cats=new Cat[3];
cats[0]=new Cat(101,"tom1",5);
cats[1]=new Cat(100,"tom2",1);
cats[2]=new Cat(103,"tom3",3);
Arrays.sort(cats, new Comparator<Cat>() {
    @Override
    public int compare(Cat cat, Cat t1) {
    return cat.getId()-t1.getId();
    }
});

Q&A
解释下列方法的含义
方法含义
static double random()生成一个区间[0.0,1.0)的小数
static double pow(double a, double b)a的b次方
static double sqrt(double a)a的平方根
static double cbrt(double a)a的立方根
static double ceil(double a)向上取整
static double floor(double a)向下取整
static long round(double a)四舍五入
如何将Date类型格式化成yyyy-MM-dd HH:mm:ss形式

创建一个SimpleDateFormat对象,把日期格式“yyyy-MM-dd HH:mm:ss”传入构造方法,调用SimpleDateFormat对象的format()方法,传入Date类型参数

解释下列方法含义
方法名含义
now() / now(ZoneId zone)根据当前时间创建对象/指定时区的对象
of()根据指定日期/时间创建对象
getDayOfMonth()/getDayOfYear()获取月份天数/获取年份天数
getMonthValue() / getYear()获取月份/获取年份
getHour()/getMinute()/getSecond()获取当前对象的小时、分钟、秒
对象数组排序的写法有哪些
  1. 实体类需要实现该接口,并重写compareTo方法

  2. 实体类不实现Comparable接口,使用匿名内部类形式创建Comparator对象

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值