本讲主要内容:
1.API
2.时间
3.Arrays类
一、API
1.Object
1.equals:重写后用于比较对象的内容![](https://i-blog.csdnimg.cn/direct/dd20239ed86b4a1f95d2bc63c5aa53c4.png)
2.clone:了解
克隆分为浅克隆和深克隆:
2.Objects
3.包装类
4.StringBuilder
5.StringBuffer
6.StringJoiner
7.Math
8.System
9.Runtime
package cn.hdc.oop4.api.Runtime;
import java.io.IOException;
public class Test {
public static void main(String[] args) throws IOException, InterruptedException {
Runtime r = Runtime.getRuntime();
System.out.println(r.availableProcessors());
// r.exit(0);
System.out.println(r.totalMemory() / Math.pow(1024.0, 2));
System.out.println(r.freeMemory() / Math.pow(1024.0, 2));
Process exec = r.exec("S:\\WeChat\\WeChat.exe");
Thread.sleep(5000);
exec.destroy();
}
}
10.BigDecimal
package cn.hdc.oop4.api.BigDecimal;
import java.math.BigDecimal;
import java.math.RoundingMode;
public class Test {
public static void main(String[] args) {
double a = 0.1;
double b = 0.2;
// BigDecimal a1 = new BigDecimal(a);
// BigDecimal b1 = new BigDecimal(b);
// BigDecimal a1 = new BigDecimal(Double.toString(a));
// BigDecimal b1 = new BigDecimal(Double.toString(b));
// BigDecimal a1 = new BigDecimal(String.valueOf(a));
// BigDecimal b1 = new BigDecimal(String.valueOf(b));
BigDecimal a1 = BigDecimal.valueOf(a);
BigDecimal b1 = BigDecimal.valueOf(b);
System.out.println(a1.add(b1));//加法
System.out.println(a1.subtract(b1));//减法
System.out.println(a1.multiply(b1));//乘法
System.out.println(a1.divide(b1));//除法
/*Bigecimal只做精确运算*/
BigDecimal b2 = BigDecimal.valueOf(0.1);
BigDecimal b3 = BigDecimal.valueOf(0.3);
/*0.1/0.3除不尽,设置余数位数2,RoundingMode.HALF_UP四舍五入*/
System.out.println(b2.divide(b3, 2, RoundingMode.HALF_UP));//除法
BigDecimal c = b2.add(b3);
System.out.println(c.doubleValue());
}
}
2.时间
1.Date
package cn.hdc.oop4.date.date;
import javax.xml.crypto.Data;
import java.util.Date;
public class Test {
public static void main(String[] args) {
// 1.创建一个Date的对象,代表系统当前时间
Date date = new Date();
System.out.println(date);
// 2.拿到当前时间的毫秒值
System.out.println(date.getTime());
// 3.把时间毫秒值转换成日期对象 80s之后是多少
long time = date.getTime() + 80 * 1000;
Date d2 = new Date(time);
System.out.println(d2);
// 4.直接把日期对象的时间通过setTime方法进行修改
Date d3 = new Date();
d3.setTime(time);
System.out.println(d3);
}
}
2.SimpleDateFormat
public class Test {
public static void main(String[] args) {
Date d = new Date();
System.out.println(d);
long time = d.getTime();
System.out.println(time);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss EEE a");
System.out.println(sdf.format(d));
System.out.println(sdf.format(time));
}
}
String dstr = "2024-08-08 09:19:10";
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date d2 = format.parse(dstr);
System.out.println(d2);
3.Calendar
import java.util.Calendar;
public class Test {
public static void main(String[] args) {
Calendar now = Calendar.getInstance();
System.out.println(now);
//获取日历中的某个信息
int year = now.get(Calendar.YEAR);
System.out.println(year);
System.out.println(now.get(Calendar.MONTH) + 1);
System.out.println(now.get(Calendar.DAY_OF_YEAR));
System.out.println(now.getTime());
now.set(Calendar.MONTH, 11);
System.out.println(now.getTime());
System.out.println(now.getTimeInMillis());
}
}
4.JDK8新增日期、时间
1.LocalDate
package cn.hdc.oop4.date.jdk8.localdate;
import java.time.DayOfWeek;
import java.time.LocalDate;
import java.time.Month;
public class Test {
public static void main(String[] args) {
// 获取本地日期对象
LocalDate l = LocalDate.now();
// 获取日期对象中的信息
int year = l.getYear();
int monthValue = l.getMonthValue();
Month month = l.getMonth();
int dayOfMonth = l.getDayOfMonth();
int dayOfYear = l.getDayOfYear();
DayOfWeek dayOfWeek = l.getDayOfWeek();
int value = l.getDayOfWeek().getValue();
// 直接修改某个信息
LocalDate year2 = l.withYear(2099);
LocalDate mont1 = l.withMonth(11);
LocalDate dayOfYear1 = l.withDayOfYear(12);
LocalDate dayOfMonth1 = l.withDayOfMonth(11);
// 把某个信息加多少
LocalDate plusDays = l.plusDays(1);
LocalDate plusMonths = l.plusMonths(1);
LocalDate plusWeeks = l.plusWeeks(1);
LocalDate plusYears = l.plusYears(1);
// 把某个信息减多少
LocalDate minusDays = l.minusDays(1);
LocalDate minusYears = l.minusYears(1);
LocalDate minusMonths = l.minusMonths(1);
LocalDate minusWeeks = l.minusWeeks(1);
// 获取指定日期的LocalDate对象
LocalDate l1 = LocalDate.of(2025, 12, 30);
LocalDate l2 = LocalDate.of(2027, 12, 30);
// 判断2个日期对象,是否相等,在前还是在后:equals isBefore isAfter
System.out.println(l1.equals(l2));
System.out.println(l1.isBefore(l2));
}
}
2.LocalTime
import java.time.LocalTime;
public class Test {
public static void main(String[] args) {
LocalTime l = LocalTime.now();
int nano = l.getNano();
int hour = l.getHour();
int minute = l.getMinute();
int second = l.getSecond();
}
}
3.LocalDateTime
import java.time.*;
public class Test {
public static void main(String[] args) {
// 获取本地日期对象
LocalDateTime l = LocalDateTime.now();
// 获取日期对象中的信息
int year = l.getYear();
int monthValue = l.getMonthValue();
Month month = l.getMonth();
int dayOfMonth = l.getDayOfMonth();
int dayOfYear = l.getDayOfYear();
DayOfWeek dayOfWeek = l.getDayOfWeek();
int value = l.getDayOfWeek().getValue();
int nano = l.getNano();
int hour = l.getHour();
int minute = l.getMinute();
int second = l.getSecond();
// 合久必分
LocalDate localDate = l.toLocalDate();
LocalTime localTime = l.toLocalTime();
// 分久必合
LocalDateTime of = LocalDateTime.of(localDate, localTime);
}
}
总结:
4.ZoneId
package cn.hdc.oop4.date.jdk8.zoneid;
import java.time.Clock;
import java.time.ZoneId;
import java.time.ZonedDateTime;
public class Main {
public static void main(String[] args) {
// ZoneId常见用法
// 获取系统默认的时区
ZoneId zoneId = ZoneId.systemDefault();
System.out.println(zoneId.getId());
System.out.println(zoneId);
// 获取Java支持的全部时区
// System.out.println(ZoneId.getAvailableZoneIds());
// 把某个时区ID封装成ZoneId对象
ZoneId zoneId1 = ZoneId.of("America/New_York");
ZonedDateTime now = ZonedDateTime.now(zoneId1);
System.out.println(now);
// 世界标准时间
System.out.println(ZonedDateTime.now(Clock.systemUTC()));
// 系统默认时区的时间
ZonedDateTime now1 = ZonedDateTime.now();
System.out.println(now1);
}
}
5.ZoneDateTime
6.Instant
7.DateTimeFormatter
package cn.hdc.oop4.date.jdk8.dateTimeFormatter;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
public class Main {
public static void main(String[] args) {
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH:mm:ss");
// 对时间进行格式化
LocalDateTime now = LocalDateTime.now();
System.out.println(now);
System.out.println(dtf.format(now));
// 格式化时间还有一种方案
System.out.println(now.format(dtf));//反向格式化
// 解析时间:一般使用LocalDateTime提供的方法进行解析
String str = "2029年12月12日 12:12:12";
LocalDateTime parse = LocalDateTime.parse(str, dtf);
System.out.println(parse);
}
}
8.Period
package cn.hdc.oop4.date.jdk8.Period;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.Period;
public class Main {
public static void main(String[] args) {
LocalDate start = LocalDate.of(2001, 10, 8);
LocalDate now = LocalDate.of(2024, 11, 9);
Period period = Period.between(start, now);
System.out.println(period.getYears());
System.out.println(period.getDays());
System.out.println(period.getMonths());
}
}
9.Duration
package cn.hdc.oop4.date.jdk8.Duration;
import java.time.Duration;
import java.time.LocalDateTime;
public class Main {
public static void main(String[] args) {
LocalDateTime now = LocalDateTime.now();
LocalDateTime start = LocalDateTime.of(2001, 10, 8, 3, 24, 16);
Duration between = Duration.between(start, now);
System.out.println("间隔天数" + between.toDays());
System.out.println("间隔小时数" + between.toHours());
System.out.println("间隔毫秒数" + between.toMillis());
System.out.println("间隔秒数" + between.toSeconds());
System.out.println("间隔分钟数" + between.toMinutes());
System.out.println("间隔纳秒数" + between.toNanos());
}
}
3.Arrays类
1.Arrays类
package cn.hdc.oop4.arrays;
import java.util.Arrays;
import java.util.function.IntToDoubleFunction;
import java.util.function.IntUnaryOperator;
public class arrays_initialize {
public static void main(String[] args) {
int[] arr = new int[]{10, 20, 30, 40, 50, 60};
double[] d = new double[]{10.5, 20.5, 30.5, 40.5, 50.5, 60.5};
System.out.println(Arrays.toString(arr));
System.out.println(Arrays.toString(Arrays.copyOfRange(d, 1, 3)));
System.out.println(Arrays.toString(Arrays.copyOf(arr, 8)));
Arrays.setAll(arr, new IntUnaryOperator() {
@Override
public int applyAsInt(int operand) {
return arr[operand] * 8;
}
});
System.out.println(Arrays.toString(arr));
int[] sort = new int[]{210, 520, 130, 440, 950, 670};
Arrays.sort(sort);
System.out.println(Arrays.toString(sort));
}
}
2.自定义排序规则
1.方式一
Student.java
package cn.hdc.oop4.arrays;
public class Student implements Comparable<Student> {
private String name;
private int age;
private double height;
public Student() {
}
public Student(String name, int age, double height) {
this.name = name;
this.age = age;
this.height = height;
}
getter... setter... toString...
@Override
public int compareTo(Student o) {
// 约定:如果左边对象 大于 右边对象 返回正整数
// 约定:如果左边对象 小于 右边对象 返回负整数
// 约定:如果左边对象 等于 右边对象 返回0
// 按照年龄升序排序
// return this.age > o.getAge() ? 1 : this.age < o.getAge() ? -1 : 0;//升序
// return this.age - o.getAge();//升序
return o.getAge() - this.age;//降序序
}
}
Sort1.java
package cn.hdc.oop4.arrays;
import java.util.Arrays;
public class Sort1 {
public static void main(String[] args) {
Student s1 = new Student("wsn", 27, 165);
Student s2 = new Student("wzn", 21, 150);
Student s3 = new Student("jsz", 25, 178);
Student s4 = new Student("wyz", 23, 180);
Student[] arr = {s1, s2, s3, s4};
Arrays.sort(arr);
System.out.println(Arrays.toString(arr));
}
}
2.方式二
Teacher.java
package cn.hdc.oop4.arrays;
public class Teacher {
private String name;
private int age;
private double height;
constructor... getter... setter... toString...
}
Sort2.java
package cn.hdc.oop4.arrays;
import java.util.Arrays;
import java.util.Comparator;
public class Sort2 {
public static void main(String[] args) {
Teacher s1 = new Teacher("wsn", 27, 165);
Teacher s2 = new Teacher("wzn", 21, 150);
Teacher s3 = new Teacher("jsz", 25, 178);
Teacher s4 = new Teacher("wyz", 23, 180);
Teacher[] arr = {s1, s2, s3, s4};
Arrays.sort(arr, new Comparator<Teacher>() {
@Override
public int compare(Teacher o1, Teacher o2) {
// return o1.getAge() - o2.getAge();
// return o1.getHeight() > o2.getHeight() ? 1 : o1.getHeight() < o2.getHeight() ? -1 : 0
return Double.compare(o1.getHeight(), o2.getHeight());
}
});
System.out.println(Arrays.toString(arr));
}
}