目录
2.2.2 currentTimeMillis返回当前系统的时间毫秒值形式
8 LocalDate LoaclTime LocalDateTime(JDK8之后)
11.2.1 ofPattern(时间格式)获取格式化器对象
11.2.3 format (格式化时间) && parse(解析时间)编辑
16 方法引用::(JDK8新特性)进一步简化Lambda表达式
前言:【java】【面对对象高级6】常用API(Math、System、Runtime、BigDecimal、JDK8之前与之后传统的日期与时间 、Arrays、Lambda表达式、方法引用(jdk8))
1 Math 类
1.1 作用
1.2 Math类常见方法
2 System类
2.1 作用
2.2 System类常见方法
2.2.1 exit 终止当前运行的java虚拟机
2.2.2 currentTimeMillis返回当前系统的时间毫秒值形式
2.2.3 拓展知识:时间毫秒值起点来源
3 Runtime
3.1 作用
3.2 API 说明
3.3 Runtime常见方法
红色波浪使用alt+enter抛异常
这种配置到环境变量可直接启动
4 BigDecimal
4.1 作用
4.2 BigDecimal常见方法
package com.runa.staticdemo;
import java.awt.geom.Arc2D;
import java.math.BigDecimal;
import java.math.RoundingMode;
public class TestBigD {
public static void main(String[] args) {
double a = 0.1;
double b = 0.2;
double c = a + b;
System.out.println(c);
System.out.println("--------------------------------");
// 1 把他们变成字符串封装成BigDecimal对象来运算
// BigDecimal a1 = new BigDecimal(Double.toString(a));
// BigDecimal b1 = new BigDecimal(Double.toString(b);
BigDecimal a1 = BigDecimal.valueOf(a);
BigDecimal b1 = BigDecimal.valueOf(b);
BigDecimal c1 = a1.add(b1); //加
System.out.println(c1);
BigDecimal c2 = a1.subtract(b1); //减
System.out.println(c2);
BigDecimal c3 = a1.multiply(b1); //乘
System.out.println(c3);
BigDecimal c4 = a1.divide(b1); //除
System.out.println(c4);
BigDecimal a5 = BigDecimal.valueOf(0.1);
BigDecimal b5 = BigDecimal.valueOf(0.3);
BigDecimal c5 = a5.divide(b5,2, RoundingMode.HALF_UP); //除
System.out.println(c5);
// 把BigDecimal 转成double类型数据
double rs = c5.doubleValue();
System.out.println(rs);
}
}
5 Date(JDK8之前)
5.1 作用
5.2 API 说明
5.3 Date常见方法
package com.runa.staticdemo;
import java.util.Date;
public class TestDate {
public static void main(String[] args) {
// 1 创建一个data对象,代表系统当前时间信息
Date d = new Date();
System.out.println(d);
// 2 拿到时间毫秒值
long time = d.getTime();
System.out.println(time);
// 3 把时间毫秒值转换成日期对象, 2s之后的时间是多少
time += 2 *1000;
Date d2 = new Date(time);
System.out.println(d2);
// 3 直接把时间对象时间通过setTime方法进行修改
Date d3 = new Date();
d3.setTime(time);
System.out.println(d3);
}
}
6 SimpleDateFormat
6.1 作用
6.2 API 说明
6.3 SimpleDateFormat(JDK8之前)
package com.runa.staticdemo;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.logging.SimpleFormatter;
public class TestSimple {
public static void main(String[] args) {
// 1 准备时间
Date d = new Date();
System.out.println(d);
long time = d.getTime();
System.out.println(time);
// 2 格式化日期对象、和时间 毫秒值
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss EEE a");
String rs = sdf.format(d);
System.out.println(rs);
String rs2 = sdf.format(time);
System.out.println(rs2);
}
}
package com.runa.staticdemo;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.logging.SimpleFormatter;
public class TestSimple {
public static void main(String[] args) throws ParseException {
System.out.println("--------------------------------");
// 掌握 SimpleDateFormat解析字符串时间 成为日期对象
String dateStr = "2022-12-12 12:12:11";
// 1 创建简单日期格式化对象,指定人时间格式 必须与被解析的时间格式一样,否则程序会出bug
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date d2 = sdf2.parse(dateStr);
System.out.println(d2);
}
}
6.4 练习
package com.runa.staticdemo;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class TestSimpleDemo {
public static void main(String[] args) throws ParseException {
// 1 先获取时间
String start = "2023年11月11日 0:0:0";
String end = "2023年11月11日 0:10:0";
String xj = "2023年11月11日 0:01:18";
String xp = "2023年11月11日 0:10:57";
// 2字符串的时间解析成日期对象
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
Date startDt = sdf.parse(start);
Date endDt = sdf.parse(end);
Date xjDt = sdf.parse(xj);
Date xpDt = sdf.parse(xp);
// 3 判断小皮好小贾是否秒杀成功
// 把日期对象转成时间毫秒值
long startTime = startDt.getTime();
long endTime = endDt.getTime();
long xjTime = xjDt.getTime();
long xpTime = xpDt.getTime();
if(xjTime >= startTime && xjTime <= endTime){
System.out.println("小贾您秒杀成功!");
}else {
System.out.println("小贾您秒杀失败!");
}
if(xpTime >= startTime && xpTime <= endTime){
System.out.println("小皮您秒杀成功!");
}else {
System.out.println("小皮您秒杀失败!");
}
}
}
7 Calendar (JDK8之前)
7.1 作用
7.2 API 说明
7.3 Calendar常见方法
package com.runa.staticdemo;
import java.util.Calendar;
import java.util.Date;
public class TestCalendar {
public static void main(String[] args) {
// 1 得到系统此刻时间对应的日历对象
Calendar now = Calendar.getInstance();
System.out.println(now);
// 2 获取日历中的某个信息, 记住月份要+1
int year = now.get(Calendar.YEAR);
System.out.println(year);
int days = now.get(Calendar.DAY_OF_YEAR);
System.out.println(days);
// 3 拿到日历中记录的日期对象
Date d = now.getTime();
System.out.println(d);
// 4 拿到时间毫秒值
long time = now.getTimeInMillis();
System.out.println(time);
// 5 修改日历中的某个信息
now.set(Calendar.MONTH,9); //修改月份未10月份
now.set(Calendar.DAY_OF_YEAR,125); //修改成一年中的第125天
System.out.println(now);
// 6 为某个信息增加或者减少多少
now.add(Calendar.DAY_OF_YEAR,100);
now.add(Calendar.DAY_OF_YEAR,-10);
now.add(Calendar.DAY_OF_MONTH,6);
now.add(Calendar.HOUR,12);
System.out.println(now);
}
}
8 LocalDate LoaclTime LocalDateTime(JDK8之后)
8.1 作用
8.2 常见方法
8.2.1 LocalDate
8.2.2 LocalTime
8.2.3 LocalDateTime
9 Zoneld ZoneDateTime(JDK8之后)
9.2 常见方法
9.2.1 ZoneId && ZoneDateTime
10 Instant(JDK8之后)
10.1 作用
10.2 常见方法
11 DateTimeFormatter(JDK8之后)
11.1 作用
11.2 常见方法
11.2.1 ofPattern(时间格式)获取格式化器对象
11.2.2 format(时间对象)格式化时间
11.2.3 format (格式化时间) && parse(解析时间)![](https://i-blog.csdnimg.cn/blog_migrate/b1358ccb525acf179924f481c8d86493.png)
12 Period(JDK8之后)
12.1 作用
12.2 常见方法
13 Duration (JDK8之后)
13.1 作用
13.2 常见方法
14 Arrays(为lambda学习铺垫)
14.1 作用
14.2 常见方法
补充15章节知识:
继续优化
最简版
14.3 扩展 数组中存储的是对象,如何排序
14.3.1 定义一个学生对象
14.3.2 数组对象排序
14.3.2.1 方法一
重写学生对象的toString方法
重写学生对象的compareTo方法
main方法
14.3.2.2 方法二
补充
继续优化
15 Lambda表达式 用来简化函数式接口的匿名内部类
15.1 作用
15.1.1 原代码
package com.runa.staticdemo;
public class TestL {
public static void main(String[] args) {
Swimming s = new Swimming() {
@Override
public void swim() {
System.out.println("学生快乐的游泳");
}
};
s.swim();
}
}
interface Swimming{
void swim();
}
15.1.2 使用Lambda改造
package com.runa.staticdemo;
public class TestL {
public static void main(String[] args) {
Swimming s = () -> {
System.out.println("学生快乐的游泳");
};
s.swim();
}
}
interface Swimming{
void swim();
}
15.2 Lambda表达式的省略规则
见14.3.3 与14.3.2.2
16 方法引用::(JDK8新特性)进一步简化Lambda表达式
16.1 静态方法的引用
16.2 实例方法的引用
16.3 特定类型方法的引用
下图是注释//代码的优化
再次优化:
16.4 构造器的引用(了解)
创建一个汽车类,重写 toString方法
主函数
优化
17 JDK8新增的时间API 好处